Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ayuda con consulta sql (https://www.clubdelphi.com/foros/showthread.php?t=72167)

microbiano 01-02-2011 17:23:23

ayuda con consulta sql
 
resulta que tenia este codigo para hacer las busquedas, en el cual en la columna nombre, guardar todo el nombre completo, pero ahora ese nombre lo tengo que dividir en Apellido Paterno, Apellido Materno y nombre, pues bien cuando hago la busqueda ya no se como hacerlo
Código Delphi [-]
with Fmodulo.Qry_Temp do
  begin
   Close;
   SQL.Clear;
   SQL.Add('SELECT no_contrato AS[Num Contrato],nombre as [Usuario],calle as [Calle]');
   SQL.Add('from cap_usuarios');
   case rg_buscar.ItemIndex of
    0: if(Length(Self.txtnombrebuscar.Text) > 0) then
       SQL.Add('WHERE NOMBRE LIKE ''%' + Self.txtnombrebuscar.Text + '%''');
    1: SQL.Add('WHERE calle LIKE ''%' + Self.txtcalle_busca.Text + '%''');
   end;

   case rg_ordena.ItemIndex of
    0:  SQL.Add('ORDER BY 2');
    1:  SQL.Add('ORDER BY 3');
   end;
   try
    open;
    Self.jtxtregistros.Value:=Recordset.RecordCount;
    Self.txtnombrebuscar.Text:='';
    self.txtcalle_busca.Text:='';
    Exit;
   except
    on E:EOleException do
     begin
      MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
     end;
   end;

bien el problema va en esta linea que es aqui a donde tendria que juntar apellido paterno,materno y nombre

lo intente asi pero no funciona

Código Delphi [-]
 SQL.Add('WHERE paterno+materno+NOMBRE LIKE ''%' + Self.txtnombrebuscar.Text + '%''');

y en txtnombre:= txtpaterno+' '+txtmaterno+' '+nombre;

alguna sugerencia?

rgstuamigo 01-02-2011 18:04:14

Aunque no has dicho que servidor de base de datos usas, pues puedes usar la funcion Concat para concatenar los campos, desde luego ésto puede variar dependiente del Servidor de BD que uses.
En en MySQL sería asi:
Código Delphi [-]
SQL.Add('WHERE concat(paterno,materno,NOMBRE) LIKE ''%' + Self.txtnombrebuscar.Text + '%''');
Pero como es lógico debe haber un espacio entre el nombre y los apellidos entonces sería asi:
Código Delphi [-]
SQL.Add('WHERE Concat(paterno,'' '',materno,'' '',NOMBRE) LIKE ''%' + Self.txtnombrebuscar.Text + '%''');
Aunque :rolleyes: en MySQL mejor usaría la funcion Concat_WS (Concat With Separator) concatenar con separador :p quedando así:
Código Delphi [-]
SQL.Add('WHERE Concat_WS('' '',paterno,materno,NOMBRE) LIKE ''%' + Self.txtnombrebuscar.Text + '%''');
Saludos...:)

Jucho69 01-02-2011 18:38:18

Hola Rgstuamigo

Es una solución que me puede servir tambien

SQL.Add('WHERE Concat(--------,'' '',-------,'' '',-------);
Saludos


La franja horaria es GMT +2. Ahora son las 05:07:06.

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