Como faz a contagem dos registro da Query Detail em uma relação Master/Detail?
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"
Tem algum modo de fazer a contagem desses 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
Curtidas 0
Melhor post
Emerson Nascimento
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
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Fetching_Rows_(FireDAC)#Refetching_Rows
GOSTEI 1
Mais Respostas
Arthur Heinrich
24/04/2023
Além do FetchAll, já citado, o Pascal oferece a estrutura "case", mais fácil de visualizar do que os múltiplos "if" encadeados.
Ou pode fazer simplesmente:
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';
GOSTEI 1
Eduardo Silva
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
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Fetching_Rows_(FireDAC)#Refetching_Rows
Testei aqui e não funcionou 😭
GOSTEI 0
Eduardo Silva
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
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Fetching_Rows_(FireDAC)#Refetching_Rows
Testei aqui e não funcionou 😭
GOSTEI 0