Ayuda con los OpenRecordset

akiles83
20 de Mayo del 2005
Hola me llamo Alvaro y necesito ayuda sobre una cuestion importante.
Se trata de mostrar la informacion de una BD de Access en una matriz de Label1(i). Como lo hago? pues para mi sencillo aunk no me funciona como debe. primero tengo una caja de texto donde introduzco la palabra clave k voy a buscar en la base de datos (Text1.Text), en mi caso busco en la tabla de 'trabajos' los trabajos realizados por una persona en concreto, por ejemplo, 'pepe' introduzco la palabra en la caja de texto. Luego tengo mi base de datos llamada "Trabajo.mdb" y la tabla llamada "Trab" y dentro de esa tabla tengo que 'pepe' ha realizado los siguiente trabajos: 'Arreglo Climatizador', 'Cambio de aceite' y 'Cambio de ruedas' y estas tres cosas las kiero mostrar en la matriz de labels k antes he comentado. Entonces mi codigo es el sigueinte:

Dim Base As DataBase
Dim db As Recordset
---------------------------------------------

Set Base = Opendatabase("C:trabajos.mdb")
Set db = Base.OpenRecordset("Select * from trab where nombre='"& text1.text &"'",dbOpenDynaset, dbOptimistic)

Dim i As integer

i = 0
While Not db.EOF
Label1(i).Caption=db!descrip
i = i + 1
Wend

y el problema es que se desborda la matriz xq me la rellena todo con el primer dato, vamos k el select no me selecciona bien los registros, o la instruccion not db.EOF no lo hace bien o creo k mi problemas es k no actualizo el contador de registro, bueno la verdad es k no se como se hace. Gracias por tu ayuda ana.

rhernandezdieguez
20 de Mayo del 2005
Claro siempre te cogerá el primer registro, le falta el movenext para recorrer los registros recuperados por la consulta. De Todas formas si tienes más registros que Labels tambien te va a petar, podrías almacenar la info en un textbox multiline por ejemplo. Pon un TextBox con la propiedad Multiline a True y la propiedad ScrollBars a Both que se llame TXT_Trabajos y prueba:

Dim Base As DataBase
Dim db As Recordset
---------------------------------------------

Set Base = Opendatabase("C:trabajos.mdb")
Set db = Base.OpenRecordset("Select * from trab where nombre='"& text1.text &"'",dbOpenDynaset, dbOptimistic)

While Not db.EOF
TXT_Trabajos.Text=db!descrip & vbcrlf
db.movenext
Wend

akiles83
20 de Mayo del 2005
Gracias por tu ayuda, has sido de muxa utilidad y ya si k me funciona bien. Un saludo.