Fórum Verificar data e hora no banco #430263

03/12/2012

0

Estou fazendo uma aplicação de agenda, e queria saber como faço pra verificar se já existe alguma agenda marcada para o mesmo horário e data.

Grato.
Vander Carlos

Vander Carlos

Responder

Posts

03/12/2012

Deivison Melo

Se for fazer baseado no banco de dados, basta antes executar uma consulta passando as informações que está tentando entrar como cadastro e caso tenha informar que já existe o cadastro...
Responder

Gostei + 0

04/12/2012

Fabianoluizdb

Não sei que banco de dados esta utilizando mas pode fazer uma consulta no banco para saber a data e hora atual do mesmo SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH:MM')DATAHORA FROM DUAL
Responder

Gostei + 0

04/12/2012

Vander Carlos

Não entendi muito bem o que vocês disseram, vou tentar explicar mais detalhado.

Por exemplo, pra localizar se já existe um CPF cadastrado é só utilizar o Locate...

Quando vou cadastrar uma consulta eu escolho:

Nome: Teste
Data 04/12/2012
Hora: 07:00:00
Situação: Agendada

Como eu verifico se na data 04/12/2012 já tem uma consulta marcada para o horário de 07:00:00


Grato.
Responder

Gostei + 0

04/12/2012

Fabianoluizdb

Hum... bom a dica que eu dou é criar uma função para pesquisar se já existe consulta marcada para esse dia e hora para esse cpf, você pode utilizar um locate mesmo passando esses 3 parametros ou se preferir criar um query e passa um select para o banco de dados que se a query esiver vazia é sinal que não tem consulta e no evento exit do campo data você verifico com um bloco if se os dois campos data e hora estão diferentes de vazio se estiver você chama a função para pesquisar se existe consulta, faz o mesmo para o exit do campo hora também.
Responder

Gostei + 0

04/12/2012

Vander Carlos

Não, o CPF foi só o exemplo, não entra não. rsrs
Responder

Gostei + 0

05/12/2012

Vander Carlos

Tentei fazer desse jeito:

 if (tbConsulta.Locate('dataconsulta', edtDataConsulta.Text,[]) and
      tbConsulta.Locate('horaconsulta', cbxHoraConsulta.Text,[])) then begin

      ShowMessage('Já existe uma consulta marcada para este horário, ');
  end;


Eu tentei cadastrar uma consulta assim, mas não deu certo:

Data: 05/12/2012
Hora: 07:00

Não tinha nenhuma consulta marcada para este dia e horário, mas tinha uma para:

Data: 06/12/2012
Hora: 07:00

Só quando eu exclui a do dia 06 eu consegui cadastrar a do dia 05, ou seja, esse verificação ta sendo na tabela toda.

Alguém pode me ajudar ? :(
Responder

Gostei + 0

05/12/2012

Bruno Leandro

qual o tipo dos campos dataconsulta e horaconsulta no seu banco de dados, eu costumo utilizar assim

var
Data: TDateTime;
begin
Data := StrToDate(edtData.text);

Query.Locate( 'dataconsulta', Data, [] );
Responder

Gostei + 0

05/12/2012

Alan Souza

tenta desse modo:

if (tbConsulta.Locate('dataconsulta;horaconsulta', VarArrayOf([edtDataConsulta.Text, cbxHoraConsulta.Text]),[]) then
begin
  ShowMessage('Já existe uma consulta marcada para este horário, ');
end;
Responder

Gostei + 0

06/12/2012

Vander Carlos

Tentei e deu esse erro:

EConvertError with message "0.2500000' is not a valid timestamp
Responder

Gostei + 0

06/12/2012

Claudia Nogueira

Só uma curiosidade. Qual o Banco de Dados?
Responder

Gostei + 0

06/12/2012

Vander Carlos

MySQL.
Responder

Gostei + 0

06/12/2012

Claudia Nogueira

Você está usando Ado:
Tem dois campos, um pra data e um pra hora ou um campo tipo timestamp?
Se for dois, qual o tipo de cada um?
MySQL.
Responder

Gostei + 0

07/12/2012

Vander Carlos

dataconsulta: date
horaconsulta: time
Responder

Gostei + 0

13/12/2012

Vander Carlos

Alguém ?
Responder

Gostei + 0

13/12/2012

William

A função q o colega sugeriu funciona normalmente, verifique como está passando os parâmetros?

tenta desse modo:

if (tbConsulta.Locate('dataconsulta;horaconsulta', VarArrayOf([edtDataConsulta.Text, cbxHoraConsulta.Text]),[]) then
begin
  ShowMessage('Já existe uma consulta marcada para este horário, ');
end;
Responder

Gostei + 0

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

Aceitar