Tenho 02 tabelas LOCALIZACAO e LOCALIZACAO_ITENS (Master-Detail) funcionando perfeitamente.
Apesar de pesquisar no Forum não consegui encontrar o que eu queria fazer: é o seguinte:
Quando clico em um registro no DBGridMaster da tabela Pai ele mostra os registros no DBGridDetail
da tabela Filha, mas quero trazer a soma Total para aparecer no Label (lblTotal).
Seguem os códigos que fiz:
function TfrmLocalizacao.SomaLocalizacaoGrid: Currency;
begin
with FDQuerySomaColuna do
begin
Close;
Active:= true;
SQL.Clear;
SQL.Text:= 'SELECT SUM(A.QUANT * A.VALOR_UNITARIO) As Total, B.LOC_CODIGO FROM LOCALIZACAO_ITENS A INNER JOIN LOCALIZACAO B ON (A.LOC_CODIGO = B.LOC_CODIGO) WHERE B.LOC_CODIGO ='''+ IntToStr(DBGrid1.SelectedRows.Count) + '''GROUP BY B.LOC_CODIGO';
Pergunta
alemoraes
Boa tarde
Tenho 02 tabelas LOCALIZACAO e LOCALIZACAO_ITENS (Master-Detail) funcionando perfeitamente.
Apesar de pesquisar no Forum não consegui encontrar o que eu queria fazer: é o seguinte:
Quando clico em um registro no DBGridMaster da tabela Pai ele mostra os registros no DBGridDetail
da tabela Filha, mas quero trazer a soma Total para aparecer no Label (lblTotal).
Seguem os códigos que fiz:
function TfrmLocalizacao.SomaLocalizacaoGrid: Currency;
begin
with FDQuerySomaColuna do
begin
Close;
Active:= true;
SQL.Clear;
SQL.Text:= 'SELECT SUM(A.QUANT * A.VALOR_UNITARIO) As Total, B.LOC_CODIGO FROM LOCALIZACAO_ITENS A INNER JOIN LOCALIZACAO B ON (A.LOC_CODIGO = B.LOC_CODIGO) WHERE B.LOC_CODIGO = '''+ IntToStr(DBGrid1.SelectedRows.Count) + ''' GROUP BY B.LOC_CODIGO';
Open;
Result := FieldByName('Total').AsCurrency;
end;
end;
No evento On CellClick
procedure TfrmLocalizacao.DBGrid1CellClick(Column: TColumn);
begin
if dmDados.tblLocalizacao.State in [dsBrowse] then
lblTotal.Caption:= FormatCurr('R$ #,0.00', SomaLocalizacaoGrid);
end;
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.