Como faz a contagem dos registro da Query Detail em uma relação Master/Detail?

24/04/2023

0

Tenho em uma das telas duas Grids uma para a Query Master e outra para a Query Detail. Eu consigo fazer a contagem dos registro da query Master e da query Detail na primeira vez que elas são abertas, mais das vezes seguintes eu só consigo fazer a contagem da query Master a Detail só retorna 0 mesmo tendo registros.

Eu tentei fazer essa contagem em todos os eventos "After" do componente TFDQuery tento da Query Master como da Query Detail, "AfterExecute", "AfterOpen", "AfterRefresh" "AfterScroll"

if DMP.QueryP03B_.RecordCount <= 0 then
begin
  frmPrincipal.EplblListagenItens.Caption := '0 Itens Listados';
end else
if DMP.QueryP03B_.RecordCount = 1 then
begin
  frmPrincipal.EplblListagenItens.Caption := '1 Item Listado'; 
end else
if DMP.QueryP03A_.RecordCount > 1 then
  frmPrincipal.EplblListagenItens.Caption := IntToStr(DMP.QueryP03B_.RecordCount)+' Itens Listados';


Tem algum modo de fazer a contagem desses registros?
Eduardo Silva

Eduardo Silva

Responder

Post mais votado

24/04/2023

imediatamente após obter o resultset, execute o método FetchAll

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Fetching_Rows_(FireDAC)#Refetching_Rows


Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

24/04/2023

Arthur Heinrich

Além do FetchAll, já citado, o Pascal oferece a estrutura "case", mais fácil de visualizar do que os múltiplos "if" encadeados.

case DMP.QueryP03B_.RecordCount of
  0 : frmPrincipal.EplblListagenItens.Caption := '0 Itens Listados';
  1 : frmPrincipal.EplblListagenItens.Caption := '1 Item Listado'; 
  else
    frmPrincipal.EplblListagenItens.Caption := IntToStr(DMP.QueryP03B_.RecordCount)+' Itens Listados';
  end;


Ou pode fazer simplesmente:

if (DMP.QueryP03B_.RecordCount = 1) then
  frmPrincipal.EplblListagenItens.Caption := '1 Item Listado'; 
else
  frmPrincipal.EplblListagenItens.Caption := IntToStr(DMP.QueryP03B_.RecordCount)+' Itens Listados';

Responder

25/04/2023

Eduardo Silva

imediatamente após obter o resultset, execute o método FetchAll

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Fetching_Rows_(FireDAC)#Refetching_Rows



Testei aqui e não funcionou 😭
Responder

25/04/2023

Eduardo Silva

imediatamente após obter o resultset, execute o método FetchAll

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Fetching_Rows_(FireDAC)#Refetching_Rows



Testei aqui e não funcionou 😭
Será tem temnho que configurar alguma coisa no componente?
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

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