Query QuickReport
06/02/2006
0
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
Posts
06/02/2006
Aroldo Zanela
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?
06/02/2006
Gtts
Sei que tenho que fazer isso, mas como pego os dados que foram escolhidos na dbcombobox, como passo para o relatório?
Obrigado.
06/02/2006
Aroldo Zanela
Por favor, coloque a estrutura das tabelas para que possamos fazer um exemplo mais direcionado.
06/02/2006
Gtts
- 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.
06/02/2006
Gtts
dbcombobox2 - dados da tabela responsavel
07/02/2006
Spooner
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;
07/02/2006
Gtts
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!
07/02/2006
Aroldo Zanela
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;
Clique aqui para fazer login e interagir na Comunidade :)