[Pgsql-ayuda] idle in transaction... Thnks Jorge Zurita

Leonardo Boet Sánchez boet@gtm.tel.etecsa.cu
Tue, 28 Oct 2003 09:04:10 -0500


Por lo que veo en este código no está mal pero debe faltar algo, por ejemplo abrir la conexión no lo veo por ningún lado. Pero si puedes trabajar es porque en algún lugar la haz abierto (utilizando la función que implementaste) y no mandaste el código de esto.

Ahora debes cerciorarte que por cada ejecución de la función creaconexion() debes tener un conex.close

O sea debes garantizar que cada vez que abras la conexión la cierres. Mira que si te dá error debes tener en cuenta cerrar la conexión.

Si por ejemplo el programa da un error no interceptable y no le das tratamiento a esto la conexión se quedará abierta. Y si abres la conexión (o sea tienes una conexión abierta) y vuelves a abrir otra conexión abrás abierto 2.

Para que estés seguro si la conexión está abierta (esto es dentro del programa, no incluye si el programa se va, por error, sin cerrar la conexión) hay una propiedad llamada State que te devuelve si la conexión está abierta o cerrada, en realida no sé como tienes estructurado tu sistema pero esta propiedad te ayudará, es válida para los recorsets también.

Leonardo Boet Sanchez
Especialista en Analisis de Sistemas
e-mail: boet@gtm.tel.etecsa.cu
ETECSA. Gerencia Guantánamo
Tel. 381797
      381018 ext 4208



-----Mensaje original-----
De: Mauricio E. Pastorini Torres [mailto:m_pastorini@elgolfo.cl]
Enviado el: Monday, October 27, 2003 03:08 PM
Para: pgsql-ayuda@tlali.iztacala.unam.mx
Asunto: [Pgsql-ayuda] idle in transaction... Thnks Jorge Zurita


Jorge, gracias por contestar tan rápidamente y debo acotar que tu
acotación respecto a mi programa es correcta... quizas si puedes revisar
mi código te lo agradecería mucho.
Mira al cargar la forma llamo esta función que crea la conexión con el
postgres... :

Public conex As ADODB.Connection
Public Function creaconexion()
Dim connectString As String

    Set conex = Nothing
    Err.Clear
    On Error GoTo 0

    connectString = "SERVER=" + SERVER + ";" + _
                    "UID=" + USER + ";" + _
                    "PWD=" + Pwd + ";" + _
                    "DSN=" + Dsn + ";" + _
                    "DATABASE=" + Base + "; " + _
                    "LANGUAGE=us_english;" + _
                    "AutoTranslate=No"

    Set conex = New ADODB.Connection

    With conex
        .ConnectionString = connectString
        .ConnectionTimeout = 10
        .CursorLocation = adUseClient
        .Open
    End With
    conex.CommandTimeout = 20
end function

La que pienso no debería tener problema, sin embargo para ingresar datos
uso la siguiente función:...

Dim ADORs As ADODB.Recordset
Dim cmd_sql As ADODB.Command
***    creaconexion()
    conex.BeginTrans
    Set cmd_sql = New ADODB.Command
        With cmd_sql
        Set .ActiveConnection = conex
            .CommandText = consulta        ' insert into tabla values....
            .CommandType = adCmdText
         End With
    On Error GoTo Err_Execute
         Set ADORs = New ADODB.Recordset
         'Resume Next
         Set ADORs = cmd_sql.Execute(afectadas)
    conex.CommitTrans

puede haber algún error por este lado?????

te agradecería que me dieras tu opinion...

Mauricio.
_______________________________________________
Pgsql-ayuda mailing list
Pgsql-ayuda@tlali.iztacala.unam.mx
http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda