FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
ADOQuery y consulta con LIKE
buenos dias, estoy retocando un programa antiguo desarrollado en Delphi 6 y me sucede, ahora, antes no sucedia, que cuando le asigno la sentencia SQL a un ADOQuery y esta contiene una condicion LIKE para filtrar los campos que va a obtener de la base de datos, siempre devuelve vacio, es como si no funcionara el LIKE, la base de datos esta en microsoft Access version 2003, utilizo las comillas ' y el comodin de * ya que el campo a comprara es texto, por ejemplo, una consulta que me devuelve vacio es esta SELECT Inicial FROM PremisasAcc WHERE Codigo LIKE 'CPSV_2025*', sin embargo coloco su codigo en access y si devuelve correctamente los resultados
Última edición por Casimiro Notevi fecha: Hace 7 Horas a las 16:52:38. |
#3
|
||||
|
||||
Creo que con msaccess es con asterisco en lugar de % y el guión subrayado en lugar de ?
|
#4
|
|||
|
|||
quizas sea eso, en la codificacion de las tablas utilizo el guion bajo, y puede que access lo interprete diferente, verificare esas cosas
|
#5
|
|||
|
|||
Muestra tu código para revisar lo que dices, quizas el error este en las comillas, en código debes usar "QuotedStr" para reemplazar las comillas.
|
#6
|
|||
|
|||
es que da igual, todo lo que vayas a asignar al SQL.Text de un ADOQuery y contenga LIKE 'cualquiertexto*' devolvera 0 registros, uso QuotedStr y todo, y no devuelve ni un registro
|
#7
|
|||
|
|||
Pues si no muestras un poco de código de esa búsqueda, bueno no hay como ayudarte.
|
#8
|
|||
|
|||
Cita:
STemp: String; begin //le asigno su valor a una lista q usare posteriormente, mediante una funcion que abre un adoquery (aqui es donde no //devuelve ningun registro, y deberia devolver) y me devuelve esa lista STemp:= DM.DevolverListaCodigos('SELECT Inicial FROM PremisasAcc WHERE Codigo LIKE '+QuotedStr('CPSV_2025*'),'Inicial'); function TDM.DevolverListaCodigos(Consulta, Codigo: String): String; var QLista: TADOQuery; begin QLista:= TADOQuery.Create(Self); QLista.Connection:= DM.ADOConn; ActivarQuery(QLista,Consulta,True,False); Result:= ''; if not QLista.IsEmpty then begin QLista.First; Consulta:= TipoCampo(QLista.FieldList.Find(Codigo)); while not QLista.Eof do begin if (Consulta='String') OR (Consulta='WideString') then if Result='' then Result:= QuotedStr(QLista.FieldByName(Codigo).AsString) else Result:= Result+','+QuotedStr(QLista.FieldByName(Codigo).AsString) else if Result='' then Result:= QLista.FieldByName(Codigo).AsString else Result:= Result+','+QLista.FieldByName(Codigo).AsString; QLista.Next; end; Result:= '('+Result+')'; end; QLista.Free; end; |
#9
|
|||
|
|||
Ya vi tu problema, es el query que lo liberas y al hacerlo se pierden los registros, trata de hacerlo como una variable de formulario.
|
#10
|
|||
|
|||
Cita:
if not QLista.IsEmpty //=>la lista esta vacia, no se obtuvieron registros, cambio la consulta de seleccion eliminando el LIKE y me devuelve registros, verifico la consulta con el LIKE en access y esta bien, devuelve los registros que son segun sea la condicion LIKE antes el LIKE funcionaba, ahora no, algo mas paso y no me di cuenta |
#11
|
|||
|
|||
Hice un pequeño ejemplo con una bd de access y el problema es el * y debes usar %
Use access 2013 proveedor "Provider=Microsoft.ACE.OLEDB.12.0" y una tabla con campo texto nombre. Funciona lo de arriba. Última edición por marco3k fecha: Hace 1 Hora a las 23:15:51. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
consulta en un ADOQUERY | the walrus | Tablas planas | 21 | 17-09-2018 12:02:02 |
Consulta ADOQuery | barakuda | SQL | 7 | 10-04-2014 03:35:48 |
Consulta SQL en ADOQuery | epenor | Conexión con bases de datos | 7 | 29-09-2008 04:16:27 |
consulta adoquery | Yensis22 | SQL | 1 | 15-06-2008 21:09:03 |
consulta con un adoQuery | manu | Conexión con bases de datos | 4 | 29-09-2006 00:17:48 |
|