Programación General > Visual Basic 6.0 e inferiores

 Conexiones Con Adodc

(1/1)

miguel917:
Estoy trabajando con el ADODC conectandome a una base de datoas db2 del as400. Mi problema radica en que al cerrar la aplicacion las conecciones con el AS400 no se pierden y al generar muchas conexiones se satura el as400.

Espero que alguien pueda ayudarme, de antemano muchas gracias por cualquier sugerencia

Brroz:
Hola Miguel917.

Me alegra encontrar a alguien que trabaje con bbdd DB/2 en un iSeries...

Lo mejor que puedes hacer es escapar del control data e implementar la conexión y demás mediante código.

He aquí un pequeño ejemplo usando ADO:

--- Código: Text --- Dim cnx1 As ADODB.ConnectionSet cnx1 = New ADODB.Connectioncnx1.Open "provider=IBMDA400;data source=NOMBRE_SISTEMA; , , -1" Dim cmd1 As ADODB.CommandSet cmd1 = New ADODB.CommandSet cmd1.ActiveConnection = Cnx1cmd1.Properties(16).Value = 7    'Updatability 'Asignando el recordset a una tabla.cmd1.CommandType = adCmdTablecmd1.CommandText = _"/QSYS.LIB/MILIBRERIA.LIB/MIOBJ.FILE (*FIRST, *NONE)"cmd1.Parameters.Append cmd1.CreateParameter("P1", adChar, adParamInput, 1) Dim rs1 As ADODB.RecordsetDim var1 As Variant, var2 As VariantSet rs1 = cmd1.Execute(var1, var2, adCmdTable)MsgBox rs1.RecordCount 'Asignando el recordset a un cursor SQL.Dim rs2 As ADODB.Recordsetcmd1.CommandType = adCmdTextcmd1.CommandText = "SELECT * FROM MILIBRERIA.MIOBJ"Set rs2 = cmd1.Execute()MsgBox rs2.RecordCount Set rs1 = NothingSet rs2 = NothingSet cmd1 = Nothingcnx1.CloseSet cnx1 = Nothing  
Al usar el método Close del command, se finaliza el trabajo del QUSER.

Por otro lado, te cuento que yo no utilizo OleDb para conectarme con el 400, uso una biblioteca de tipos que se suministra con Client Access que se llama Client Access Object Library (cwbautsv.tlb) a partir de la cual tengo creadas ciertas clases para gestionar la conexión con el as400 y con DB/2...
El rendimiento de estas clases tal como las realicé es muy bueno para consultas a la base de datos, para entendernos digamos que desde el AS al PC. Para conseguir el mismo rendimiento en sentido contrario, tendría que usar una cola de datos y el correspondiente PGM en el 400 que procesara los datos de la cola. Para evitar tener que contar con la existencia de ese programa y que todo lo necesario este en el cliente, si tengo que transferir al 400 gran cantidad de datos, uso OleDb con comandos tipo tabla. Si los cambios en la bd son pocos, lo evito y con SQL me apaño perfectamente.

Si tienes tiempo te recomiendo que examines los objetos de esta librería de tipos y seguro que encuentras muchas cosas que te interesan.

Por cierto, como curiosidad y si me lo permites, una pregunta: ¿usais interactivo en vuestra/s máquina/s?

Suerte.

Navegación

[0] Índice de Mensajes

Ir a la versión completa