relatório fast reports via código utilizando dados de duas tabelas(inner join)
20/07/2020
0
Sou novo por aqui e gostaria de uma ajuda por favor no fastreports
Eu estou tentando criar o relatório para visualizar dados de duas tabelas via código utilizando inner join.
No master data coloco um textobject e no codigo fonte não estou conseguindo inserir os dados para trazer do bco.
desde já agradeço, abraços boa semana a todos.
Cristiano Parfenovas
Post mais votado
Mais Posts
20/07/2020
Roberto Castelani
Q_IMPRIMIR.Close;
Q_IMPRIMIR.Open();
Q_IMPRIMIR.SQL.Clear;
Q_IMPRIMIR.SQL.add('''' select '''');
Q_IMPRIMIR.SQL.add('''' s.id_saida_cab,s.id_paciente,s.data_saida,s.data_proenvio,s.nome_user, '''');
Q_IMPRIMIR.SQL.add('''' p.nome_paci,p.endereco_paci,p.estado_paci,p.municipio_paci,p.bairro_paci,p.tel_paci, '''');
Q_IMPRIMIR.SQL.add('''' p.cep_paci,p.conve_paci,e.nome_pro,e.tipo_pro,c.nome_convenio,si.data_saida_item, '''');
Q_IMPRIMIR.SQL.add('''' si.id_produtos_saidaitem,si.data_validade_saida,si.qtd_saida_item,si.F_uso_saida_item '''');
Q_IMPRIMIR.SQL.add('''' from saida_cab S left join paciente p on p.id_paciente = s.id_paciente '''');
Q_IMPRIMIR.SQL.add('''' left join convenio c on c.id_convenio = p.conve_paci '''');
Q_IMPRIMIR.SQL.add('''' left join saida_item SI on SI.id_saida_cab = S.id_saida_cab '''');
Q_IMPRIMIR.SQL.add('''' left join produtos E on E.id_pro = SI.id_produtos_saidaitem '''');
Q_IMPRIMIR.SQL.add('''' WHERE S.ID_SAIDA_CAB = '''''''''''' + editcodigo.text + '''''''''''' '''');
Q_IMPRIMIR.Open();
Q_IMPRIMIR.FetchAll;
DMIMPRESSO.frxformsaida.PrepareReport;
DMIMPRESSO.frxformsaida.ShowPreparedReport;
Então eu acho que você deveria colocar left join por quê se algum campo que você queira agrupar estive vazio ela não irá mostra o registro a não ser que você coloque esses campos em preenchimento obrigatorio pois ai nunca ficará vazio ai inner join retornaria sem problema com os campos todos preenchidos. Já o left join retorna os registros selecionado sem que todos os campos agrupados estive todos preenchidos!
esse Código assim é funcional peguei no meu sistema sendo que ele tem varias tabelas agrupadas só de exemplo ! Estou usando ai um Tfdquery (FireDac).
20/07/2020
Cristiano Parfenovas
Q_IMPRIMIR.Close;
Q_IMPRIMIR.Open();
Q_IMPRIMIR.SQL.Clear;
Q_IMPRIMIR.SQL.add('''' select '''');
Q_IMPRIMIR.SQL.add('''' s.id_saida_cab,s.id_paciente,s.data_saida,s.data_proenvio,s.nome_user, '''');
Q_IMPRIMIR.SQL.add('''' p.nome_paci,p.endereco_paci,p.estado_paci,p.municipio_paci,p.bairro_paci,p.tel_paci, '''');
Q_IMPRIMIR.SQL.add('''' p.cep_paci,p.conve_paci,e.nome_pro,e.tipo_pro,c.nome_convenio,si.data_saida_item, '''');
Q_IMPRIMIR.SQL.add('''' si.id_produtos_saidaitem,si.data_validade_saida,si.qtd_saida_item,si.F_uso_saida_item '''');
Q_IMPRIMIR.SQL.add('''' from saida_cab S left join paciente p on p.id_paciente = s.id_paciente '''');
Q_IMPRIMIR.SQL.add('''' left join convenio c on c.id_convenio = p.conve_paci '''');
Q_IMPRIMIR.SQL.add('''' left join saida_item SI on SI.id_saida_cab = S.id_saida_cab '''');
Q_IMPRIMIR.SQL.add('''' left join produtos E on E.id_pro = SI.id_produtos_saidaitem '''');
Q_IMPRIMIR.SQL.add('''' WHERE S.ID_SAIDA_CAB = '''''''''''' + editcodigo.text + '''''''''''' '''');
Q_IMPRIMIR.Open();
Q_IMPRIMIR.FetchAll;
DMIMPRESSO.frxformsaida.PrepareReport;
DMIMPRESSO.frxformsaida.ShowPreparedReport;
Então eu acho que você deveria colocar left join por quê se algum campo que você queira agrupar estive vazio ela não irá mostra o registro a não ser que você coloque esses campos em preenchimento obrigatorio pois ai nunca ficará vazio ai inner join retornaria sem problema com os campos todos preenchidos. Já o left join retorna os registros selecionado sem que todos os campos agrupados estive todos preenchidos!
esse Código assim é funcional peguei no meu sistema sendo que ele tem varias tabelas agrupadas só de exemplo ! Estou usando ai um Tfdquery (FireDac).[/quote
20/07/2020
Cristiano Parfenovas
21/07/2020
Cristiano Parfenovas
Oi meu amigo boa tarde tudo bem.
Agradeço muito a sua atenção, me desculpe perguntar novamente mais minha dúvida seria assim:
Qual componente utilizo no fast reports para visualizar no relatório os dados da select abaixo
Exemplo:
ibprodutos.close;
ibprodutos.clear;
ibprodutos.sql.add('select nome from tblprodutos');
ibprodutos.open;
Qual componente associo aqui do fastreports para abrir no relatorio := ibprodutos.fieldbyname('nome').asstring;
agradeço demais sua ajuda
uma ótima tarde pra vc.
22/07/2020
Roberto Castelani
Você vai aponta sua query (ibprodutos) para o componete TfrxDBDataset pela propriedade Dataset depois você vai abrir o TfrxReport -> Report -> Data ai vai aparecer o TfrxDbDataset marque a caixinha selecionado e aperte OK.
ai no painel do lado direito vai trazer seus campos que esta no seu Sql .
Daí para frente você vai mexendo e descobrindo como vai o relátorio do seu gosto , não é dificil fazer não !
Abraço ...
23/07/2020
Cristiano Parfenovas
Você vai aponta sua query (ibprodutos) para o componete TfrxDBDataset pela propriedade Dataset depois você vai abrir o TfrxReport -> Report -> Data ai vai aparecer o TfrxDbDataset marque a caixinha selecionado e aperte OK.
ai no painel do lado direito vai trazer seus campos que esta no seu Sql .
Daí para frente você vai mexendo e descobrindo como vai o relátorio do seu gosto , não é dificil fazer não !
Abraço ...
Bom dia tudo bem
Tá jóia vou verificar aqui, obrigado meu amigo abraços.
Clique aqui para fazer login e interagir na Comunidade :)
Inserção de url