Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #12  
Antiguo 27-03-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 27
eduarcol Va por buen camino
A ver, apoyandome en la idea de GluGlu resolvi el problema, aqui esta el codigo para el que le interese, basicamente lo que hace es qe toma la ultima aparicion del WHERE y divide el string en dos, luego inserta el filtro y lo vuelve a unir. Pronto lo subire a mi subdominio para el que lo necesite

Código Delphi [-]
//si el control activo es caja de texto Genera el filtro en la consulta
         //Divide la sentencia SQL
         sq.DisableControls;

         sq.Active := False;

         //Reestablece la sentencia original
         sq.SQL.Text := cSqlOriginal;

         //Inicializa las variables
         Aux_SelectSQL1 := '';
         Aux_SelectSQL2 := UpperCase(sq.SQL.Text);

         //Elimina los saltos de linea y saca como resultado Aux_SelectSQL1
         for j := 1 to Length(Aux_SelectSQL2) do begin
           if Aux_SelectSQL2[j] = #13 then
              Aux_SelectSQL1 := Aux_SelectSQL1 + ' '
           else
             if Aux_SelectSQL2[j] <> #10 then
               Aux_SelectSQL1 := Aux_SelectSQL1 + Aux_SelectSQL2[j];
         end;

         //Toma la aparicion del ultimo where
         Aux_Pos := 1;
         while PosEx(' WHERE ', Aux_SelectSQL1, Aux_Pos) <> 0 do begin
           Aux_Pos := PosEx(' WHERE ', Aux_SelectSQL1, Aux_Pos) + 1;
         end;

         //Divide la sentencia antes del where y despues del where
         Dec(Aux_Pos);
         if Aux_Pos = 0 then
         begin
            Aux_Pos := Length(Aux_SelectSQL1);
            Aux_SelectSQL1 := Aux_SelectSQL1 + ' WHERE ';
            lAgregar := False;
         end
         else
            lAgregar := True;

         cInicio  := Copy(Aux_SelectSQL1, 1, Aux_Pos + 7);
         cFinal   := Copy(Aux_SelectSQL1, Aux_Pos + 7, Length(Aux_SelectSQL1));



         //Arma el filtro dependiendo la seleccion
         if rgTipo.ItemIndex = 0 then //Comienza
            cFiltro := ' (' + rgFiltro.Items.Strings[rgFiltro.ItemIndex] + ' like ' + QuotedStr(txBuscar.Text + '%') + ')'
         else if rgTipo.ItemIndex = 1 then //Contiene
            cFiltro := ' (' + rgFiltro.Items.Strings[rgFiltro.ItemIndex] + ' like ' + QuotedStr('%' + txBuscar.Text + '%') + ')'
         else if rgTipo.ItemIndex = 2 then //Termina
            cFiltro := ' (' + rgFiltro.Items.Strings[rgFiltro.ItemIndex] + ' like ' + QuotedStr('%' + txBuscar.Text) + ')'
         else if rgTipo.ItemIndex = 3 then //Exacta
            cFiltro := ' (' + rgFiltro.Items.Strings[rgFiltro.ItemIndex] + ' = ' + QuotedStr(txBuscar.Text) + ')';

         //Determina si agrega el AND
         if lAgregar then
            cFiltro := cFiltro  + ' AND ';

         sq.SQL.Text := cInicio + cFiltro + cFinal;
         sq.Active := True;
         sq.EnableControls;
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
 



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 a un query en vez de a una tabla eldiegofg SQL 10 19-09-2007 12:46:39
Tabla vacia que el motor de BD reporta llena Phacko Conexión con bases de datos 1 28-02-2007 06:02:34
que es más rápido query o filtrar tabla? Manuel Varios 27 29-10-2006 16:42:41
Cómo sincronizar Query y tabla David Conexión con bases de datos 2 13-07-2006 11:18:50
Tabla externa en query llonigualker Conexión con bases de datos 3 28-04-2006 12:14:22


La franja horaria es GMT +2. Ahora son las 08:32:18.


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