Saldo Anterior (Enigma)...

07/02/2003

0

Seguinte

Tenho uma Tabela com os campos: Dia, Mês, Ano, Empenho, Dt_Empenho, Processo, Histórico, Class_Econômica, Valor_Debito, Valor_Credito, Conta_Debito, Conta_Credito e HP(Histórico Padrão).

Tenho uma Form Chamada FrmInforme com Um Edit1 Para o Dia, Um Edit2 Para o Mês e Um Edit3 Para o Ano, um Botão Ok e um Cancelar.
O Usuário digita o Dia, o Mês e o Ano e Clica em Ok: ex:

Dia : 02 Mês: Janeiro Ano: 2003

Codifiquei o botão Ok para realizar a Consulta query assim:

FrmBoletim.Query1.close;
FrmBoletim.Query1.Clear;
FrmBoletim.Query1.Sql.Add (´Select * From Boletim´);
FrmBoletim.Query1.Sql.Add (´where Dia =´);
FrmBoletim.Query1.Sql.Add (FrmInforme.Edit1.Text);
FrmBoletim.Query1.Sql.Add (´and Mes =´);
FrmBoletim.Query1.Sql.Add (QuotedStr (FrmInforme.Edit2.Text));
FrmBoletim.Query1.Sql.Add (´and Ano =´);
FrmBoletim.Query1.Sql.Add (FrmInforme.Edit3.Text);
FrmBoletim.Query1.Sql.Add (´Order By Historico´);
FrmBoletim.Query1.Open;

Criei uma outra Form chamada FrmBoletim com uma DbGrid, um Botão Incluir, Um Botão Alterar, Um Botão Excluir, um Botão Cancelar, uma Query (a mesma Query da consulta), Um DataSource que liga A Query a DbGrid, um Panel para o Saldo Anterior, um Panel para o Total de Itens da Grid, um Panel para o Total a Credito (Que irá somar todos os valores Créditos da Grid), um Panel para o Total a Debito (Que irá somar todos os valores Débitos da Grid) e um Panel para o Total do Dia (Que será o Saldo anterior + (Total Crédito – Total Debito). Estes Totais serão apresentados nas propriedades Caption das Panels.

A Query serve somente para consulta, as operações de alteração, inclusão e exclusão são feitas na tabela, que está em um DataModule com o nome de TblBoletim.

Os Resultados apresentados nas Panels serão de acordo com a Consulta Query Obtida. Ex:

A TblBoletim (Onde são gravados os Registros) possui 09 Registros

os Itens foram incluídas sem ordenação. Suponhamos que o usuário escolhe o dia 1, Mês de Janeiro e Ano 2003, apareceriam na Grid da FrmBoletim o seguinte:

01Jan20035222/0001/01/20031011Giovani Reis25,00162-727-211
01Jan200352/0001/01/2003112Carlos Augusto12,0052-327-207
Na Panel Total Itens : 02
Na Panel Saldo Anterior : que no Caso seria o total do dia 31 de Dezembro de 2002, e se esse dia não constasse na tabela, pegaria-se o total do dia antecessor que tivesse saldo (aí está a dúvida, como Calcular???);
Na Panel Total Credito : 0,00
Na Panel Total Débito : 37,00
Na Panel Total Total do Dia : Saldo Anterior + (Total Crédito-Total Débito) = -37,00


Sendo que essa consulta aparecerá no FrmBoletim, na DbGrid (Que está ligada a esta Query, Através de um Alias). Através dessa Consulta Realizo Operações como : Incluir, Alterar, Excluir e a cada operação a Query é atualizada.

A dúvida é de como Calcular o Saldo Anterior ao dia que se está realizando a Consulta???


Anonymous

Anonymous

Responder

Posts

07/02/2003

Anonymous

Insira na sua Unit:

Var
DataSolicitada : TDateTime;

begin
// após informado o Dia, Mês e Ano pelo usuário faça:
Try
DataSolicitada := EncodeDate(StrToInt(AnoInformado), StrToInt (MesInformado), StrToInt(DiaInformado));
Except
ShowMessage(´Data Informada Inválida, reinforme.´);
DiaInformado.SetFocus;
Abort;
end;

Crie uma nova Query e inclua o seguinte Sql:

Query.SQL.Text :=
´Select sum(Valor_Credito) - Sum(Valor_Debito) SaldoNaData ´ +
´from NomeDaTabela ´ +
´Where Dt_Empenho <= :DataSolicitada´;

Query.ParamByName(´DataSolicitada´).AsDateTime := DataSolicitada;

Query.Open;

// o saldo que você quer estará em QuerySaldoNaData.AsCurrency ;


Responder

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

Aceitar