relatório fast reports via código utilizando dados de duas tabelas(inner join)

20/07/2020

0

Boa tarde amigos
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

Cristiano Parfenovas

Responder

Post mais votado

20/07/2020

boa noite ! qualquer duvida pode chamar!

Roberto Castelani

Roberto Castelani
Responder

Mais Posts

20/07/2020

Roberto Castelani

Boa tarde meu amigo!!

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).
Responder

20/07/2020

Cristiano Parfenovas

Boa tarde meu amigo!!

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
Responder

20/07/2020

Cristiano Parfenovas

Boa noite meu amigo, agradeço muito a sua atenção vou testar aqui, forte abraço boa semana
Responder

21/07/2020

Cristiano Parfenovas

boa noite ! qualquer duvida pode chamar!

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.


Responder

22/07/2020

Roberto Castelani

Então ; TfrxReport e o TfrxDBDataset

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 ...
Responder

23/07/2020

Cristiano Parfenovas

Então ; TfrxReport e o TfrxDBDataset

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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar