Fórum Filtro com mais de um campo... #220878
17/03/2004
0
Olá...
estou com um probleminha, tenho uma tabela de cadastro de membros, e os campos cargo, cargo2, cargo3, cargo4, cargo5, cargo6, preciso que ao selecionar a descricao do cargo em um dblookupcombobox(ligado a tabela cargos), ele filtre a tabela membros, retornando todos os registros que possuem a descricao de cargo(o texto do dblookupcombobox), nos 6 campos de cargo(filtrando os 6 campos ao mesmo tempo, através do texto do dblookupcombobox), mas a pesquisa tem q ser exata.
por exemplo:consegui usar;
Mas se nos campos de cargo tem alguma descricao, por ex.
´Pastor´ e ´Pastor auxiliar´, e no dblookupcombobox eu seleciono ´Pastor´, ele me mostra ´pastor´ e também ´pastor auxiliar´, eu preciso q ele me mostre só ´pastor´ ou ´pastor auxiliar´, enfim q a pesquisa seja exata.
desde já agradeço a atençao dos colegas
um forte abraço.
cleverson l. rutes
estou com um probleminha, tenho uma tabela de cadastro de membros, e os campos cargo, cargo2, cargo3, cargo4, cargo5, cargo6, preciso que ao selecionar a descricao do cargo em um dblookupcombobox(ligado a tabela cargos), ele filtre a tabela membros, retornando todos os registros que possuem a descricao de cargo(o texto do dblookupcombobox), nos 6 campos de cargo(filtrando os 6 campos ao mesmo tempo, através do texto do dblookupcombobox), mas a pesquisa tem q ser exata.
por exemplo:consegui usar;
if (pos (uppercase (dblookupcombobox1.text), uppercase(tabmembroscargo.value) + uppercase (tabmembroscargo2.value) + uppercase(tabmembroscargo3.value) + uppercase(tabmembroscargo4.value) + uppercase(tabmembroscargo5.value) + uppercase(tabmembroscargo6.value))) <> 0 then accept:=true else accept:=false; end;
Mas se nos campos de cargo tem alguma descricao, por ex.
´Pastor´ e ´Pastor auxiliar´, e no dblookupcombobox eu seleciono ´Pastor´, ele me mostra ´pastor´ e também ´pastor auxiliar´, eu preciso q ele me mostre só ´pastor´ ou ´pastor auxiliar´, enfim q a pesquisa seja exata.
desde já agradeço a atençao dos colegas
um forte abraço.
cleverson l. rutes
Cleverson_rutes
Curtir tópico
+ 0
Responder
Posts
18/03/2004
Allen74
Cleverson,
Eu acho que uma QUERY seria a forma mais adequada de fazer este tipo de pesquisa. Um modelo seria:
Se você realmente precisa utilizar filtros, o correto seria:
Para que a consulta seja exata você não poderia utilizar Pos() e tampouco concatenar os valores dos campos como fez.
Agora, se você não se importar, apenas um questionamento sobre seu projeto: Porquê seis campos para receber o nome do cargo? Me parece que seu banco de dados não está propriamente normalizado.
Eu acho que uma QUERY seria a forma mais adequada de fazer este tipo de pesquisa. Um modelo seria:
Query1.SQL.Clear; Query1.SQL.Add (´SELECT campo1,campo2,campon FROM membros WHERE cargo=:P1 AND cargo2=:p1 AND cargo3=:P1 AND cargo4=:p1 AND cargo5=:p1 AND cargo6=:p1´); Query1.ParamByName(´p1´).AsString = DbLookupCombobox1.Text; Query1.Open;
Se você realmente precisa utilizar filtros, o correto seria:
... acept := (AnsiUpperCase(DbLookupComboBox1.Text) = AnsiUpperCase(TabMembrosCargo.Value)) AND (AnsiUpperCase(DbLookupComboBox1.Text) = AnsiUpperCase(TabMembrosCargo2.Value)) AND (AnsiUpperCase(DbLookupComboBox1.Text) = AnsiUpperCase(TabMembrosCargo3.Value)) AND (AnsiUpperCase(DbLookupComboBox1.Text) = AnsiUpperCase(TabMembrosCargo4.Value)) AND (AnsiUpperCase(DbLookupComboBox1.Text) = AnsiUpperCase(TabMembrosCargo5.Value)) AND (AnsiUpperCase(DbLookupComboBox1.Text) = AnsiUpperCase(TabMembrosCargo6.Value));
Para que a consulta seja exata você não poderia utilizar Pos() e tampouco concatenar os valores dos campos como fez.
Agora, se você não se importar, apenas um questionamento sobre seu projeto: Porquê seis campos para receber o nome do cargo? Me parece que seu banco de dados não está propriamente normalizado.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)