Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema de controle de funcionário


DJhow

Pergunta

Eae pessoal tudo bom?

vim com uma duvida que não achei solução nem pela internet

tenho um painel de controle de usuário sendo que ao passar o cartão ele grava tudo certo entrada/saída

mas precisava que se o funcionário chega-se depois da tolerância de atraso ele acusa-se o atraso

do mesmo não precisa avisa quantos minutos atrasado só o aviso mesmo

se alguém puder me ajuda agradeço muito pois iria melhorar muito meu sistema

e se tiver com aviso de quantos minutos esta em atraso seria melhor ainda

muito obrigado a todos

xlaugh.png.pagespeed.ic.SDkxrRteka.png

Link para o comentário
Compartilhar em outros sites

25 respostass a esta questão

Posts Recomendados

  • 0

meu código é esse más não me mostra o atraso

hora1 := StrToTime(Edit3.Text);
hora2 := StrToTime(Edit13.Text);
total := Hora2 + Hora1;
edit14.Text := FormatDateTime('hh:nn:ss',total);
end;
if edit7.Text>=edit14.Text then
begin
MColor:=clRed;
slistbox1.Items.Add(edit2.Text+' '+edit5.Text+' '+slabel1.Caption);
slistbox2.Clear;
slistbox2.Items.Add('Cracha: '+edit4.Text);
slistbox2.Items.Add(edit2.Text);
slistbox2.Items.Add('Funcionário esta Atrasado');
edit1.Clear;
slistbox2.Font.Color:=mColor;
Link para o comentário
Compartilhar em outros sites

  • 0

exemplo

procedure TForm1.Button1Click(Sender: TObject);
var hora_inicio, hora_entra, hora_atraso :TTime;
begin

hora_inicio := strtotime('08:00:00');

hora_entra := strtotime('08:15:00');

hora_atraso := hora_entra - hora_inicio;

showmessage('Tempo de Atraso : '+timetostr( hora_atraso ));

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

poxa cara esse código esta certo mais não resolveu meu problema é que é assim

uso uma edit que me trás o horário de entrada do funcionário e um edit com horário limite e um que soma os dois horários fazendo dar o horário ex: 08:00:00+00:15:00 e devo fazer acusar atraso a partir do resultado e deve me retornar apenas uma vez o atraso.

tentei usa este código mas ele me trás atraso a cada vez que dou a entrada do funcionário.

P.F

Link para o comentário
Compartilhar em outros sites

  • 0

voce deve usar uma variavel de controle ... uma coisa bem simples

voce define uma variavel tipo inteiro ... depois basta incrementar essa variavel sempre que clicar no botão

veja que o código sera executado somente uma vez ... ate que a variavel cc seja zerada novamente

var cc : integer;

procedure TForm1.Button1Click(Sender: TObject);
var hora_inicio, hora_entra, hora_atraso :TTime;
begin
inc (cc);

if cc = 1 then

begin
hora_inicio := strtotime('08:00:00');

hora_entra := strtotime('08:15:00');

hora_atraso := hora_entra - hora_inicio;

showmessage('Tempo de Atraso : '+timetostr( hora_atraso ));

end;

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

não tem erro nenhum

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
cc : integer = 0; // tem que declarar a variavel aqui
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var hora_inicio, hora_entra, hora_atraso :TTime;
begin
inc (cc);

if cc = 1 then

begin
hora_inicio := strtotime('08:00:00');

hora_entra := strtotime('08:15:00');

hora_atraso := hora_entra - hora_inicio;

showmessage('Tempo de Atraso : '+timetostr( hora_atraso ));

end;

end;

end.

obs: isso é apenas um exemplo, para voce ter a idéia de como usar

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

beleza adaptei e deu certo mais como faço para apresentar de cada funcionário que estiver atrasado

tipo se eu passar e estiver atraso e em seguida outro funcionário passar e também estiver em atraso ele me apresenta o atraso de cada um apenas uma vez

Link para o comentário
Compartilhar em outros sites

  • 0

o lance não é somente apresentar na tela o atraso, mas tambem gravar o tempo de atraso .... a rotina para apresentar o atraso é a mesma para todos ( ou seja a cada entrada de dados )

para cada funcionario que voce der entrada no tempo, basta subtrair do tempo inicial .... leve em conta que para cada novo funcionario a variavel cc devera ser zerada e voce devera testar tambem se realmente houve atraso

if cc = 1 then

begin
hora_inicio := strtotime('08:00:00');

hora_entra := strtotime('08:15:00');

hora_atraso := hora_entra - hora_inicio;

if hora_atraso > 0 then
showmessage('Tempo de Atraso : '+timetostr( hora_atraso ));

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

não tem segundo if ... somente esse que vai valer para qualquer entrada de tempo

a logica :

zerar variavel cc

dar entrada de tempo do primeiro funcionario

testar se houve atraso e mostrar mensagem

zerar variavel cc

dar entrada de tempo do segundo funcionario

testar se houve atraso e mostrar mensagem

zerar variavel cc

dar entrada de tempo do terceiro funcionario

testar se houve atraso e mostrar mensagem

assim por diante

OBS: a logica varia de programador para programador ... então voce pode fazer isso de um jeito, mas pode tambem fazer de outro ... varia conforme a experiencia do programador

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
esse é meu codigo
tem algo errado nele?
var
MColor:TColor;
hora_inicio, hora_entra, hora_atraso, hora_test,hora_redu :TTime;
begin
inc (cc);
if cc = 1 then
begin
hora_inicio := strtotime(edit13.Text); //Hora de entrada
hora_entra := strtotime(edit6.Text); //tolerancia de chegada
hora_atraso := hora_entra + hora_inicio; //soma das horas para acusar atraso
hora_redu:= hora_atraso - hora_test; //minutos de atraso
if (hora_atraso>0)then
begin
MColor:=clred;
slistbox2.Items.Add('Funcionário esta Atrasado em '+timetostr( hora_redu ));
slistbox2.Font.Color:=MColor;
end;
end;
end;
ele acusa o atraso mais só uma vez depois não acusa do p´roximo func...
já alterei horario do pc pra ver e nada xs
Editado por DJhow
Link para o comentário
Compartilhar em outros sites

  • 0

ae consegui encaixa o código mais toda entrada que é feita da atraso

ele zera mais tipo a cada funcionário atrasado ele de acusa apenas um atraso de cada se ouver atraso mais se no caso o funcionário já passou e acusou atraso ele não acusa mais pelo resto do dia

só no outro dia

Link para o comentário
Compartilhar em outros sites

  • 0

tive que deixa assim ó

var
MColor:TColor;
hora_inicio, hora_lim, hora_entra, hora_atraso, hora_test,hora_redu :TTime;
begin
hora_inicio := strtotime(edit13.Text); //hora de entrada
hora_entra := strtotime(edit6.Text); //hora de tolerancia
hora_atraso := hora_entra + hora_inicio;
hora_test:=strtotime(slabel1.Caption); //hora do relogio
hora_lim:=strtotime(edit15.Text);
hora_redu:= hora_atraso - hora_test;
if (hora_test>=hora_atraso)and(hora_test<=hora_lim)then
begin
MColor:=clred;
slistbox2.Items.Add('Funcionário esta Atrasado em '+timetostr( hora_redu ));
slistbox2.Font.Color:=MColor;
end;
end;
ai tive que fazer assim o funcionário entra as 08:00 se ele bater o cracha ate as 09:00 acusa atraso
depois que passar da nove não acusa mais o atraso
sera que pode deixar assim?
me da uma dica se não te mando o código do painel de cracha
Link para o comentário
Compartilhar em outros sites

  • 0

tenta assim

procedure TForm1.Button1Click(Sender: TObject);
var
MColor:TColor;
hora_inicio, hora_lim, hora_entra, hora_atraso, hora_test,hora_redu :TTime;
begin

hora_inicio := strtotime(edit13.Text); //hora de inicio 08:00 h

hora_entra := strtotime(edit6.Text); //hora de entrada 08:15 h

hora_atraso := hora_entra - hora_inicio;

hora_test:=strtotime(slabel1.Caption); //hora do relogio

hora_lim:=strtotime(edit15.Text); // hora limite 09:00 h

if (hora_atraso <> 0) and (hora_test >= hora_entra) and (hora_test <= hora_lim) then
begin
MColor:=clred;
slistbox2.Items.Add('Funcionário esta Atrasado em '+timetostr( hora_atraso));
slistbox2.Font.Color:=MColor;
end;

end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...