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
  #4  
Antiguo 06-10-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Hola enecumene,

¿Tal vez asi?

Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
var Filtro: string;
begin
 Filtro := '';
 if (Edit1.Text <> '')
    then begin
           Table1.Filtered := False;
           if ComboBox1.Text = 'Pedido'
              then Filtro := 'no_ped Like ''' +Edit1.Text+ '*''';
           if ComboBox1.Text = 'Trámite'
              then Filtro := 'tramite_no Like ''' +Edit1.Text+ '*''';
           if ComboBox1.Text = 'Orden de Compra'
              then begin
                     // si la condicion a buscar en varios campos
                     // debe cumplirse en todos poner AND
                     // yo asumí que deben ser OR
                     Filtro := 'oc_no_sigef1 Like ''' +Edit1.Text+ '*'' OR';
                     Filtro := Filtro + 'oc_no_sigef2 Like ''' +Edit1.Text+ '*'' OR';
                     Filtro := Filtro + 'oc_no_sigef3 Like ''' +Edit1.Text+ '*''';
                   end;
           if ComboBox1.Text = 'Carta Orden'
              then begin
                     Filtro := 'co1 Like '''  +Edit1.Text+   '*'' OR';
                     Filtro := Filtro + 'co2 Like '''  +Edit1.Text+   '*'' OR';
                     Filtro := Filtro + 'co3 Like '''  +Edit1.Text+   '*'' OR';
                     Filtro := Filtro + 'co4 Like '''  +Edit1.Text+   '*''';
                   end;
           if ComboBox1.Text = 'Status'
              then Filtro := 'status Like '''  +Edit1.Text+   '*''';
           Table1.Filter := Filtro;
           Table1.Filtered := true;
         end
    else Table1.Filtered := False;
end;

Si no te molesta... tengo algunas dudas con respecto a esta forma de anidar varios IF. Por lo menos a mi me resulta un poco molesto estar haciendo tantos anidamientos. Si se que la condición siempre se va a cumplir en algunos de ellos directamente pregunto por la parte verdadera (THEN)... total... no importa que siga evaluando, de cualquier manera en un IF entra y se cumple. Esto me evita a mi el molestoso "escalonado".

Por otro lado, el Filter está hecho para condiciones simples. Y Encadenar varias condiciones en el (como las del tipo Orden Compra) es forzar demasiado al componente.

Yo, en tu caso consideraría el uso de Querys. Por que:
1. Puedes de entrada traer solo lo necesario y te evitas cargar en memoria toda la tabla (algo que hace el TTable).
2. El uso de Query es más rápido.
3. Puedes hacer consultas de muy variadas formas. es más flexible que el TTable.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 06-10-2007 a las 04:43:21.
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
Genero comboBox en dbgrid y cuando hago dos veces click desaparece el comboBox. mcalmanovici Varios 1 29-02-2012 15:09:15
Cómo colocar el resultado de una consulta en un ComboBox??? gusanita Varios 8 16-05-2008 00:58:50
Agregar items a un comboBox desde una consulta de MYSQL Juan Carlos Conexión con bases de datos 3 29-05-2004 22:49:09
Quiero saber como agregar una consulta de SQL a un combobox Julio César Varios 4 15-01-2004 13:47:44


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


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