Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

masterbsb

Consulta SQL

Recommended Posts

bom pessoal, to com uma duvida aqui, tenho a tabela departamentos e a tabela tipos de documento, e na tabela documento é armazenado o código do tipo de documento e do departamento, no formulário de consulta pra gerar o relatório, o usuario tem tem a possibilidade de escolher o nome do departamento, e o tipo de documento, no oncreate do form eu preencho os combobxs com as respectivas tabelas, e no onexit de cada um desses combos faço uma consulta exemplo:

procedure TFrmGerarRelatorioDoc.comboDeptoExit(Sender: TObject);
begin
CDepartamento.Close;
CDepartamento.SQL.Clear;
CDepartamento.SQL.Add('select * from departamentos where nome like :pnome');
CDepartamento.ParamByName('pnome').AsString := comboDepto.Text;
CDepartamento.Prepare;
CDepartamento.Open;
codigoDepto := CDepartamento.FieldByName('codigo').AsString;
end;


e da mesma forma pra outra tabela, bom até aqui sem mistérios, só que na hora de fazer a pesquisa do documento, uso o que retornado dessas consultas, como por exemplo o "codigoDepto" mostrado aí em cima, mais como posso fazer se o usuario desejar pesquisar todos os documentos sem escolher o departamento? ou o tipo? tentei fazer isso, mais dá errado, alguém tiver alguma ideia! Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só mandar o like vazio desta forma:

 

procedure TFrmGerarRelatorioDoc.comboDeptoExit(Sender: TObject);
begin
  CDepartamento.Close;
  CDepartamento.SQL.Clear;
  CDepartamento.SQL.Add('select * from departamentos where nome like :pnome');
  CDepartamento.ParamByName('pnome').AsString := '%%';
  CDepartamento.Prepare;
  CDepartamento.Open;
  codigoDepto := CDepartamento.FieldByName('codigo').AsString;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

A minha dúvida é parecida, mas parece ser mais fácil. Bem, vamos lá: tenho uma tabela TURMAS que tem um campo integer chamado turm_escola e tenho também uma tabela chamada ESCOLAORGAO, que tem um campo string (esc_nome) que fornece as escolas (via chave estrangeira) para a tabela TURMAS.

 

O problema é o seguinte: tenho um formulário de consulta que tem três componentes: um ComboBox (cbxEscola), um speedButon (btnPesquisar) e um DBGrid (DBGrid1). No combobox eu listo, via SQL, todas as escolas da tabela ESCOLAORGAO (evento onShow do form).

 

CÓDIGO:

 

procedure TfrmConTurmasPorEscola.FormShow(Sender: TObject);
begin
dm_dadosSeduc.sql_conEscolaOrgao.Close;
dm_dadosSeduc.sql_conEscolaOrgao.Open;
cbxEscola.Items.Clear;
While not dm_dadosSeduc.sql_conEscolaOrgao.Eof do
begin
cbxEscola.Items.Add(dm_dadosSeduc.sql_conEscolaOrgao.fieldbyname('esc_nome').AsString);
dm_dadosSeduc.sql_conEscolaOrgao.Next;
end;
end;
No evento onClick do btnPesquisar eu consigo carregar no DBGrid1 todas as turmas cadastradas na tabela TURMAS.
CÓDIGO:
procedure TfrmConTurmasPorEscola.btnPesquisarClick(Sender: TObject);
begin
With dm_dadosSeduc.sql_conTurmasPorEscola do
begin
Close;
SQL.Clear;
SQL.Add('select turm_escola, turm_serieAno, turm_turma, turm_etapa, turm_nAlunos');
SQL.Add('from turmas');
SQL.Add('where turm_escola = :nomeescola');
ParamByName('nomeescola').AsString:= cbxEscola.Text;
Prepare;
Open;
end;
end;
O que eu estou querendo fazer é o seguinte: filtrar no DBGrid1 somente as turmas da escola selecionada no cbxEscola.
Se alguém poder me ajudar, ficaria muito grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

HELENO de Sant'Anna, tudo bem contigo cara? cara, me explica melhor sua duvida, vc quer consultar na tabela turmas as turmas que possuem o mesmo código do nome da escola selecionado no combobox?

se for isso então faça o seguinte, adicione mais query e liga ela a tabela que tenha as escolas, e no evento onexit do combobox que vc seleciona o nome da escola vc faz a consulta nessa query através do nome, e aí vc pega o código referente a esse nome, em uma variável por exemplo e daí vc usa o código na pesquisa que vc apresentou aí em cima, nem sei se to sendo claro, qualquer duvida entre em contato! Abraços

 

 

algo mais ou menos assim, se não for isso, explica melhor aí, abraços!

 

 

 

procedure TForm1.btnPesquisaClick(Sender: TObject);
begin

  qTurmas.Close;
  qTurmas.SQL.Clear;
  qTurmas.SQL.Add('select * from tabela_turmas where codigo_escola = :codigo');
  qTurmas.ParamByName('codigo').AsInteger := qEscolas.FieldByName('codigo').AsInteger;
  qTurmas.Prepare;
  qTurmas.Open;
end;

procedure TForm1.comboEscolaExit(Sender: TObject);
begin

  qEscolas.Close;
  qEscolas.SQL.Clear;
  qEscolas.SQL.Add('select * from tabela_escolas where nome_escola like :pnome');
  qEscolas.ParamByName('pnome').AsString := comboEscola.Text+'%';
  qEscolas.Prepare;
  qEscolas.Open;
end;


Quanto a minha duvida postada aqui, eu queria que mesmo sem escolher todos os campos para a pesquisa ela fosse feita, como não consegui fazer, coloquei todos os campos obrigatorios para realizar a pesquisa, portanto, resolvido o meu problema!

Compartilhar este post


Link para o post
Compartilhar em outros sites

que bom que vc tenha conseguido, abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.