Foros del Web » Programación para mayores de 30 ;) » Programación General »

error al recorrer en un datagrid de vb 6.0 ....

Estas en el tema de error al recorrer en un datagrid de vb 6.0 .... en el foro de Programación General en Foros del Web. hola, disculpen ustedes, estoy vb 6.0. Por que me da un error al recorrer los registros en un datagrid al llegar al inicio o fin ...
  #1 (permalink)  
Antiguo 21/09/2004, 15:02
 
Fecha de Ingreso: agosto-2004
Mensajes: 62
Antigüedad: 19 años, 8 meses
Puntos: 0
error al recorrer en un datagrid de vb 6.0 ....

hola,
disculpen ustedes, estoy vb 6.0. Por que me da un error al recorrer los registros en un datagrid al llegar al inicio o fin de la tabla, los botones son personalizados, es decir
cree una variable tipo rs as new adodb.recordset la cual se llena con su sentencia sql, y el el boton de adelante coloque el codigo rs.movenext
En el datgrid1 del evento RowColchange le coloque el codigo siguiente para que haiga una sicronizacion al ir navagando entre el datagrid y no solo con los botones, lo cual va llenando los text's y me posicione el registro en el que estoy:

private sub datagrid1_rowColChange(LastRow as variant, Byval LastCol as Integer)
Label2.caption=datagrid1.columns(0).callvalue(Rs.B ookmark) --->error
text2.text=datagrid1.columns(1).callvalue(Rs.Bookm ark)
end sub

El error marca que esta rs en true o false.....

les agradesco si me puede ayudar..
Gracias foros del web.
  #2 (permalink)  
Antiguo 21/09/2004, 15:35
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Yo tambien tuve problemas con el bookmark lo que hice fue una copia del recordset asi:

Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset

luego:

Set rs1 = New ADODB.Recordset
rs1.Open sentencia, cn, adOpenStatic, adLockBatchOptimistic, adCmdText
Set rs2 = rs1.Clone

cn es mi conexion ado
sentencia es la intriccion SQL para llenar el grid

y despues ya solo usaba la copia de rs1 (rs2) en tu caso:

Label2.caption=datagrid1.columns(0).callvalue(Rs2. Bookmark)

intenta con esto aver si te funciona ya que yo lo use para el true dbgrid espero que sea lo mismo.

  #3 (permalink)  
Antiguo 23/09/2004, 07:55
 
Fecha de Ingreso: agosto-2004
Mensajes: 62
Antigüedad: 19 años, 8 meses
Puntos: 0
hola a todos

el problema que tengo aun esta en el rs.bookmark ya realice el cambio con un clon del rs que he declarado con tipo adodb.recordset en los componentes que estan ligados al RS:
Label2.caption=datagrid1.columns(0).callvalue(Rs2. Bookmark) y asi...

Mi dudas es, tambien se bebera cambia el rs en los botones de adelante, atras, inicio, ultimo por RS del que estoy clonando es que aun me sigue dando error: rs es EOF o BOF como true ........... y me marca el error en el evento del datagrid= datagrid1_rowColChange(LastRow as variant, Byval LastCol as Integer) de los coponentes Label2.caption=...........

gracias
  #4 (permalink)  
Antiguo 23/09/2004, 08:43
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Pues a mi funciono pero lo hago con ADO crea una forma y coloca 2 textbox y el datagird(no modifiques nada en el grid) y pon esto

Dim rstemp As New ADODB.Recordset
Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Dim sentencia as String

Private Sub DataGrid1_KeyUP(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then
Text1(0).Text = DataGrid1.Columns(1)
Text1(1).Text = DataGrid1.Columns(2)
End If
End Sub

Private Sub Form_Load()
cn.Open "DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; DBNAME=127.0.0.1:C:\INTERBASE\DB.gdb;"
Set rstemp = Nothing
Set rstemp = New ADODB.Recordset
'Solo agrego 3 campos ya tu modificalo para los que ocupes
rstemp.Fields.Append "clave", adSingle
rstemp.Fields.Append "Nombre", adChar, 100
rstemp.Fields.Append "Domicilio", adChar, 100
rstemp.Open
Set DataGrid1.DataSource = rstemp
DataGrid1.Columns(0).Width = 1000
DataGrid1.Columns(0).Locked = False
DataGrid1.Columns(1).Locked = False
DataGrid1.Columns(2).Locked = False
DataGrid1.Columns(1).Width = 5000
DataGrid1.Columns(2).Width = 5000
sentencia = "SELECT idcliente,nomcliente,domcliente from cliente where idcliente>0" 'La modificas
Set rs = cn.Execute(sentencia)
'Modifica de acuerdo a los campos de tu consulta
Do Until rs.EOF
rstemp.AddNew
If IsNull(rs(0)) Then
rstemp(0) = ""
Else
rstemp(0) = rs(0)
End If
If IsNull(rs(1)) Then
rstemp(1) = ""
Else
rstemp(1) = rs(1)
End If
If IsNull(rs(2)) Then
rstemp(2) = ""
Else
rstemp(2) = rs(2)
End If
rstemp.Update
rs.MoveNext
Loop
Text1(0).Text = DataGrid1.Columns(1)
Text1(1).Text = DataGrid1.Columns(2)
End Sub

Private Sub Form_Unload(Cancel As Integer)
cn.Close
End Sub

Espero que me entiendas Saludos

Última edición por jrp01; 23/09/2004 a las 08:50
  #5 (permalink)  
Antiguo 23/09/2004, 08:51
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Corregi algo es:
Private Sub DataGrid1_KeyUP(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then
Text1(0).Text = DataGrid1.Columns(1)
Text1(1).Text = DataGrid1.Columns(2)
End If
End Sub

Solo agrega en proyecto referencias: Microsoft ActiveX Data Objects 2.XX Library

  #6 (permalink)  
Antiguo 23/09/2004, 09:01
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
De acuerdo

Faltaba esto en el if

Or vbKeyPageUp Or vbKeyPageDown

para que si es flecha abajo arriba o avance de pagina o retroceso de pagina
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:03.