Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2011
Avatar de Darkseratul
Darkseratul Darkseratul is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 58
Poder: 14
Darkseratul Va por buen camino
Exclamation !!Problemas con IF y sus valores !!

Hola amigos del clubdelphi espero que estén muy bien

Bueno lo que pasa es que tengo un problema el cual va mas o menos así

Trata de hacer una búsqueda secuencial y por tabla

La búsqueda secuencial ya esta y trabajo muy bien la cual funciona así en el evento onchange de un edit le pongo el siguiente código

Código Delphi [-]
begin
If (Edit1.text <> '') then
begin
ADOTable1.Filter := 'mitabla Like '''+ Edit1.Text +'*''';
ADOTable1.Filtered:=True;
end 

Else
begin
ADOTable1.Filtered:=False;

ok todo eso esta muy bien pero que pasa si quiero buscar en diferentes tablas
bueno con mi poca experiencia manejando delphi trato de hacer lo que busco

en el evento onchange de un edit pongo este codigo

Código Delphi [-]
begin
if CheckBox1.Checked = true then
begin
If (Edit1.text <> '') then
begin
ADOTable1.Filter := 'mitabla Like '''+ Edit1.Text +'*''';
ADOTable1.Filtered:=True;
end 

Else
begin
ADOTable1.Filtered:=False;

begin
if CheckBox2.Checked = true then
begin
If (Edit1.text <> '') then
begin
    ADOTable1.Filter := 'mitabla2 Like '''+ Edit1.Text +'*''';
    ADOTable1.Filtered:=True;
end 
Else
begin
ADOTable1.Filtered:=False;


begin
if CheckBox3.Checked = true then
begin
If (Edit1.text <> '') then
begin
    ADOTable1.Filter := 'mitabla3 Like '''+ Edit1.Text +'*''';
    ADOTable1.Filtered:=True;
end 
Else
begin
ADOTable1.Filtered:=False;
end;

tengo 3 CheckBox y supuesta mente a mi entender el evento onchange deve de ejecutar la parte de codigo que cumpla con lo requerido que en este caso es si al CheckBox esta en true lo mas curioso es que ya lo implemente pero solo me da resultado con la primer tabla (mitabla) pero cuando le pongo en otro CheckBox no hace nada

alguien me podria ayudar de ante mano muchas gracias
Responder Con Cita
  #2  
Antiguo 29-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Darkseratul.

Creo que el problema está que en todos los casos estas asignando a la propiedad Filter del mismo 'ADOTable1' las cadenas: mitabla, mitabla2, mitabla3 y en ningún momento veo que cambies la propiedad TableName.
Es decir que si en el TADOTable tenes asignado como TableName 'mitabla' no va a funcionar filtrar por 'mitabla2'.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-09-2011
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Hola,

Además de lo que te ha comentado ecfisa que también creo que pueda ser el error, debes intentar estructurar el código para tenerlo más claro.
Por ejemplo:
Código Delphi [-]
procedure TForm5.Edit1Change(Sender: TObject);
begin
  // Siempre se quita el filtro
  ADOTable1.Filtered := False;

  // Hacer algo si hay texto
  if (Edit1.Text <> '') then
  begin
    // Crear el filtro
    if CheckBox1.Checked then
      ADOTable1.Filter := 'mitabla Like ''' + Edit1.Text + '*'''
    else if CheckBox2.Checked then
      ADOTable1.Filter := 'mitabla2 Like ''' + Edit1.Text + '*'''
    else if CheckBox3.Checked then
      ADOTable1.Filter := 'mitabla3 Like ''' + Edit1.Text + '*''';
    
    // Por último, activar el filtro
    ADOTable1.Filtered := True;
  end;
end;
Responder Con Cita
  #4  
Antiguo 29-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Darkseratul.

Creo que el problema está que en todos los casos estas asignando a la propiedad Filter del mismo 'ADOTable1' las cadenas: mitabla, mitabla2, mitabla3 y en ningún momento veo que cambies la propiedad TableName.
Es decir que si en el TADOTable tenes asignado como TableName 'mitabla' no va a funcionar filtrar por 'mitabla2'.

Un saludo.
pregunta...
cuando se hace el filtro, se hace por un campo verdad?

quiza los campos se llaman mitabla1, mitabla2, mitabla3, en ese caso deberia funcionarle, quiza no esta referscando el resultado
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El problema es que si contiene algo el edit, pero no se activa ningun check dara error ya que el comienzo y fin siempre termina con la activacion del filtro.
Me parece que la idea es buena, solo que por que no completar el codigo, ser mas especificos:

Código Delphi [-]
procedure TForm5.Edit1Change(Sender: TObject);
begin
  // Siempre se quita el filtro
  ADOTable1.Filtered := False;

  // Hacer algo si hay texto
  if (Edit1.Text <> '') then
  begin
    // Crear el filtro
    if CheckBox1.Checked then
    begin
      ADOTable1.Filter := 'mitabla Like ''' + Edit1.Text + '*''';
      ADOTable1.Filtered := True
    end
    else if CheckBox2.Checked then
      begin
      ADOTable1.Filter := 'mitabla2 Like ''' + Edit1.Text + '*''';
      ADOTable1.Filtered := True
    end
    else if CheckBox3.Checked then
    begin
      ADOTable1.Filter := 'mitabla3 Like ''' + Edit1.Text + '*''';
      ADOTable1.Filtered := True
    end
    else
    ADOTable1.Filtered := False;
   end; 
  end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Por supuesto, es de logica pensar que el adotable tiene que estar ligado a la tabla que se quiere filtrar.
Es de suponer que mitabla1, 2, 3 en realidad son campos de cada tabla, de lo contrario estamos perdiendo el tiempo y es caro.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La logica del proceso es esta:
Código Delphi [-]
procedure TForm5.Edit1Change(Sender: TObject);
begin
  // Siempre se quita el filtro
  ADOTable1.Filtered := False;

  // Hacer algo si hay texto
  if (Edit1.Text <> '') then
  begin
    // Crear el filtro
    if CheckBox1.Checked then
    begin
      ADOTable1.TableName:= 'mitabla1';
      ADOTable1.Filter := 'miCAMPO Like ''' + Edit1.Text + '*''';
      ADOTable1.Filtered := True
    end
    else if CheckBox2.Checked then
      begin
      ADOTable1.TableName:= 'mitabla2';
      ADOTable1.Filter := 'miCAMPO Like ''' + Edit1.Text + '*''';
      ADOTable1.Filtered := True
    end
    else if CheckBox3.Checked then
    begin
      ADOTable1.TableName:= 'mitabla3';
      ADOTable1.Filter := 'miCAMPO Like ''' + Edit1.Text + '*''';
      ADOTable1.Filtered := True
    end
    else
    ADOTable1.Filtered := False;
   end; 
  end;
end;
Saludos
EDITO: Por supuesto teniendo en cuenta abrir y cerrar la tabla correspondiente.
EDITO2: Me faltaron comillas jejeje
__________________
Siempre Novato

Última edición por Caral fecha: 29-09-2011 a las 18:54:50.
Responder Con Cita
  #8  
Antiguo 29-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por oscarac Ver Mensaje
pregunta...
cuando se hace el filtro, se hace por un campo verdad?

quiza los campos se llaman mitabla1, mitabla2, mitabla3, en ese caso deberia funcionarle, quiza no esta referscando el resultado
Me dió la impresión que eran nombres de tablas, pero lo que comentas, ciertamente es una posibilidad...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 29-09-2011
Avatar de Darkseratul
Darkseratul Darkseratul is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 58
Poder: 14
Darkseratul Va por buen camino
Muchas gracias

Discúlpenme pero si me confundí diablos siempre que trato de explicar mi problema se me van las patas

Ciertamente como ya lo comentaron quise desir micampo1, micampo2, micampo3

Es solo una tabla con tres campos diferentes

gracias a todos por su ayuda y paciencia siempre meto la pata

Coral tu ejemplo es mas o menos lo que quise hacer pero en el se asumen varias tablas pero en mi caso solo es una con 3 campos

Código Delphi [-]
procedure TForm5.Edit1Change(Sender: TObject);
begin
  // Siempre se quita el filtro
  ADOTable1.Filtered := False;

  // Hacer algo si hay texto
  if (Edit1.Text <> '') then
  begin
    // Crear el filtro
    if CheckBox1.Checked then
    begin
      ADOTable1.TableName:= 'mitabla1'; 
      ADOTable1.Filter := 'miCAMPO Like ''' + Edit1.Text + '*''';
      ADOTable1.Filtered := True
    end
    else if CheckBox2.Checked then
      begin
      ADOTable1.TableName:= 'mitabla2';
      ADOTable1.Filter := 'miCAMPO Like ''' + Edit1.Text + '*''';
      ADOTable1.Filtered := True
    end
    else if CheckBox3.Checked then
    begin
      ADOTable1.TableName:= 'mitabla3';
      ADOTable1.Filter := 'miCAMPO Like ''' + Edit1.Text + '*''';
      ADOTable1.Filtered := True
    end
    else
    ADOTable1.Filtered := False;
   end; 
  end;
end;

Muchas gracias a todos
Responder Con Cita
  #10  
Antiguo 29-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
q bueno
pero es caral no coral....
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #11  
Antiguo 29-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ahora te hago una pregunta...
que pasa si marcan 2 o mas Checks ?????
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #12  
Antiguo 29-09-2011
Avatar de Darkseratul
Darkseratul Darkseratul is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 58
Poder: 14
Darkseratul Va por buen camino
Bueno eso no pasa

Cita:
Empezado por oscarac Ver Mensaje
ahora te hago una pregunta...
que pasa si marcan 2 o mas Checks ?????
Eso no puede pasar por que el el evento de onclick del chebox le digo que ponga en false los demas chebox

algo asi

Código Delphi [-]
procedure TFClientes.CheckBox1Click(Sender: TObject);
begin
checkbox2.Checked:=false;
checkbox3.Checked:=false;
end;

no se si es la forma correcta pero así me funciono

y si es caral cuando me fije ya la avía posteado
Responder Con Cita
  #13  
Antiguo 29-09-2011
Avatar de Darkseratul
Darkseratul Darkseratul is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 58
Poder: 14
Darkseratul Va por buen camino
Exclamation Ya probé el código pero me sale error



He adecuado el código que me facilitaron a mi proyecto

Código Delphi [-]
procedure TFClientes.Edit1Change(Sender: TObject);
begin
  // Siempre se quita el filtro
  datamodule1.tarchivo.Filtered := False;

  // Hacer algo si hay texto
  if (Edit1.Text <> '') then
  begin
    // Crear el filtro
    if CheckBox1.Checked  then
    begin
      datamodule1.tarchivo.Filter := 'Nombre Like ''' + Edit1.Text + '*''';
      datamodule1.tarchivo.Filtered := True
    end
    else if CheckBox2.Checked  then
      begin
      datamodule1.tarchivo.Filter := 'Numero Like ''' + Edit1.Text + '*''';
      datamodule1.tarchivo.Filtered := True
    end
    else
    datamodule1.tarchivo.Filtered := False;
   end;
end;

con el campo Nombre si me hace la búsqueda
pero con el campo Numero me sale un error de que el Filtro no se puede abrir

Alguien sabe a que se debe ?????

ayuda por favor y muchas gracias
Responder Con Cita
  #14  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
procedure TFClientes.Edit1Change(Sender: TObject);
begin
  // Siempre se quita el filtro
  datamodule1.tarchivo.Filtered := False;

  // Hacer algo si hay texto
  if (Edit1.Text <> '') then
  begin
    // Crear el filtro
    if CheckBox1.Checked  then
    begin
      datamodule1.tarchivo.Filter := 'Nombre Like ''' + Edit1.Text + '*''';
      datamodule1.tarchivo.Filtered := True
    end
    else if CheckBox2.Checked  then
      begin
      datamodule1.tarchivo.Filter := 'Numero Like '+ Edit1.Text;
      datamodule1.tarchivo.Filtered := True
    end
    else
    datamodule1.tarchivo.Filtered := False;
   end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #15  
Antiguo 29-09-2011
Avatar de Darkseratul
Darkseratul Darkseratul is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 58
Poder: 14
Darkseratul Va por buen camino
Talking Muchas gracias caral

Cita:
Empezado por Caral Ver Mensaje
Hola
Código Delphi [-]
procedure TFClientes.Edit1Change(Sender: TObject);
begin
  // Siempre se quita el filtro
  datamodule1.tarchivo.Filtered := False;

  // Hacer algo si hay texto
  if (Edit1.Text <> '') then
  begin
    // Crear el filtro
    if CheckBox1.Checked  then
    begin
      datamodule1.tarchivo.Filter := 'Nombre Like ''' + Edit1.Text + '*''';
      datamodule1.tarchivo.Filtered := True
    end
    else if CheckBox2.Checked  then
      begin
      datamodule1.tarchivo.Filter := 'Numero Like '+ Edit1.Text;
      datamodule1.tarchivo.Filtered := True
    end
    else
    datamodule1.tarchivo.Filtered := False;
   end;
end;
Saludos

Muchas gracias Caral solo que hay un problema al hacer la búsqueda en el campo numero me da resultados nulos o que no hay nada tengo como 10 registros que tengo con números como 42541 pero al poner el 4 en la búsqueda no me da ningún resultado
Responder Con Cita
  #16  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Es access ?
Saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 29-09-2011
Avatar de Darkseratul
Darkseratul Darkseratul is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 58
Poder: 14
Darkseratul Va por buen camino
Wink si claro

Cita:
Empezado por Caral Ver Mensaje
Hola
Es access ?
Saludos
si claro de hecho prácticamente todo lo que se lo he a prendido de ti con tus ejemplos y explicaciones quisas en su momento no eran para mi pero de todos tu eres la persona con la que mas he a prendida a programas delphi

a un soy muy novato pero tu me enseñaste como conectarse a una base de datos acces con tu ejemplo de restaurante

y bueno si es acces por que usted la utiliza en la mayoría de los ejemplos y es la única forma que se para conectarme a una base de datos

y bueno te doy las gracias por que sin tu ayuda muchos de nosotros no supiéramos nada
esta es la primera ves que me ayudas en un problema personal y te lo agradezco mucho

te admiro mucho y muchas gracias
Responder Con Cita
  #18  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Ya puedes subir adjuntos.
Quitale el exe al programa, ponlo en un zip con la base de datos y le doy una revisada, si te parece.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #19  
Antiguo 29-09-2011
Avatar de Darkseratul
Darkseratul Darkseratul is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 58
Poder: 14
Darkseratul Va por buen camino
Talking Muchas gracias

Cita:
Empezado por Caral Ver Mensaje
Hola
Ya puedes subir adjuntos.
Quitale el exe al programa, ponlo en un zip con la base de datos y le doy una revisada, si te parece.
Saludos
http://www.terawiki.clubdelphi.com/a...redice%F1o.zip

ya esta mi programa
en el login selecciona un usuario y la contraseña es 1

espero que me puedas ayudar y muchas pero muchas gracias
Responder Con Cita
  #20  
Antiguo 29-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Dame un momento y lo reviso.
Saludos
__________________
Siempre Novato
Responder Con Cita
Respuesta



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
Valores OldValue RicardoNavarro Firebird e Interbase 1 26-04-2007 17:57:54
Envio de valores Roilo PHP 8 19-10-2006 17:10:16
Problemas por sumas de valores grandes CamiloU Varios 4 23-06-2006 00:12:01
regresar valores Genner MS SQL Server 5 03-04-2006 13:55:43
Redondeo de valores JODELSA Varios 1 23-08-2003 18:33:50


La franja horaria es GMT +2. Ahora son las 11:16: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
Copyright 1996-2007 Club Delphi