Criar comando if else para registro de Horas
Daew galera
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!!!
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
Curtidas 0
Melhor post
Raimundo Pereira
12/08/2018
Bom dia!
Para isso você precisa de Jornadas.
Segue um exemplo : Rápido, analise e adapte de acordo sua necessidade.
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 2
Mais Respostas
Ismael
11/08/2018
Acredito que terá que fazer uma pesquisa pelo código do funcionário, mais a data tinha mas como fazer eu não sei.
GOSTEI 0
Ismael
11/08/2018
P2 Técnico
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 ??
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
Ismael
11/08/2018
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 ??
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
Raimundo Pereira
11/08/2018
Geralmente os relatórios de pontos, quando é impresso pelo RH, existe um campo observação.
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.
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
Ismael
11/08/2018
as jornadas de trabalho eu não poderia criar direto na tabela do fucionario? ou faço uma tabela separada ?
GOSTEI 0
Ismael
11/08/2018
Bom dia!
Para isso você precisa de Jornadas.
Segue um exemplo : Rápido, analise e adapte de acordo sua necessidade.
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
Ismael
11/08/2018
Me passa um contato seu de Skype , dai podemos trocar umas ideias melhor
GOSTEI 0
Raimundo Pereira
11/08/2018
SAC@P2TECNICO.COM.BR
GOSTEI 0
Ismael
11/08/2018
Var Jornada_Entrada1,
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
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
Raimundo Pereira
11/08/2018
if dm_dados.tbl_horasHORAS_SAIDA_P1.time<>Jornada_Saida1 then
dm_dados.tbl_horasHORAS_SAIDA_P1.value:=Jornada_Saida2;
dm_dados.tbl_horasHORAS_SAIDA_P1.value:=Jornada_Saida2;
GOSTEI 1