Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2024
marco3k marco3k is offline
Miembro
 
Registrado: feb 2015
Posts: 94
Poder: 11
marco3k Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 26-09-2024
lugotrujillo lugotrujillo is offline
Registrado
 
Registrado: sep 2024
Posts: 7
Poder: 0
lugotrujillo Va por buen camino
Cita:
Empezado por marco3k Ver Mensaje
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.
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
Responder Con Cita
  #3  
Antiguo 26-09-2024
marco3k marco3k is offline
Miembro
 
Registrado: feb 2015
Posts: 94
Poder: 11
marco3k Va por buen camino
Pues si no muestras un poco de código de esa búsqueda, bueno no hay como ayudarte.
Responder Con Cita
  #4  
Antiguo 26-09-2024
lugotrujillo lugotrujillo is offline
Registrado
 
Registrado: sep 2024
Posts: 7
Poder: 0
lugotrujillo Va por buen camino
Cita:
Empezado por marco3k Ver Mensaje
Pues si no muestras un poco de código de esa búsqueda, bueno no hay como ayudarte.
en un procedimiento cualquiera declaro una variable string
Código Delphi [-]
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');


Código Delphi [-]
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;

Última edición por Neftali [Germán.Estévez] fecha: 27-09-2024 a las 13:21:33. Razón: Añadir TAG's al código
Responder Con Cita
  #5  
Antiguo 26-09-2024
marco3k marco3k is offline
Miembro
 
Registrado: feb 2015
Posts: 94
Poder: 11
marco3k Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 26-09-2024
lugotrujillo lugotrujillo is offline
Registrado
 
Registrado: sep 2024
Posts: 7
Poder: 0
lugotrujillo Va por buen camino
Cita:
Empezado por marco3k Ver Mensaje
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.
no que va, traceo el programa para ir evaluando el comportamiento y en esta comprobacion es que me doy cuenta

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
Responder Con Cita
  #7  
Antiguo 26-09-2024
marco3k marco3k is offline
Miembro
 
Registrado: feb 2015
Posts: 94
Poder: 11
marco3k Va por buen camino
Hice un pequeño ejemplo con una bd de access y el problema es el * y debes usar %
Código Delphi [-]
procedure TForm1.btnBuscaClick(Sender: TObject);
var busca :string;
begin
  try
    try
      busca:= '%'+trim(self.edtBusca.Text)+'%';
      self.Conexion.Connected:= true;
      self.DataSetPrueba.CommandText :='select * from prueba where nombre like :busca';
      self.DataSetPrueba.Parameters.ParamByName('busca').Value := busca;
      self.DataSetPrueba.Active:= true;
      if self.DataSetPrueba.RecordCount>0 then
      begin
        showmessage('Se encontró ' + inttostr(self.DataSetPrueba.RecordCount) + ' registro(s)');
      end;
    except
      abort;
    end;
  finally
    self.Conexion.Connected:= false;
  end;
end;


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: 26-09-2024 a las 23:15:51.
Responder Con Cita
  #8  
Antiguo 27-09-2024
lugotrujillo lugotrujillo is offline
Registrado
 
Registrado: sep 2024
Posts: 7
Poder: 0
lugotrujillo Va por buen camino
Cita:
Empezado por marco3k Ver Mensaje
Hice un pequeño ejemplo con una bd de access y el problema es el * y debes usar %
Código Delphi [-]procedure TForm1.btnBuscaClick(Sender: TObject); var busca :string; begin try try busca:= '%'+trim(self.edtBusca.Text)+'%'; self.Conexion.Connected:= true; self.DataSetPrueba.CommandText :='select * from prueba where nombre like :busca'; self.DataSetPrueba.Parameters.ParamByName('busca').Value := busca; self.DataSetPrueba.Active:= true; if self.DataSetPrueba.RecordCount>0 then begin showmessage('Se encontró ' + inttostr(self.DataSetPrueba.RecordCount) + ' registro(s)'); end; except abort; end; finally self.Conexion.Connected:= false; end; end;



Use access 2013 proveedor "Provider=Microsoft.ACE.OLEDB.12.0" y una tabla con campo texto nombre. Funciona lo de arriba.

voy a probar a ver, no recuerdo si usaba % anteriormente en los LIKE o siempre use *, incluso cambie el proveedor entre ese q usaste y "Provider=Microsoft.Jet.OLEDB.4.0" y obtenia el mismo resultado
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 16:29:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi