Array
(
)

Pesquisar (Montar um Select)

$grandaum$
   - 30 jan 2006

eh o seguinte muito jah devem conhecer o metodo do kumon(para quem naum conhece eh tipo aula particular) entaum oq eles estaum precisando eh o seguinte
lah eles tem aula de Portugues Matematica e Ingles
tenho no meu form de pesquisa o seguinte
um edit para pesquisar pelo nome e 3 checkbox
o pesquisa eh a seguinte
c eu por o primeiro nome do aluno e ticar duas materias por exemplo
(
Nome
Lucas
materias
Portugues
matematica
)

quero todos os lucas que faze matematica e portugues


ou se eu por assim

(
Nome
Lucas
materias
Portugues
)

quero todos os lucas que fazem apenas portugues


ou se eu naum colocar o nome e apenas colocar as materias eu quero apenas os alunas que fazem as materias selecionadas naum pode fazer uma ou fazer a outra ..tem q fazer as duas selecionadas...


acredito q naum seja muito dificil...pq o meu maior problema eh com o sql mesmo

o meu banco eh em interbase
eu estou usando o ibdataset

a minha tabela chama Ficha
e os campos saum

Nome

matematica

portugues

ingles




vlw pela força pessoal


Okama
   - 30 jan 2006

Você tem duas condições iniciais: 1-Nome 2-Matérias

Primeiro verifique se o nome foi digitado e monte o primeiro select. Se não foi monte o segundo select:

#Código

if EditNome.text <> ´´ then 
MONTA_SELECT1
else
MONTA_SELECT2


Considerando que sua tabela está estruturada como

Nome Varchar
Portugues Int
matematica int
Ingles Int

e a seleção de cada matéria é feita por 0 e 1 nos campos:


#Código
Procedure MONTA_SELECT1
//Com nome digitado
begin

IBDataSet1.SelectSQL.text := ´Select * from tabela where nome = ´+QuotedStr( Trim( EditNome.text ) );

if CheckBoxPort.checked then
IBDataSet1.SelectSQL.add(´ and Portugues = 1 ´);

if CheckBoxMat.checked then
IBDataSet1.SelectSQL.add(´ and Matematica = 1 ´);

if CheckBoxIng.checked then
IBDataSet1.SelectSQL.add(´ and Ingles = 1 ´);

end;






#Código
Procedure MONTA_SELECT2
//Sem nome digitado
Var Materia : Boolean;
begin

IBDataSet1.SelectSQL.text := ´Select * from tabela ´;
Materia := False;

if CheckBoxPort.checked then begin
IBDataSet1.SelectSQL.add(´ where Portugues = 1 ´);
Materia := True;
end;

if CheckBoxMat.checked then
if Materia then
IBDataSet1.SelectSQL.add(´ and Matematica = 1 ´)
else begin
IBDataSet1.SelectSQL.add(´ where Matematica = 1 ´);
Materia := True;
end;


if CheckBoxIng.checked then
if Materia then
IBDataSet1.SelectSQL.add(´ and Ingles = 1 ´)
else
IBDataSet1.SelectSQL.add(´ where Ingles = 1 ´);

end;


Separei os procedimentos para ficar mais enxuto o código, você pode fazer no mesmo procedimento controlando a variável ´Materia´ para inserir a clausula ´where´ ou ´add´