Fórum Holerith - Contra Cheque #328270

30/08/2006

0

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.


Blue Timber

Blue Timber

Responder

Posts

30/08/2006

Cristiano Alves

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´);


Responder

Gostei + 0

30/08/2006

Marco Salles

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.


Responder

Gostei + 0

31/08/2006

Cristiano Alves

Pois é Marcos, ele tmb pode colocar um FLAG na Tabela Mestre. E dai verificar esse FLAG.


Responder

Gostei + 0

04/09/2006

Blue Timber

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


Responder

Gostei + 0

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

Aceitar