Query que no funciona en ADO
Publicado por Carrington (6 intervenciones) el 11/04/2007 23:47:07
Saludos:
Me pasa una cosa curiosa que no sé cómo solucionar, y me da rabia, porque en teoría es algo sencillo.En concreto, tenemos un listado de centros educativos. Dos tablas: Códigos de los centros y demás datos del centro.
Tabla Centros Tabla Codigos_centros
IDCentro
IDCodigo ------------------------ IDCodigo
Centro Codigo
|
|
|
Formulario de búsqueda mediante cuadro de texto.
La query es bastante habitual:
"SELECT Centros.IDCentro, Centros.Centro, Codigos_centros.Codigo FROM Centros INNER JOIN Codigos_centros ON Centros.IDCodigo = Codigos_centros.IDCodigo WHERE Centros.Centro LIKE '*" & txtBusqueda.Text & "*' ORDER BY Codigos_centros.Codigo, Centros.Centro"
Bueno, pues el recordset me devuelve siempre 0 registros.
Es curioso el caso porque pegando la consulta en el asistente de Access la consulta me la hace sin problemas (sustituyendo txtBusqueda.Text por la palabra clave en cuestión, claro).
Tras varios intentos, el problema parece estar en la sintaxis de la condición WHERE. Si la elimino, me da todos los registros, pero al poner la condición surge de nuevo el problema
apareciendo siempre rsMain.RecordCount=0
He probado a cambiar la sintaxis -como hace Access- con tres paréntesis:
WHERE (((Centros.Centro) = '*emi*'))
pero tampoco.
No creo que sea problema de ADO porque ya he dicho que sin la condición sí devuelve registros.
Aún así, os pego el código:
Set rsMain= New ADODB.Recordset
rsMain.CursorType = adOpenKeyset
rsMain.LockType = adLockPessimistic
rsMain.Open stSQL, CurrentProject.Connection
En fin, a ver si podéis lanzar alguna luz sobre el asunto.
Gracias adelantadas
Carrington
Me pasa una cosa curiosa que no sé cómo solucionar, y me da rabia, porque en teoría es algo sencillo.En concreto, tenemos un listado de centros educativos. Dos tablas: Códigos de los centros y demás datos del centro.
Tabla Centros Tabla Codigos_centros
IDCentro
IDCodigo ------------------------ IDCodigo
Centro Codigo
|
|
|
Formulario de búsqueda mediante cuadro de texto.
La query es bastante habitual:
"SELECT Centros.IDCentro, Centros.Centro, Codigos_centros.Codigo FROM Centros INNER JOIN Codigos_centros ON Centros.IDCodigo = Codigos_centros.IDCodigo WHERE Centros.Centro LIKE '*" & txtBusqueda.Text & "*' ORDER BY Codigos_centros.Codigo, Centros.Centro"
Bueno, pues el recordset me devuelve siempre 0 registros.
Es curioso el caso porque pegando la consulta en el asistente de Access la consulta me la hace sin problemas (sustituyendo txtBusqueda.Text por la palabra clave en cuestión, claro).
Tras varios intentos, el problema parece estar en la sintaxis de la condición WHERE. Si la elimino, me da todos los registros, pero al poner la condición surge de nuevo el problema
apareciendo siempre rsMain.RecordCount=0
He probado a cambiar la sintaxis -como hace Access- con tres paréntesis:
WHERE (((Centros.Centro) = '*emi*'))
pero tampoco.
No creo que sea problema de ADO porque ya he dicho que sin la condición sí devuelve registros.
Aún así, os pego el código:
Set rsMain= New ADODB.Recordset
rsMain.CursorType = adOpenKeyset
rsMain.LockType = adLockPessimistic
rsMain.Open stSQL, CurrentProject.Connection
En fin, a ver si podéis lanzar alguna luz sobre el asunto.
Gracias adelantadas
Carrington
Valora esta pregunta


0