Visual Basic - True DBGrid y Biblioteca de cursores ODBC

Life is soft - evento anual de software empresarial
 
Vista:

True DBGrid y Biblioteca de cursores ODBC

Publicado por Jorge Espada (11 intervenciones) el 02/12/2002 17:56:15
Hola, tengo una aplicación en VB5, que se conecta a través de ODBC con Informix. TEngo un control TDBGrid que carga los datos desde un Control Data asociado que a su vez se carga con una select. El problema surge cuando actualizo un registro del TDBGrid, ya que me muestra el mensaje:
"01503:Microsoft.Biblioteca de cursores ODBC.No se actualizó om eliminó ninguna fila."
He obtenido toda la pila de errores en cadena, y tb obtengo el siguiente:
"Error 3146. ODBC falló la llamada. Origen DAO.Recordset" que es un error de red. No obstante, si ejecuto el update del registro a pelo desde el código VB se ejecuta correctamente, pero el error lo dá al refrescar el TDBGrid.
Las propiedades del Control Data son: DefaultCursorType=1-ODBC Cursor; DefaultTYpe=1-Use ODBC;RecordsetType=1-Dynaset
He probado con varias combinaciones de dichas propiedades pero nada.
Os agradezco vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:True DBGrid y Biblioteca de cursores ODBC

Publicado por Jorge Espada (11 intervenciones) el 04/12/2002 12:55:53
El error anterior no tiene nada que ver con el TDBGrid, sino con el control Data. El código (sin datos reales) es el siguiente :
Option Explicit

Private Sub Form_Activate()
Dim MiSQL As String
Dim val1, val2
val1 = \"A\"
val2 = 1
MiSQL = \"update gh_plurianual set plenlace = \'\" & val1 & \"\' where plnumero=\" & val2
DTEnlace.RecordSource = MiSQL
DTEnlace.Refresh \'Línea que provoca el error
\'Actualiza OK; pero da error de ejecución 3670: El cursor no es válido
End Sub

Private Sub Form_Load()
DTEnlace.DatabaseName = \"nombre\"
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:True DBGrid y Biblioteca de cursores ODBC

Publicado por Jorge Espada (11 intervenciones) el 11/12/2002 13:08:20
Bueno, al fin ha funcionado, si actualizamos el registro desde el evento AfterColUpdate del TDBGrid. Este evento salta cuando se modifica una columna del TDBGrid, justo antes de pasar el valor de la columna al buffer del grid. Se actualiza el registro a través de nuestro objeto Connection (es definido en otro lugar con el nombre MiConexion), en lugar de utilizar el control Data. Luego refrescamos dicho Control Data con una select para que automáticamente se reflejen los cambios en el TDBGrid. Este es el código:
Private Sub TDBGrid1_AfterColUpdate(ByVal ColIndex As Integer)
Dim MiSQL As String
MiSQL = \"update TABLA set CAMPO = \'\" & TDBGrid1.Columns(1).Value & \"\' where plnumero=\" & TDBGrid1.Columns(0).Value
MiConexion.Execute (MiSQL)
MiSQL = \"select * from TABLA where CAMPO matches \'P*\'\"
DTEnlace.RecordSource = MiSQL
DTEnlace.Refresh
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar