Fórum Verificar horários de uma tabela #366694

03/12/2008

0

olá pessoal

to com a seguinte situação...

preciso fazer uma verificação em um determinado Horario de uma data...

if dm.ibqLocaliza.Locate(´data´,aux,[]) then
begin
if dm.dbAgendamento.RecordCount > 0 then
bmPosicao := dm.dbAgendamento.GetBookmark;
dm.dbAgendamento.First;

while not dm.dbAgendamento.Eof do
begin
if dm.dbAgendamentoHORARIO.Text < fldHoraInicio.Text then
begin
ShowMessage(´MEnsagem´);
Break;
end;

dm.dbAgendamento.Next;
end;

if dm.dbAgendamento.RecordCount > 0 then
dm.dbAgendamento.GotoBookmark(bmPosicao);}

end;


para localizar a data beleza agora as validações que não acontece e nem sai do while ...


Phoito

Phoito

Responder

Posts

04/12/2008

Facc

está faltando o next, agora não sei pq o break não funciona


Responder

Gostei + 0

04/12/2008

Phoito

não entendi muito bem...

a linha next foi informada antes do end do while ...

devo informar em algum outro lugar?

hum esqueci de mensionar o dataset neste momento esta em append.

obrigado pela atenção [].


Responder

Gostei + 0

04/12/2008

Silveriosepulveda

Não sei se vou ajudar, mas acho que não sai do while por causa do break.
Tente tirá-lo.
E caso não de certo, tente explicar melhor o que precisa.


Responder

Gostei + 0

04/12/2008

Wdrocha

Tenta usar o Exit no lugar do break....


Responder

Gostei + 0

05/12/2008

Phoito

vixi tentei de tudo ... acho melhor falar o que preciso hehehe

estou montando um sistema que faz agendamentos e to precisando de uma
validação para o usuario não fazer conflito de agendamentos.
uso a data , hora inicio e hora termino

usei o seguinte raciocinio ... se alguma data da tabela for igual a data do novo registro a ser incerido

entaum
entra para fazer a validação de horario ...

se o horario inicial do novo registro for maior que o horario inicial da tabela

entra para ultima validação...

se o horario inicial do novo do registro for menor que o horario de termino da tabela entaum o sistema não pode permitir o agendamento.

so meio novo no delphi desculpa pela ignorancia hehehehe
agradeço pela ajuda de todos ....


Responder

Gostei + 0

05/12/2008

Martins

olá pessoal to com a seguinte situação... preciso fazer uma verificação em um determinado Horario de uma data... if dm.ibqLocaliza.Locate(´data´,aux,[]) then begin if dm.dbAgendamento.RecordCount > 0 then bmPosicao := dm.dbAgendamento.GetBookmark; dm.dbAgendamento.First; while not dm.dbAgendamento.Eof do begin if dm.dbAgendamentoHORARIO.Text < fldHoraInicio.Text then begin ShowMessage(´MEnsagem´); Break; end; dm.dbAgendamento.Next; end; if dm.dbAgendamento.RecordCount > 0 then dm.dbAgendamento.GotoBookmark(bmPosicao);} end; para localizar a data beleza agora as validações que não acontece e nem sai do while ...


Tente mais ou menos assim:

if dm.ibqLocaliza.Locate(´data´,aux,[]) then 
begin 
if dm.dbAgendamento.RecordCount > 0 then 
bmPosicao := dm.dbAgendamento.GetBookmark; 
dm.dbAgendamento.First; 

while not dm.dbAgendamento.Eof do 
begin 
if dm.dbAgendamento. FieldByName(´HORARIO´).AsTime < StrToTime(fldHoraInicio.Text) then 
begin 
ShowMessage(´MEnsagem´); 
Break; 
end; 

dm.dbAgendamento.Next; 
end; 

if dm.dbAgendamento.RecordCount > 0 then 
dm.dbAgendamento.GotoBookmark(bmPosicao);} 

end; 


Não testei mais fazendo esta conversão deve funcionar para usar esse operado ´<´.

Boa sorte.


Responder

Gostei + 0

05/12/2008

Phoito

tentei tbm não obtive sucesso....

vou postar a solução que encontrei

ao invez de tentar converter o texto em tempo converti o tempo em texto

criei um aux para todo loop do while receber o campo da tabela de tempo
convertendo para texto .. num como comparou texto com texto mas deu certo...

muito obrigado a todos....


while not dm.dbAgendamento.Eof do 
begin 

aux2 := TimeToStr (dm.dbAgendamentoHORARIO.AsDataTime);

if aux2 < fldHoraInicio.Text then 
begin 
ShowMessage(´MEnsagem´); 
Break; 
end; 

dm.dbAgendamento.Next; 
end; 



Responder

Gostei + 0

05/12/2008

Phoito

alegria de pobre dura pouco mesmo...


testando melhor nao deu certo nada que postei acima ....

realmente ainda estou com problemas de conversão...

:<


Responder

Gostei + 0

08/12/2008

Martins

alegria de pobre dura pouco mesmo... testando melhor nao deu certo nada que postei acima .... realmente ainda estou com problemas de conversão... :<


Ainda vou insistir no código abaixo:

if dm.ibqLocaliza.Locate(´data´,aux,[]) then 
begin 
if dm.dbAgendamento.RecordCount > 0 then 
bmPosicao := dm.dbAgendamento.GetBookmark; 
dm.dbAgendamento.First; 

while not dm.dbAgendamento.Eof do 
begin 
if dm.dbAgendamento. FieldByName(´HORARIO´).AsDateTime < StrToTime(fldHoraInicio.Text) then 
begin 
ShowMessage(´MEnsagem´); 
end; 

dm.dbAgendamento.Next; 
end; 

if dm.dbAgendamento.RecordCount > 0 then 
dm.dbAgendamento.GotoBookmark(bmPosicao);} 

end; 


Tente novamente com esse código.

Boa sorte e bons códigos.


Responder

Gostei + 0

09/12/2008

Phoito

olá Martins,

cara agradeço pela ajuda .

entaum eu tentei este código tbm ... eles estão dando o seguinte erro

1500::00 tentando converter para 15:00

analisando bem descobri que o erro não é da conversão do horario do campo .text

e sim do primeiro registro de comparação do banco

exemplo eu invormo data 10/10/2008 e o horario 16:00 para um novo registro

ele pega um registro no banco 10/10/2008 14:00 o erro apresentado
vai ser de 1400::00

... tem alguma idéia do que seja ?


Responder

Gostei + 0

09/12/2008

Martins

Qual é o banco de dados que vc está utilizando?

Me passe o Banco para que eu e os demais colegas possamos tentar te ajudar.

Boa sorte e bons códigos.


Responder

Gostei + 0

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

Aceitar