Fórum Criar comando if else para registro de Horas #596209
11/08/2018
0
Estou com problema para criar um comando em uma aplicaçoa minha, sou novo no delphi, por isso sinto muita dificuldade aina nessa parte, meu problema eh:
fazer um botao para registro de horas. Meu banco é o firebird, e os campos estao como varchar
tenho 4 campos uma de entrada1, saida1, entrada2,saida2, preciso que ao clicar no botao, ele veja qual foi o horario, e lance ele no campo correto.
Desde ja agradeço!!!
Ismael
Curtir tópico
+ 0Post mais votado
12/08/2018
Para isso você precisa de Jornadas.
Segue um exemplo : Rápido, analise e adapte de acordo sua necessidade.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;
type
TForm1 = class(TForm)
Entrada_1: TDateTimePicker;
Saida1: TDateTimePicker;
Entrada_2: TDateTimePicker;
Saida2: TDateTimePicker;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Procedure Carrega_Jornadas_BD(ID_Funcionário:integer);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Var Jornada_Entrada1,
Jornada_Entrada2,
Jornada_Saida1,
Jornada_Saida2:TTime;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
if Entrada_1.Time<>Jornada_Entrada1 then
Entrada_1.Time:=Jornada_Entrada1;
if Saida1.Time<>Jornada_Saida1 then
Saida1.Time:=Jornada_Saida2;
if Entrada_2.Time<>Jornada_Entrada2 then
Entrada_2.Time:=Jornada_Entrada2;
if Saida2.Time<>Jornada_Saida2 then
Saida2.Time:=Jornada_Saida2;
end;
procedure TForm1.Carrega_Jornadas_BD(ID_Funcionário: integer);
begin
// Você precisará de um cadastro de Jornadas e posteriormente enquadrar os funcionários nesta jornada.
// Assim que abrir o form você seleciona um funcionário e faz um select
//Exemplo
Jornada_Entrada1:=StrToTime('08:00:00');
Label1.Caption:=TimeToStr(Jornada_Entrada1);
Jornada_Saida1:=StrToTime('12:00:00');
Label2.Caption:=TimeToStr(Jornada_Saida1);
Jornada_Entrada2:=StrToTime('13:00:00');
Label3.Caption:=TimeToStr(Jornada_Entrada2);
Jornada_Saida2:=StrToTime('18:00:00');
Label4.Caption:=TimeToStr(Jornada_Saida2);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Carrega_Jornadas_BD(1); // Este deve ser o código do funcionário selecionado
end;
end.
Raimundo Pereira
Gostei + 2
Mais Posts
11/08/2018
Ismael
Gostei + 0
12/08/2018
Ismael
a questao da jornada seria nescesaria??
pois o funcionario chegaria vamos supor alem do horario das 08:00, vamos supor que o funcionario chegue as 09:00
ele ira subentender que esse seria o horario de chegada dele ??
Gostei + 0
12/08/2018
Ismael
a questão da jornada seria necessitaria??
pois o funcionario chegaria vamos supor alem do horario das 08:00, vamos supor que o funcionario chegue as 09:00
ele ira subentender que esse seria o horário de chegada dele ??
pois eu preciso que ele pegue a hora do sistema
Gostei + 0
12/08/2018
Raimundo Pereira
Quando o funcionário marca antes o sistema ao gerar o relatório coloca no campo de observação marcação antecipada.
Quando o funcionário marca depois o sistema ao gerar o relatório coloca no campo de observação marcação atrasada.
Isso tudo vem da validação da jornada e marcação, você me diz se é necessário ou não.
Como a questão inicial era if e else nos horários, disponibilizei um pequeno exemplo.
Para que o fórum possa ajudar mais, especifique do que você precisa agora e nos disponibilize uma parte do código para que um de nois possa analisar e contribuir com ideias.
"P2 Técnico a questão da jornada seria necessitaria?? pois o funcionario chegaria vamos supor alem do horario das 08:00, vamos supor que o funcionario chegue as 09:00 ele ira subentender que esse seria o horário de chegada dele ??"
Você precisa especificar o que você precisa:
No caso acima o sistema iria setar sim para 08:00
Para setar para o horário atual, basta realizar o now
Jornada_Entrada1:=(now); // Now é igual o horário de agora.
Gostei + 1
15/08/2018
Ismael
Gostei + 0
15/08/2018
Ismael
Para isso você precisa de Jornadas.
Segue um exemplo : Rápido, analise e adapte de acordo sua necessidade.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;
type
TForm1 = class(TForm)
Entrada_1: TDateTimePicker;
Saida1: TDateTimePicker;
Entrada_2: TDateTimePicker;
Saida2: TDateTimePicker;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Procedure Carrega_Jornadas_BD(ID_Funcionário:integer);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Var Jornada_Entrada1,
Jornada_Entrada2,
Jornada_Saida1,
Jornada_Saida2:TTime;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
if Entrada_1.Time<>Jornada_Entrada1 then
Entrada_1.Time:=Jornada_Entrada1;
if Saida1.Time<>Jornada_Saida1 then
Saida1.Time:=Jornada_Saida2;
if Entrada_2.Time<>Jornada_Entrada2 then
Entrada_2.Time:=Jornada_Entrada2;
if Saida2.Time<>Jornada_Saida2 then
Saida2.Time:=Jornada_Saida2;
end;
procedure TForm1.Carrega_Jornadas_BD(ID_Funcionário: integer);
begin
// Você precisará de um cadastro de Jornadas e posteriormente enquadrar os funcionários nesta jornada.
// Assim que abrir o form você seleciona um funcionário e faz um select
//Exemplo
Jornada_Entrada1:=StrToTime('08:00:00');
Label1.Caption:=TimeToStr(Jornada_Entrada1);
Jornada_Saida1:=StrToTime('12:00:00');
Label2.Caption:=TimeToStr(Jornada_Saida1);
Jornada_Entrada2:=StrToTime('13:00:00');
Label3.Caption:=TimeToStr(Jornada_Entrada2);
Jornada_Saida2:=StrToTime('18:00:00');
Label4.Caption:=TimeToStr(Jornada_Saida2);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Carrega_Jornadas_BD(1); // Este deve ser o código do funcionário selecionado
end;
end.
Gostei + 0
15/08/2018
Ismael
Gostei + 0
15/08/2018
Raimundo Pereira
Gostei + 0
15/08/2018
Ismael
Jornada_Entrada2,
Jornada_Saida1,
Jornada_Saida2:Ttime;
implementation
uses Udm_dados, UHoras;
{$R *.dfm}
procedure TfrmPonto.btPontoClick(Sender: TObject);
begin
if dm_dados.tbl_horasHORAS_ENTRADA_P1.time<>Jornada_Entrada1 then
dm_dados.tbl_horasHORAS_ENTRADA_P1:= Jornada_Entrada1;
showmessage('Bom Dia!/n Otimo trabalho') ;
if dm_dados.tbl_horasHORAS_SAIDA_P1.time<>Jornada_Saida1 then
dm_dados.tbl_horasHORAS_SAIDA_P1:=Jornada_Saida2;
showmessage(' Otimo Almoço') ;
if dm_dados.tbl_horasHORAS_ENTRADA_P2.time<>Jornada_Entrada2 then
dm_dados.tbl_horasHORAS_ENTRADA_P2:=Jornada_Entrada2;
showmessage('Boa Tarde /n Otimo Trabalho') ;
if dm_dados.tbl_horasHORAS_SAIDA_P2.time<>Jornada_Saida2 then
dm_dados.tbl_horasHORAS_SAIDA_P2:=Jornada_Saida2;
showmessage('Otimo Descanso') ;
isso aqui foi o erro que estourou
Checking project dependencies...
Compiling Ponto.dproj (Debug configuration)
[DCC Error] UPonto.pas(82): E2003 Undeclared identifier: 'time'
[DCC Error] UPonto.pas(83): E2010 Incompatible types: 'TIBStringField' and 'TTime'
[DCC Error] UPonto.pas(86): E2003 Undeclared identifier: 'time'
[DCC Error] UPonto.pas(87): E2010 Incompatible types: 'TIBStringField' and 'TTime'
[DCC Error] UPonto.pas(90): E2003 Undeclared identifier: 'time'
[DCC Error] UPonto.pas(91): E2010 Incompatible types: 'TIBStringField' and 'TTime'
[DCC Error] UPonto.pas(94): E2003 Undeclared identifier: 'time'
[DCC Error] UPonto.pas(95): E2010 Incompatible types: 'TIBStringField' and 'TTime'
[DCC Error] UPonto.pas(132): E2250 There is no overloaded version of 'StrToTime' that can be called with these arguments
[DCC Error] UPonto.pas(135): E2250 There is no overloaded version of 'StrToTime' that can be called with these arguments
[DCC Error] UPonto.pas(139): E2250 There is no overloaded version of 'StrToTime' that can be called with these arguments
[DCC Error] UPonto.pas(142): E2250 There is no overloaded version of 'StrToTime' that can be called with these arguments
[DCC Fatal Error] UPrincipal.pas(52): F2063 Could not compile used unit 'UPonto.pas'
Failed
Gostei + 0
16/08/2018
Raimundo Pereira
dm_dados.tbl_horasHORAS_SAIDA_P1.value:=Jornada_Saida2;
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)