Holerith - Contra Cheque
Galera queria uma força, :D tenho uma folha de pagamento que gostaria de quando eu imprimir o contra cheque e tivesse um aniversariante do mês fosse impresso no contra cheque deste funcionario a mensagem de feliz aniversario, porem essa rotina tinha que ser automatica, tipo no banco tenho a data do nascimento do funcionario, quando chegar no mês o sistema pegasse os anivesariantes do mês e imprimisse esta mensagem de feliz aniversario em cada contra cheque.
Desde já agradeço.
Desde já agradeço.
Blue Timber
Curtidas 0
Respostas
Cristiano Alves
30/08/2006
Oi Figueira, basta fazer uma função Booleana Tipo:
Não sei que banco vc usa mas vou simular como se fosse firebird;
function isAniversariante(const pMatricula:Integer): Boolean;
var
qAux: TIBQuery;
begin
qAux := TIBQuery.Create(nil);
try
qAux.DataBase = DataModule1.IBDataBase;
qAux.SQL.Add(´Select Nome from Funcionarios where Matricula = :Matricula and Extract(Month from Data_Nascimento) = :Mes´);
qAux.ParamByName(´Matricula´).asInteger := pMatricula;
qAux.ParamByName(´Mes´).asInteger := StrToInt(FormatDateTime(´mm´,now));
qAux.Open;
Result := not qAux.isEmpty;
qAux.Close;
Finally
FreeAndNil(qAux);
end;
end;
Dai na Rotina de Impressão basta fazer isso:
if isAniversariante(80) then
Imprimir(´Feliz Aniversário´);
Não sei que banco vc usa mas vou simular como se fosse firebird;
function isAniversariante(const pMatricula:Integer): Boolean;
var
qAux: TIBQuery;
begin
qAux := TIBQuery.Create(nil);
try
qAux.DataBase = DataModule1.IBDataBase;
qAux.SQL.Add(´Select Nome from Funcionarios where Matricula = :Matricula and Extract(Month from Data_Nascimento) = :Mes´);
qAux.ParamByName(´Matricula´).asInteger := pMatricula;
qAux.ParamByName(´Mes´).asInteger := StrToInt(FormatDateTime(´mm´,now));
qAux.Open;
Result := not qAux.isEmpty;
qAux.Close;
Finally
FreeAndNil(qAux);
end;
end;
Dai na Rotina de Impressão basta fazer isso:
if isAniversariante(80) then
Imprimir(´Feliz Aniversário´);
GOSTEI 0
Marco Salles
30/08/2006
Pelo que entendi , corrija se eu estiver errado , para cada funcionário , uma instrução sql é executada.
Se for isto , parece não ser uma boa idéia...
Depebdendo do banco de dados do figueira , podemos fazer uma [b:381488530b]case[/b:381488530b] , e retornar um [b:381488530b]campo String [/b:381488530b]que para cada funcionário que fizer aniversário no mes é exibida a expressão : [b:381488530b]Feliz aniversário [/b:381488530b]e para os demais deixamos o [b:381488530b]campo em branco[/b:381488530b].
Depois no relatorio e so acessar o Field Criado , que ele contera a informação
Mas isto vai depender do [b:381488530b]Banco[/b:381488530b]... Se for paradox , por não ter o[b:381488530b] Case [/b:381488530b], acho muito dificil de se conseguir... Talvez Vai ter que fazer muita pesquisa e queimar muita a cuca.
Se for isto , parece não ser uma boa idéia...
Depebdendo do banco de dados do figueira , podemos fazer uma [b:381488530b]case[/b:381488530b] , e retornar um [b:381488530b]campo String [/b:381488530b]que para cada funcionário que fizer aniversário no mes é exibida a expressão : [b:381488530b]Feliz aniversário [/b:381488530b]e para os demais deixamos o [b:381488530b]campo em branco[/b:381488530b].
Depois no relatorio e so acessar o Field Criado , que ele contera a informação
Mas isto vai depender do [b:381488530b]Banco[/b:381488530b]... Se for paradox , por não ter o[b:381488530b] Case [/b:381488530b], acho muito dificil de se conseguir... Talvez Vai ter que fazer muita pesquisa e queimar muita a cuca.
GOSTEI 0
Cristiano Alves
30/08/2006
Pois é Marcos, ele tmb pode colocar um FLAG na Tabela Mestre. E dai verificar esse FLAG.
GOSTEI 0
Blue Timber
30/08/2006
Oi Figueira, basta fazer uma função Booleana Tipo:
Não sei que banco vc usa mas vou simular como se fosse firebird;
function isAniversariante(const pMatricula:Integer): Boolean;
var
qAux: TIBQuery;
begin
qAux := TIBQuery.Create(nil);
try
qAux.DataBase = DataModule1.IBDataBase;
qAux.SQL.Add(´Select Nome from Funcionarios where Matricula = :Matricula and Extract(Month from Data_Nascimento) = :Mes´);
qAux.ParamByName(´Matricula´).asInteger := pMatricula;
qAux.ParamByName(´Mes´).asInteger := StrToInt(FormatDateTime(´mm´,now));
qAux.Open;
Result := not qAux.isEmpty;
qAux.Close;
Finally
FreeAndNil(qAux);
end;
end;
Dai na Rotina de Impressão basta fazer isso:
if isAniversariante(80) then
Imprimir(´Feliz Aniversário´);
Valeu! pela dica, uso o firebird
GOSTEI 0