Fórum Montar consulta SQL #295772

16/09/2005

0

Olá amigos

estou tentando montar uma consulta sql da seguite maneira:

numa tela tenho vários radiobuttons, alguns combobox e alguns maskedits.

Dependendo da escolha de um ou mais itens acima citados, montar a query.

Ex: O radio button1 escolhe relatorio geral por periodo de data, mas se escolher um combobox que é um cliente e se escolher outros itens como posso montar esta query.

se alguem puder ajudar?

Muito grato

Silvio Guedes


Silviogs

Silviogs

Responder

Posts

16/09/2005

Michelli88

Use o RadioGroup que é mais pratico.. vc adiciona os itens na propriedade [b:b73cab1bcc]items[/b:b73cab1bcc]!!

Cada opção escolhida, vc vai passar ela por parametro para a query ou mudar o Select inteiro..

Primeiro de tudo vc tem definir os selects e depois ver qual é de qual!

Exemplo:
No seu RadioGroup1 vc tem:
:arrow: Relatorio Geral de Clientes :arrow: Relatorio do Cliente por Codigo


No evento OnChange vc vai fazer algo como:

  Query.SQL.Clear;
  Case RadioGroup1.ItemIndex of
    0: begin
      Query.SQL.Text:=´SELECT * FROM CLIENTES´;
    end;
    1: Begin
      Query.SQL.Text:=´SELECT * FROM CLIENTES WHERE COD_CLIENTE = :PCOD_CLIENTE´;
      Query.ParambyName(´PCOD_CLIENTE´).AsInteger:= CodigodoCliente;   
    end;
  end;
  Query.Open;


PCOD_CLIENTE é um parametro, eh para os parametros que vc vai jogar os valores selecionados nos componentes...


Responder

Gostei + 0

16/09/2005

Silviogs

Olá michelli88

muito grato por sua atenção, mas não era bem isso que eu queria, resolvi da sguinte maneira:


select pc.processo, pc.proc_complemento, pd.nome, ae.nome, pc.dataentrada, pc.dataretirada, pc.devolucao1, pc.datadevtribunal from processos pc
join procuradores pd on pd.codigo=pc.procurador
join assessor ae on ae.codigo=pc.assessor
where 1=1

rotina principal
QryProcesso.Close;
cria_query(QryProcesso.SQL.Text);

depois executo uma procedure cria_query:

with RptGeral do begin
if mprocurador <> 0 then
texto := texto + ´and pc.procurador=:mprocurador ´;
if massessor <> 0 then
texto := texto + ´and pc.assessor=:massessor´;
if RadioGroup1.Buttons[0].Checked then
if pos(´mdata1´,text)=0 then
texto := texto + ´and pc.dataentrada>=:mdata1 and pc.dataentrada<=:mdata2 ´;
if RadioGroup1.Buttons[1].Checked then
if pos(´mdata1´,text)=0 then
texto := texto + ´and pc.dataretirada>=:mdata1 and pc.dataretirada<=:mdata2 ´;
if RadioGroup1.Buttons[2].Checked then
if pos(´mdata1´,text)=0 then
texto := texto + ´and pc.devolucao1>=:mdata1 and pc.devolucao1<=:mdata2 ´;
if RadioGroup1.Buttons[3].Checked then
if pos(´mdata1´,text)=0 then
texto := texto + ´and pc.datadevtribunal>=:mdata1 and pc.datadevtribunal<=:mdata2´;
if RadioGroup1.Buttons[4].Checked then
if pos(´pc.dataretirada´,text)=0 then
texto := texto + ´and pc.dataretirada is null ´;
if RadioGroup1.Buttons[5].Checked then
if pos(´pc.devolucao1´,text)=0 then
texto := texto + ´and pc.devolucao1 is null ´;
if RadioGroup1.Buttons[6].Checked then
if pos(´pc.datadevtribunal´,text)=0 then
texto := texto + ´and pc.datadevtribunal is null ´;
end;
RptGeral.QryProcesso.SQL.Text := texto;

continua a rotina principal:

QryProcesso.SQL.Add(´ order by pc.dataentrada,pc.processo´);
if mprocurador <> 0 then
QryProcesso.ParamByName(´mprocurador´).Value := mprocurador;
if massessor <> 0 then
QryProcesso.ParamByName(´massessor´).Value := massessor;
if (MaskEdit1.Text <> ´ / / ´) and (MaskEdit2.Text <> ´ / / ´) then
with RptGeral do begin
QryProcesso.ParamByName(´mdata1´).Value := strtodate(MaskEdit1.Text);
QryProcesso.ParamByName(´mdata2´).Value := strtodate(MaskEdit2.Text);
end;
RptGeral.QryProcesso.Open;

Atenciosamente

Silvio Guedes


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar