Problema con ADO

Iniciado por Alfai, 28 Febrero 2008, 03:52 AM

0 Miembros y 1 Visitante están viendo este tema.

Alfai

Tengo un problema con este código para hacer consultas a la tabla, es para una diccionario:
term es el campo donde se almacena el termino a buscar
def es la definicion de la palabra


Option Explicit
Dim cox_nlx As ADODB.Connection
Dim cox_rds As ADODB.Recordset
Dim query_cx As String

Private Sub Form_Load()
Set cox_nlx = New Connection
Set cox_rds = New Recordset
cox_nlx.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=dic-es.accdb;Persist Security Info=False"
cox_nlx.Open
End Sub

Private Sub Command1_Click()
query_cx = "SELECT def FROM terminos WHERE term= ' " & Text1 & " ' "
cox_rds.Open query_cx, cox_nlx
Text2 = cox_rds("def")
End Sub



El code me tira este error:
El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual.

Espero q alguein me pueda ayudar con esto
ciao

Chefito

#1
Puede ser que al ejecutar tu consulta haya llegado al final de la bbdd y no haya encontrado nada? La consulta es como tu pones seguro....o sería así:
query_cx = "SELECT def FROM terminos WHERE term= '" & Text1 & "'"
porque dandole ese esos espacios al principio y al final de la palabra a buscar.....pues puede que no encuentre nada. No es lo mismo ' hola ' que 'hola'.
Mira también que ese recordset contenga algun registro y te aseguras de que no este vacio con msgbox cox_rds.recordcount. Eso te dara -1 si no puede determinar el numero de registros. Si tiene registros puedes intentar situarlos al principio de estos con cox_rds.movefirst.

Mira la definición del MSDN:
Se pueden crear tantos objetos Recordset como sea necesario.

Cuando se abre un Recordset, el registro actual está situado en el primer registro (si lo hay) y las propiedades BOF y EOF están establecidas a False. Si no hay registros, los valores de las propiedades BOF y EOF son True.

Pueden utilizarse los métodos MoveFirst, MoveLast, MoveNext y MovePrevious, así como el método Move, y las propiedades AbsolutePosition, AbsolutePage y Filter para volver a colocar el registro actual, asumiendo que el proveedor acepta la funcionalidad necesaria. Los objetos Recordset de tipo Forward-only sólo aceptan el método MoveNext. Cuando se utilizan métodos Move para visitar todos los registros (o para enumerar el Recordset), se puede utilizar las propiedades BOF y EOF para saber si ha llegado al principio o al final del Recordset.

Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)