Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Consulta 1 Edit a 2 Columnas de una Tabla (https://www.clubdelphi.com/foros/showthread.php?t=83662)

Lenny 12-07-2013 10:00:16

Consulta 1 Edit a 2 Columnas de una Tabla
 
Estimados, acudo a ustedes nuevamente ya que tengo tremenda duda existencial, gracias de antemano ante cualquier ayuda .
Tengo una Tabla que entre varias columnas existen "Nombre" y "Apellido Paterno", hasta ahora tengo la consulta para buscar o por nombre o por apellido y funciona perfecto, la duda: existe la forma de poder "Filtrar" las 2 columnas según el criterio de 1 "Edit"???, en este caso algo así:

Nombre Apellido Paterno
1) Juan Tapia
2) Maria Mora
3) Jose Salas

La idea es que al escribir "i" queden en este caso filtrado la fila 1 y 2, ya que 1 tiene "i" en el apellido y 2 en el nombre.

Quedo atento a sus comentarios y nuevamente gracias por cualquier ayuda.

olbeup 12-07-2013 10:22:27

Hola Lenny,

Esto es lo que buscas:
Código Delphi [-]
...
begin
  with ADOQuery1 do
  begin
    Connection := ADOConnection1;
    SQL.Add('SELECT');
    SQL.Add('    NOMBRE');
    SQL.Add('    ,APELLIDOPATERNO');
    SQL.Add('  FROM Clientes');
    SQL.Add('  WHERE')
    SQL.Add('    (');
    SQL.Add('      NOMBRE LIKE ' + QuotedStr('%' + Edit1.Text + '%'));
    SQL.Add('      OR APELLIDOPATERNO LIKE ' + QuotedStr('%' + Edit1.Text + '%'));
    SQL.Add('    )');

    Open;
  end;
end;
Un saludo.

rafita 12-07-2013 10:23:20

Hola,
Depende de cómo accedas a las bases de datos. Si haces consultas SQL puedes usar una sentencia Select con el operador LIKE:

SELECT Nombre, Apellidos FROM MiTabla WHERE (Nombre like '%'+Edit1.Text+'%') or (Apellidos like '%'+Edit1.Text+'%')

saludos

Lenny 12-07-2013 16:37:52

Sorry, cometí el error de no adjuntar el código que uso hasta ahora y mencionar con que BD trabajo.

Así es como hago als consultas normalmente:

Código Delphi [-]
procedure TClientes.Edit2Change(Sender: TObject);
const
 // suponiendo que esta sea tu consulta
 STRSQL = 'Select * from CONTACTOCLIENTE ';
 STRORDER = ' ORDER BY NOMBRES';
begin
   BDatos.QContactoCliente.Close;
   // Está vacío
   if (Edit2.Text = '') then begin
     BDatos.QContactoCliente.SQL.Text := STRSQL;
   end
   else begin
     // montamos la sql
     BDatos.QContactoCliente.SQL.Text := STRSQL +
        // Añadimos el WHER
        ' WHERE Upper(NOMBRES) LIKE Upper(' + QuotedStr('%' + Edit2.Text + '%') + ')' +
        // Añadimos el orden
        STRORDER;
   end;
   BDatos.QContactoCliente.Open;
end;

Funciona perfecto, si no mal recuerdo lo saque de un ejemplo de esta misma pagina (no recuerdo a nombre de quien por los créditos)...

Utilizo MySQL y los conectores ZEOS, vere si puedo usar parte de los códigos que me dieron, quedo atento a cualquier comentario y gracias.

Lenny 12-07-2013 17:12:02

Gracias estimados, dando vueltas con sus comentarios y códigos aplicándolo a lo que tenia resulto perfecto y quedo así:

Código Delphi [-]
procedure TClientes.Edit2Change(Sender: TObject);
const
 // suponiendo que esta sea tu consulta
 STRSQL = 'Select * from CONTACTOCLIENTE ';
 STRORDER = ' ORDER BY NOMBRES';
begin
   BDatos.QContactoCliente.Close;
   // Está vacío
   if (Edit2.Text = '') then begin
     BDatos.QContactoCliente.SQL.Text := STRSQL;
   end
   else begin
     // montamos la sql
     BDatos.QContactoCliente.SQL.Text := STRSQL +
        // Añadimos el WHER
        ' WHERE Upper(NOMBRES) LIKE Upper(' + QuotedStr('%' + Edit2.Text + '%') + ')' +
            'or Upper(APELLIDO) LIKE Upper(' + QuotedStr('%' + Edit2.Text + '%') + ')' +
        // Añadimos el orden
        STRORDER;
   end;
   BDatos.QContactoCliente.Open;
end;

Muchas gracias!!!

olbeup 15-07-2013 09:35:28

Hola Lenny,

Me alegra que te haya funcionado correctamente.

Un saludo.


La franja horaria es GMT +2. Ahora son las 14:00:15.

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