Query QuickReport

06/02/2006

Olá delphianos...

Preciso da ajuda de vocês para implantar no meu sistema um formulário onde posso imprimir relatórios com parâmetros, mas o problema é que não sei como fazer isso :cry: Preciso de uma instrução SQL onde eu pudesse através de dois controles DBComboBox selecionar por exemplo no primeiro o responsável e no segundo o setor, então no quickreport eu iria exibir para imprimir o código, nome do funcionário, valor a receber e outros campos..., Ou seja, todos os registros onde seja iguais aos selecionados nos BDComboBox setor e responsável. Teria que trabalhar com Query, mas pode ser de outra maneira se tiver. Na prática, o usuário digitaria no sistema o cadastro do funcionário e em outro formulário o de impressão ele escolheria o setor e o responsável que ele quer imprimir, então através desta seleção feita no DBComboBox seria exibido no quickReport os registros onde o setor e responsável são iguais aos parâmetros informados no Form dos DBComboBox. Na sei se fui claro, desde já.

Obrigado!


Gtts

Respostas

06/02/2006

Aroldo Zanela

Colega,

Basta colocar as restrições na cláusula WHERE em formato de parâmetro. Se você colocar a estrutura das tabelas (DDL), podemos fazer um exemplo prático. Qual o banco de dados e versão do Delphi?


Responder Citar

06/02/2006

Gtts

utilizo delphi 7 e Paradox.

Sei que tenho que fazer isso, mas como pego os dados que foram escolhidos na dbcombobox, como passo para o relatório?

Obrigado.


Responder Citar

06/02/2006

Aroldo Zanela

Colega,

Por favor, coloque a estrutura das tabelas para que possamos fazer um exemplo mais direcionado.


Responder Citar

06/02/2006

Gtts

tabela cadastro de funcionarios: (TbCadFuncionarios)
- Setor
- Responsavel
- codigo
- nome
- valor_pagar

Tabela cadastro de setores: (TbCadSetores)
- codigo
- setor

Tabela cadastro de responsavel: (TbCadResponsavel)
- codigo
- nome_responsavel

Gostaria de exibir no QuickReport os todos os dados da tabela funcionário onde os campos setor e responsavel sejam iguais aos dados escolhidos na dbcombobox1 e dbcombobox2 contidas no Form_menu_relatorios... Obrigado.


Responder Citar

06/02/2006

Gtts

dbcombobox1 - dados da tabela setor
dbcombobox2 - dados da tabela responsavel


Responder Citar

07/02/2006

Gtts

sobe.


Responder Citar

07/02/2006

Spooner

Bom dia Colega,

Acho que com essa Sql Deve funcionar, não fiz o teste mas pelas informações que você passou seria mais ou menos assim.

qryFuncionarios.Close;
qryFuncionarios.SQL.Clear;
qryFuncionarios.SQL.Add(´select * from tbFuncionarios where setor like :fsetor and responsavel like :fresponsavel´);
qryFuncionarios.SQL.ParametByName(´FSETOR´).AsString := dbCombobox1.Text;
qryFuncionarios.SQL.ParametByName(´FRESPONSVAEL´).AsString := dbCombobox2.Text;
qryFuncionarios.Prepare;
qryFuncionarios.Open;



Responder Citar

07/02/2006

Gtts

Estou usando da seguinte maneira.

Form82.Query1.Close;
Form82.Query1.SQL.Clear;
Form82.Query1.Params[0].Value := Form72.DBLookupComboBox1.Text;
Form82.Query1.Params[1].Value := Form72.DBLookupComboBox1.Text;
Form82.Query1.Prepare;
Form82.Query1.Open;
Form82.QuickRep1.Preview;

Opção SQL da Query

Select * from Tb_controle_produtividade_corpo
where setor like :fsetor and Responsavel like :fresponsavel;

Porém, quando clico em listar para gerar o relatório no form de parametros, aparece o seguinte erro:

List index out of bounds(0).

Não entendo o porque, pois tentei usar uma dbcombobox para exibir os dados das tabelas mas deu o mesmo erro, então troquei por uma dblookupcombobox somente com a opção ListSource, mas não adiantou. Alguém será que já teve este problema para me dar umas dicas. Obrigado!


Responder Citar

07/02/2006

Aroldo Zanela

Colega,

Remova a seguinte linha:

Form82.Query1.Close;
[color=red:7c40ab1b2f]Form82.Query1.SQL.Clear; [/color:7c40ab1b2f]
Form82.Query1.Params[0].Value := Form72.DBLookupComboBox1.Text;
Form82.Query1.Params[1].Value := Form72.DBLookupComboBox1.Text;
Form82.Query1.Prepare;
Form82.Query1.Open;
Form82.QuickRep1.Preview;


Responder Citar

07/02/2006

Gtts

Não está dando mais o erro, mais uma vez obrigado Aroldo.


Responder Citar