Verificar horários de uma tabela
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 ...
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
Curtidas 0
Respostas
Facc
03/12/2008
está faltando o next, agora não sei pq o break não funciona
GOSTEI 0
Phoito
03/12/2008
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 [].
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 [].
GOSTEI 0
Silveriosepulveda
03/12/2008
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.
Tente tirá-lo.
E caso não de certo, tente explicar melhor o que precisa.
GOSTEI 0
Wdrocha
03/12/2008
Tenta usar o Exit no lugar do break....
GOSTEI 0
Phoito
03/12/2008
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 ....
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 ....
GOSTEI 0
Martins
03/12/2008
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.
GOSTEI 0
Phoito
03/12/2008
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....
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;
GOSTEI 0
Phoito
03/12/2008
alegria de pobre dura pouco mesmo...
testando melhor nao deu certo nada que postei acima ....
realmente ainda estou com problemas de conversão...
:<
testando melhor nao deu certo nada que postei acima ....
realmente ainda estou com problemas de conversão...
:<
GOSTEI 0
Martins
03/12/2008
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.
GOSTEI 0
Phoito
03/12/2008
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 ?
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 ?
GOSTEI 0
Martins
03/12/2008
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.
Me passe o Banco para que eu e os demais colegas possamos tentar te ajudar.
Boa sorte e bons códigos.
GOSTEI 0