• Domingo 22 de Diciembre de 2024, 20:33

Autor Tema:  Conexiones Con Adodc  (Leído 921 veces)

miguel917

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Conexiones Con Adodc
« en: Martes 10 de Febrero de 2004, 21:08 »
0
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

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Conexiones Con Adodc
« Respuesta #1 en: Miércoles 11 de Febrero de 2004, 09:52 »
0
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
  1.  
  2. Dim cnx1 As ADODB.Connection
  3. Set cnx1 = New ADODB.Connection
  4. cnx1.Open "provider=IBMDA400;data source=NOMBRE_SISTEMA; , , -1"
  5.  
  6. Dim cmd1 As ADODB.Command
  7. Set cmd1 = New ADODB.Command
  8. Set cmd1.ActiveConnection = Cnx1
  9. cmd1.Properties(16).Value = 7    'Updatability
  10.  
  11. 'Asignando el recordset a una tabla.
  12. cmd1.CommandType = adCmdTable
  13. cmd1.CommandText = _
  14. "/QSYS.LIB/MILIBRERIA.LIB/MIOBJ.FILE (*FIRST, *NONE)"
  15. cmd1.Parameters.Append cmd1.CreateParameter("P1", adChar, adParamInput, 1)
  16.  
  17. Dim rs1 As ADODB.Recordset
  18. Dim var1 As Variant, var2 As Variant
  19. Set rs1 = cmd1.Execute(var1, var2, adCmdTable)
  20. MsgBox rs1.RecordCount
  21.  
  22. 'Asignando el recordset a un cursor SQL.
  23. Dim rs2 As ADODB.Recordset
  24. cmd1.CommandType = adCmdText
  25. cmd1.CommandText = "SELECT * FROM MILIBRERIA.MIOBJ"
  26. Set rs2 = cmd1.Execute()
  27. MsgBox rs2.RecordCount
  28.  
  29. Set rs1 = Nothing
  30. Set rs2 = Nothing
  31. Set cmd1 = Nothing
  32. cnx1.Close
  33. Set cnx1 = Nothing
  34.  
  35.  

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.