DJhow Postado Junho 8, 2014 Denunciar Share Postado Junho 8, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 8, 2014 Denunciar Share Postado Junho 8, 2014 coloque o código onde o programa grava a entrada e a saida Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 8, 2014 Autor Denunciar Share Postado Junho 8, 2014 Mas qual codigo eu devo colocar Porque fiz um mas toda vez que se bate a entrada ele sempreacusa atraso E deveria apenas mostrar o atraso do horario de entrada na parte da manha. Vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 8, 2014 Autor Denunciar Share Postado Junho 8, 2014 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; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 8, 2014 Denunciar Share Postado Junho 8, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 8, 2014 Autor Denunciar Share Postado Junho 8, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 8, 2014 Autor Denunciar Share Postado Junho 8, 2014 e como que eu faço para acusar atraso apenas uma vez Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 9, 2014 Denunciar Share Postado Junho 9, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 9, 2014 Autor Denunciar Share Postado Junho 9, 2014 Tentei usar este código mas ele não retornou nenhum resultado; please uma light XD Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 9, 2014 Denunciar Share Postado Junho 9, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 9, 2014 Autor Denunciar Share Postado Junho 9, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 9, 2014 Denunciar Share Postado Junho 9, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 9, 2014 Autor Denunciar Share Postado Junho 9, 2014 usando este código ele acusa apenas uma vez o Atraso :unsure: como se não tivesse o segundo if Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 9, 2014 Denunciar Share Postado Junho 9, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 9, 2014 Autor Denunciar Share Postado Junho 9, 2014 (editado) 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 Junho 9, 2014 por DJhow Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 9, 2014 Denunciar Share Postado Junho 9, 2014 ele acusa o atraso mais só uma vez depois não acusa do p´roximo func... a onde voce esta zerando a variavel cc ? cc := 0; /// sempre que for testar o proximo voce deve zerar a variavel abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 9, 2014 Autor Denunciar Share Postado Junho 9, 2014 tentei coloca esta variavel no final do código mais ela acusa atraso toda vez na entrada e saida a cada vez que passa da atraso Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 9, 2014 Autor Denunciar Share Postado Junho 9, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 9, 2014 Denunciar Share Postado Junho 9, 2014 amigo sem ver o seu código fica dificil te judar veja esse exemplo ( controle de funcionarios ), para ver se te ajuda http://www.jobtecltda.com.br/programacao/delphi/funcionario.zip abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 9, 2014 Autor Denunciar Share Postado Junho 9, 2014 beleza vou zipa e e mandar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 10, 2014 Autor Denunciar Share Postado Junho 10, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 10, 2014 Denunciar Share Postado Junho 10, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 11, 2014 Autor Denunciar Share Postado Junho 11, 2014 Ok vou testar este codigo e te falo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DJhow Postado Junho 11, 2014 Autor Denunciar Share Postado Junho 11, 2014 vlw pela dica ta funfando de boa terminei meu sistema e já comecei outro XD Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Martt Postado Novembro 23, 2014 Denunciar Share Postado Novembro 23, 2014 DJhow, queria saber como você fez esse sistema de entrada/saída. Estou começando agr no delphi e pretendo criar um sistema parecido com o seu, mas seria para uma escola. Aluno passa o cartão = ëntrada"; '' '' novamente = "saída" Como posso fazer isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 28, 2014 Denunciar Share Postado Novembro 28, 2014 veja esse exemplo para te dar uma ideia http://www.planetadelphi.com.br/downloading/2076 abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
DJhow
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
Link para o comentário
Compartilhar em outros sites
25 respostass a esta questão
Posts Recomendados
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.