Dbgrid

Tengo un grid con los siguientes eventos:
Private Sub DBGrid1_Click()
Dim lCol1, lCol2, lCol3, lCol4, lCol5, lCol6, lCol7, lCol8, lCol9 As Column
DBGrid1.AllowUpdate = True
Set lCol1 = DBGrid1.Columns(0)
Set lCol2 = DBGrid1.Columns(1)
Set lCol3 = DBGrid1.Columns(2)
Set lCol4 = DBGrid1.Columns(3)
Set lCol5 = DBGrid1.Columns(4)
Set lCol6 = DBGrid1.Columns(5)
Set lCol7 = DBGrid1.Columns(6)
Set lCol8 = DBGrid1.Columns(7)
Set lCol9 = DBGrid1.Columns(8)
lCol1.Locked = True
lCol2.Locked = True
lCol3.Locked = True
lCol4.Locked = True
lCol5.Locked = True
lCol6.Locked = True
lCol7.Locked = False
lCol8.Locked = False
lCol9.Locked = True
mCambioVal = True
End Sub
'Cuando el usuario hace clic en el icono Agregar, esta subrutina agrega una
' nueva fila a la variable RowBuf y un marcador a la variable NewRowBookmark
Private Sub DBGrid1_UnboundAddData(ByVal RowBuf As RowBuffer, NewRowBookmark As Variant)
Dim iCol As Integer
mTotalRows = mTotalRows + 1
ReDim Preserve UserData(MAXCOLS - 1, mTotalRows - 1)
NewRowBookmark = mTotalRows - 1 'Establece el marcador a la última fila.
' El bucle siguiente agrega un nuevo registro a la base de datos.
For iCol = 0 To UBound(UserData, 1)
If Not IsNull(RowBuf.Value(0, iCol)) Then
UserData(iCol, mTotalRows - 1) = RowBuf.Value(0, iCol)
Else
' Si no se establece ningún valor para la columna, usa DefaultValue
UserData(iCol, mTotalRows - 1) = DBGrid1.Columns(iCol).DefaultValue
End If
Next iCol
End Sub
' Esta subrutina elimina una fila basándose en su marcador.
Private Sub DBGrid1_UnboundDeleteRow(Bookmark As Variant)
Dim iCol As Integer, iRow As Integer
' Mueve todas las filas encima de la fila eliminada de
' la matriz.
For iRow = Bookmark + 1 To mTotalRows - 1
For iCol = 0 To MAXCOLS - 1
UserData(iCol, iRow - 1) = UserData(iCol, iRow)
Next iCol
Next iRow
mTotalRows = mTotalRows - 1
End Sub
' Se llama a esta subrutina cada vez que DBGrid quiere mostrar
' datos nuevos.
Private Sub DBGrid1_UnboundReadData(ByVal RowBuf As RowBuffer, StartLocation As Variant, ByVal ReadPriorRows As Boolean)
Dim CurRow&, iRow As Integer, iCol As Integer, iRowsFetched As Integer, iIncr As Integer
' DBGrid está solicitando filas, así que se las damos
If ReadPriorRows Then
iIncr = -1
Else
iIncr = 1
End If
' Si StartLocation es Null, empieza a leer por el final
' o por el principio del conjunto de datos.
If IsNull(StartLocation) Then
If ReadPriorRows Then
CurRow& = RowBuf.RowCount - 1
Else
CurRow& = 0
End If
Else
' Busca la posición para empezar a leer, basándose en el marcador
' StartLocation y en la variable iIncr
CurRow& = CLng(StartLocation) + iIncr
End If
' Transfiere datos de nuestra matriz de conjunto de datos al objeto RowBuf
' que DBGrid utiliza para presentar los datos
For iRow = 0 To RowBuf.RowCount - 1
If CurRow& < 0 Or CurRow& >= mTotalRows& Then Exit For
For iCol = 0 To UBound(UserData, 1)
RowBuf.Value(iRow, iCol) = UserData(iCol, CurRow&)
Next iCol
' Establece el marcador mediante CurRow&, que es también
' nuestro índice de matriz
RowBuf.Bookmark(iRow) = CStr(CurRow&)
CurRow& = CurRow& + iIncr
iRowsFetched = iRowsFetched + 1
Next iRow
RowBuf.RowCount = iRowsFetched
' Esta subrutina actualiza los datos de la matriz después de
' haberse modificado.
Private Sub DBGrid1_UnboundWriteData(ByVal RowBuf As RowBuffer, WriteLocation As Variant)
Dim iCol As Integer
' Se están actualizando los datos
' Actualiza cada columna de la matriz de conjuntos de datos
For iCol = 0 To MAXCOLS - 1
If Not IsNull(RowBuf.Value(0, iCol - 1)) Then
UserData(iCol, WriteLocation) = RowBuf.Value(0, iCol - 1)
End If
Next iCol
End Sub
Public Function bActualiza_Operaciones() As Boolean
' Nombre : bActualiza_Operaciones
' Proposito : Asigna el nombre de las diferentes bancas existentes.
' Parametros :
' Tablas :
' Retorna : True o False segun cargue de banca.
' Autor : Rosa Moreno
Dim i As Integer
Dim lsqlUpdate As String
On Error GoTo ErrbActualiza_Operaciones
If Not bInciarCnxionAccessOficinas Then
bActualiza_Operaciones = False
bCrrarCnxionAO
Exit Function
End If
For i = 0 To mContador
DBGrid1.Col = 1
DBGrid1.Row = i
mObligacion = DBGrid1.Text
DBGrid1.Col = 6
mPenalizacion = DBGrid1.Text
If mPenalizacion = "" Then
mPenalizacion = 0
End If
If DBGrid1.Row <> mContador Then
lsqlUpdate = ""
lsqlUpdate = " UPDATE TOPERACIONES SET OPER_PENALIZACION = " & mPenalizacion & "" & _
" WHERE OPER_IDENTIFICACION = " & frmInformacionFicha.mIdentificacion & " AND OPER_OBLIGACION= '" & mObligacion & "' "
gcnCnxionAO.Execute lsqlUpdate, rdExecDirect
gcnCnxionAO.CommitTrans
End If
Next
For i = 0 To mContador
DBGrid1.Col = 1
DBGrid1.Row = i
mObligacion = DBGrid1.Text
DBGrid1.Col = 7
mBonificacion = DBGrid1.Text
If mBonificacion = "" Then
mBonificacion = 0
End If
If DBGrid1.Row <> mContador Then
lsqlUpdate = ""
lsqlUpdate = " UPDATE TOPERACIONES SET OPER_BONIFICACION = " & mBonificacion & "" & _
" WHERE OPER_IDENTIFICACION = " & frmInformacionFicha.mIdentificacion & " AND OPER_OBLIGACION= '" & mObligacion & "' "
gcnCnxionAO.Execute lsqlUpdate, rdExecDirect
gcnCnxionAO.CommitTrans
End If
Next
bActualiza_Operaciones = True
bCrrarCnxionAO
Exit Function
ErrbActualiza_Operaciones:
MsgBox "Error Consulta Bancas" + Str(Err) + " " + Error$
bActualiza_Operaciones = False
bCrrarCnxionAO
End Function
No tiene asociado un data, funciona para una consulta bien pero cuando por ejemplo
el grid en la forma solo muestra tres datos pero la consulta trajo cinco, cuando
recorro nuevamente el grid para mirar los datos que dígito el usuario
con este procedimiento:
Public Function bCalculo_ValoracionOperacion() As Boolean
Dim lsqlOperacion As String
Dim lOperacion As rdoResultset
Dim i0 As Integer
Dim lsqlUpdate As String
If Not bInciarCnxionAccessOficinas Then
MsgBox "Error en la conexión de la Base de Datos." + Str(Err) + " " + Error$
bCalculo_ValoracionOperacion = False
bCrrarCnxionAO
Exit Function
End If
lsqlOperacion = ""
lsqlOperacion = " SELECT OPER_ORIGEN, OPER_OBLIGACION, OPER_TOTALCOL, OPER_DIASMORA" & _
" FROM TOPERACIONES " & _
" WHERE OPER_IDENTIFICACION = " & frmInformacionFicha.mIdentificacion & "" & _
" AND OPER_DIGITO = '"...

1 Respuesta

Respuesta
1
No uso la actualización directamente en el grid, sin embargo he tratado de encontrar la solución a tu problema y he encontrado un link que espero que te ayude.
Tiene un ejemplo sobre este error.
La dirección es
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q149092

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas