Dbgrid y data

Tengo un grid que 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
Me genera el siguiente error : "error 6148 numero de fila incorrecto" que debo
hacer necesariamente tengo que asociar un data.
Sin embargo hice una prueba con un grid asociándolo a un data en visual 6.0 pero al tratar de conectarse me saca un error diciendo que no reconoce el formato de base de datos, yo tengo la base de datos 2000

1 Respuesta

Respuesta
1
Perdona pero no te entiendo:
Me dices que tienes un DBGrid sin asociar a un Data, pero que cuando la consulta devuelve cinco datos, se visualizan sólo tres...
Si estás visualizando una consulta, supongo que tienes el DBGrid asociado al recordset de esa consulta, y por lo tanto deberías tener un data con un recordsource parecido a :
Data1.RecordSource="Select * from ......."
¿Es así? Si no es así, como cargas los registros (sean 3 o 5 en el grid)
¿Qué eso de que recorro nuevamente el grid para mirar los datos que tecleó el usuario?
Total que no te entiendo nada.
No es que un Grid tenga que tener siempre un data asociado. De hecho existe un modo de trabajo denominado Unbound en que no se requiere esta asociación. Pero trabajar así sólo se hace para utilizar el grid contra variables almacenadas en memoria (en matrices por ejemplo) y aún así es incomodísimo hacerlo. Si me estás hablando de consultas es que tienes una base de datos y entonces no veo el motivo de no asociar un Data
Si me explicas algo más tu problema intentaré ayudarte
Hola:
Ya te entendí. Pero te cuento que hice una prueba asociando un Dbgrid y un data con Visual 6.0 y access 2000 con este método:
Private Sub Form_Load()
Consulta_Prueba
End Sub
Public Function Consulta_Prueba()
Dim cSelect As String
cSelect = "Select oper_identificacion from toperaciones "
Data1.DatabaseName = "D:\prueba.mdb"
Data1.RecordSource = cSelect
Data1.Refresh
If Data1.Recordset.RecordCount = 0 Then
MsgBox "No existen datos"
End If
End Function
Y cunado entra en la instrucción Data1.Refresh me genera el error No se reconoce elformato de la Base de datos sin embargo cuando genero la misma instrucción con Access 95 no genera el error. Gracias por tu ayuda.
Yo también te entendí.
Creo que lo que te pasa es que tienes mal referenciada la librería de DAO
Entra en tu proyecto por Referencias y asegurate que tienes seleccionada "Microsoft DAO 3.6 Objet Library".
Probablemente lo que te pasa es que tienes seleccionada la 3.5 o 3.51 que son las que corresponden a ACCESS 95 y ACCESS 97 y no la 3.6 que es la que corresponde a ACCESS 2000
Ya verifique lo que me dijiste pero sigue saliendo el error. En referencias tengo:
Visual Basic for Applications
Visual Basic runtime objects and procedures
Visual Basic objects and procedures
Visual Basic Ole Automation
Microsoft DAO 3.6 Object Library
y el componente dbgrid en componentes tengo
Data Bound Grid Control 5.0 (SP3).
¿No entiendo que pasa?
Si en la linea Data1. Refresh te da un error de que no reconoce la base de datos, esto no tiene nada que ver con el grid. Si quieres convencerte, quita la asignación del GRID al Data. De heho en ese punto sólo se han ejecutado estas instrucciones:
Dim cSelect As String
cSelect = "Select oper_identificacion from toperaciones "
Data1.DatabaseName = "D:\prueba.mdb"
Data1.RecordSource = cSelect
Data1. Refresh
Entonces, si aparece un error en el refresh, que es cuando efectivamente va a crear la consulta, y ese error es que no reconce el formato de la base de datos, solo hay dos posibilidades:
- No estás usando la versión de DAO correspondiente a la versión de la base de datos. Por eso te decía que verificases esto: Para ACCESS 2000 debe ser DAO 3.6
- La base de datos no se puede leer sencillamente porque está estropeada (corrupta)
Para comprobar este último extremo, ábrela directamente con ACCESS e intenta hacer una reparación y compactación.
Suerte :-)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas