GARANTIR DESCONTO

Fórum Função para pegar primeiro dia do mes #349136

17/11/2007

0

Preciso criar uma rotina que descubra se hoje é o primeiro dia do mes para acrescentar em uma tabela saldo caixa o total do faturamento do mes. Minha unit completa esta abaixo, mais qdo vou compilar o delphi critica um erro na linha q esta em negrito...
Alguém poderia me ajudar?

unit UCaixa;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, Grids, DBGrids, ComCtrls, StdCtrls;

type
TFrmCaixa = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
DBGrid1: TDBGrid;
ScrollBox1: TScrollBox;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
DBGrid2: TDBGrid;
ScrollBox2: TScrollBox;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
ScrollBox3: TScrollBox;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
DBGrid3: TDBGrid;
TabSheet4: TTabSheet;
Label1: TLabel;
lbSaldo: TLabel;
Label2: TLabel;
Label3: TLabel;
DBGrid4: TDBGrid;
DBGrid5: TDBGrid;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private

{ Private declarations }
public
function RetornarPrimeiroDiaMes (Data: TDateTime): TDateTime;
function RetornarUltimoDiaMes (Data1: TDateTime): TDateTime;
{ Public declarations }
end;

var
FrmCaixa: TFrmCaixa;

implementation

uses UDModule;

{$R *.dfm}

procedure TFrmCaixa.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;


function TFrmCaixa.RetornarPrimeiroDiaMes(Data: TDateTime): TDateTime;
var Dia, Mes, Ano: Word;
begin
DecodeDate (Data, Ano, Mes, Dia);
Result := EncodeDate (Ano, Mes, 1);

end;

[b:882b234633]function TFrmCaixa.RetornarUltimoDiaMes(Data1: TDateTime): [/b:882b234633]TDateTime;
var Dia1, Mes1, Ano1: Word;
begin
DecodeDate (Data1, Ano1, Mes1, Dia1);
// Mês fevereiro
// Ano Bissexto
if (Ano1 = 2008) or (Ano1 = 2012) or (Ano1 = 2016) or (Ano1 = 2020) or (Ano1 = 2024) then
begin
if (Mes1 = 2) then
Result := EncodeDate (Ano1, Mes1, 29);
end;
// Demais Anos
if (Ano1 <> 2008) and (Ano1 <> 2012) and (Ano1 <> 2016) and (Ano1 <> 2020) and (Ano1 =2024) then
begin
if (Mes1 = 2) then
Result := EncodeDate (Ano1, Mes1, 28);
end;

// Meses de 30 dias
if (Mes1 = 4) or (Mes1 = 6 ) or (Mes1 = 9 ) or (Mes1 = 11 )then
Result := EncodeDate (Ano1, Mes1, 30);

// Meses de 31 dias
if (Mes1 = 1) or (Mes1 = 3 ) or (Mes1 = 5 ) or (Mes1 = 7 ) or (Mes1 = 8 ) or (Mes1 = 10 ) or (Mes1 = 12 )then
Result := EncodeDate (Ano1, Mes1, 31);
end;

procedure TFrmCaixa.FormShow(Sender: TObject);
var Hoje, Dia: TDateTime;
Mes: Integer;
begin
Hoje := PrimeiroDiaMes(Now);
Dia := Now;
Showmessage(´Primeiro dia do mes ´+Hoje+#13+´Hoje é: ´+Dia);
end;

end.


Lightshine

Lightshine

Responder

Posts

17/11/2007

Vitor Alcantara

Amigo existe duas funções da unit DateUtils que pega o primeiro e o último dia do mes.

Aqui elas EndOfaMonth(Ano,Mes:word):tDateTime e StartOfaMonth(Ano,Mes:word):TDateTime.

Declara DateUtils ai e usa essas duas funções ai.


Responder

Gostei + 0

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

Aceitar