datas, presciso de filtrar as datas em mês 1,2,3...
e aí. blz ? estou numa parte do meu programa onde presciso calcular o caixa do mês, explicando melhor.
mês 01
caixa do dia 1 = 10
caixa do dia 2 = 05
caixa do dia 3 = 35
=saldo 50,00
mês 02
xxxxxxx
xxxxxxx
xxxxxxx
=saldo 300,00
mês 03
xxxxxxx
xxxxxxx
xxxxxxx
= saldo 150,00
e por aí vai, tenho uma tabela onde todos os dias entro com valores referente ao caixa do dia e nesta tabela existe os campos de date, o que eu quero seria isso, um jeito de filtar a tabela que recebeu os valores pelo campo date, e o filtro seria de forma que todos o regidtros dakele mês ficassem na ordem por data. ou seja o filtro teria que determinar todos os meses e os valores decorrente akele mês, más presciso inicialmente desta função função de filtar as datas.
vlw
mês 01
caixa do dia 1 = 10
caixa do dia 2 = 05
caixa do dia 3 = 35
=saldo 50,00
mês 02
xxxxxxx
xxxxxxx
xxxxxxx
=saldo 300,00
mês 03
xxxxxxx
xxxxxxx
xxxxxxx
= saldo 150,00
e por aí vai, tenho uma tabela onde todos os dias entro com valores referente ao caixa do dia e nesta tabela existe os campos de date, o que eu quero seria isso, um jeito de filtar a tabela que recebeu os valores pelo campo date, e o filtro seria de forma que todos o regidtros dakele mês ficassem na ordem por data. ou seja o filtro teria que determinar todos os meses e os valores decorrente akele mês, más presciso inicialmente desta função função de filtar as datas.
vlw
Gigatel
Curtidas 0
Respostas
Darkrme
04/02/2008
Amigo, eu fiz um relatorio... assim..
eu tenho uma tabela... com um campo data_fechamento.. ou seja.. esse campo guarda qnd uma conta foi finalizada... ai eu precisava saber... o saldo atual do mes... qnt teve de entradas.. e qnt teve de saida... e o saldo final do mes...
a minha função ficou mais ou menos assim:
Bom.. eu acho que deve ser mais ou menos isso que vc ta precisando.. ali eu uso a função: DiasPorMes, nessa linha:
Essa função eh a seguinte:
de uma olhada no codigo.. espero ter ajudado =)
eu tenho uma tabela... com um campo data_fechamento.. ou seja.. esse campo guarda qnd uma conta foi finalizada... ai eu precisava saber... o saldo atual do mes... qnt teve de entradas.. e qnt teve de saida... e o saldo final do mes...
a minha função ficou mais ou menos assim:
var saldo_anterior : array[1..12] of real; saldo_atual : array[1..12] of real; entradas : array[1..12] of real; saidas : array[1..12] of real; entrada_anual, saida_anual, saldo_anual : real; i,j, contador : integer; vencimento_inicial, vencimento_final, mes, dia, ano, conta_corrente : String; begin if (Edit1.Text = ´´) or (MaskEdit1.Text = ´ ´) or (ComboBox1.Text = ´Escolha...´) then begin Application.MessageBox(´Você deve digitar o Saldo Anterior e o Ano para gerar o Relatório!´, ´Atenção´,MB_ICONEXCLAMATION+MB_OK); Edit1.SetFocus; end else begin saldo_anterior[1] := StrToInt(Edit1.Text); contador := 1; ano := MaskEdit1.Text; conta_corrente := ComboBox1.Text; for i := 1 to 12 do begin saidas[i] := 0; entradas[i] := 0; if i < 10 then begin mes :=´0´+IntToStr(i); end else begin mes := IntToStr(i); end; dia := IntToStr(DiasPorMes(StrToInt(ano), i)); vencimento_inicial := ´01/´ + mes +´/´ + ano; vencimento_final := dia + ´/´ + mes + ´/´ + ano; dm.QryRelatorioCaixaMensal.Open; dm.QryRelatorioCaixaMensal.Close; dm.QryRelatorioCaixaMensal.SQL.Text := ´SELECT valor_total, pagar_receber, data_vencimento FROM conta_pagar_receber ´ + ´WHERE data_fechamento >= ´´´ + vencimento_inicial + ´´´´ + ´and data_fechamento <= ´´´ + vencimento_final + ´´´ and status = ´´False´´´ + ´ and numero_conta = ´´´ + conta_corrente + ´´´´; dm.QryRelatorioCaixaMensal.Open; if dm.QryRelatorioCaixaMensal.RecordCount > 0 then begin dm.QryRelatorioCaixaMensal.First; for j := 1 to dm.QryRelatorioCaixaMensal.RecordCount do begin if dm.QryRelatorioCaixaMensalpagar_receber.Value = ´Pagar´ then begin saidas[i] := (saidas[i] + dm.QryRelatorioCaixaMensalvalor_total.Value); end else begin entradas[i] := (entradas[i] + dm.QryRelatorioCaixaMensalvalor_total.Value); end; dm.QryRelatorioCaixaMensal.Next; end; end; contador := contador + 1; saldo_atual[i] := (saldo_anterior[i] + entradas[i]) - saidas[i]; if contador < 13 then begin saldo_anterior[contador] := saldo_atual[i]; end; end; entrada_anual := 0; saida_anual := 0; for i := 1 to 12 do begin entrada_anual := entrada_anual + entradas[i]; saida_anual := saida_anual + saidas[i]; end; saldo_anual := entrada_anual - saida_anual;
Bom.. eu acho que deve ser mais ou menos isso que vc ta precisando.. ali eu uso a função: DiasPorMes, nessa linha:
dia := IntToStr(DiasPorMes(StrToInt(ano), i));
Essa função eh a seguinte:
function DiasPorMes(Ayear, AMonth: Integer): Integer; const DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); begin Result := DaysInMonth[AMonth]; if (AMonth = 2) and AnoBiSexto(AYear) then Inc(Result); end;
de uma olhada no codigo.. espero ter ajudado =)
GOSTEI 0
Darkrme
04/02/2008
Suto com a funcao DiasPorMes tem a do ano bisexto tb:
function AnoBiSexto(Ayear: Integer): Boolean; begin // Verifica se o ano é Bi-Sexto Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0)); end;
GOSTEI 0