HORARIO - BANCO DE DADOS

CELSOMIRANDA 30/05/2010 10:36:21
#343211
Bom Dia Turma !!

Entao estou com um pequeno problema, estou desenvolvendo um sistema para uma clinica,
estou com um problema na hora de marcar as consultas,

ex: marcar uma consulta de 13:15 as 14:15 no dia 25/05/2010
mas ja existe uma consulta cadastrada no banco de dados com os seguintes dados 13:30 as 14:30 no dia 25/05/2010
entao o sistema teria que informar que este horario nao esta disponivel.

alguem tem alguma ideia de com posso realizar este tipo de açao.
como faço para ele nao aceitar este problema

Desde ja agradeço a atençao de todos.
TECLA 30/05/2010 10:48:52
#343213
Resposta escolhida
1. Qual é o banco de dados?
2. Qual é a estrutura da tabela (campos e tipos de dados respectivamente)?
CELSOMIRANDA 30/05/2010 10:53:08
#343214
Bom Dia Tecla !!

Entao, o banco de dados e access 2003 - os campos estao no formato de data/hora (Hora abreviada)
Ex.

cliente / data-consulta / horario-inicio / horario-fim
TECLA 30/05/2010 11:10:23
#343217
Veja se isso te ajuda:

SELECT *
FROM tbAgenda
WHERE [data-consulta] = #05/01/2010#
AND [horario-inicio] = #15:00#
CELSOMIRANDA 30/05/2010 11:21:21
#343219
Tecla, entao este codigo eu ja tentei...

e porque pensa o seguinte.

eu vou cadastrar um horario que seja das 15:30 as 16:30. mas no banco pode possuir um que seja das 15:45 as 16:45, entao fazendo este codigo ele nao iria funcionar. pois os horarios sao diferentes, mas o periodo de tempo entra em conflito com o outro horario registrado.

desde ja agradeço a atençao
CELSOMIRANDA 30/05/2010 11:45:45
#343220
Me ajudem !!!
WILLVIDAL 30/05/2010 12:32:48
#343222
Cara, eu já fiz um sistema de clínica, eu tinha os horários cadastrados numa tabela tipo:

HORARIO
CODIGO HORA
1 13:00
2 13:30
3 14:00

e depois tinha a tabela consulta

CONSULTA
CODIGO | COD_HORA | COD_CLIENTE
1 3 5

e na tela de marcar os horários pra consulta, e trazia todas as horas cadastradas em uma grid
dando um select na tabela consulta para pintar de outra cor a célula em que a hora já estava marcada,
assim um horário disponível ficava em verde e um marcado, em vermelho e ja dava pra saber só de quais os horários,
fica como se fosse uma agenda mesmo. Na hora de marcar o horário dava dois cliques na na céclula onde a hora estava livre
e ja mandava pra outra tela para poder informar o cliente.



LUIS.HERRERA 30/05/2010 13:37:37
#343224
Celso pelo que vi o problema está na estrutura, pois o que você tem que marcar é o horário de entrada e não o perído. Geralmente as clínicas tem um tempo de consulta que pode variar, ex:15, 20, 30 min ou 1 hora (dentárias geralmente). Assim você não marca a hora de entrada e saída, mas somente de entrada, e com o tempo definido de consulta, o próximo é outra hora de entrada.

Na sua estrurua, você tem que avaliar o mádico que atenderá, pois pode ter vários profissionais e não poderia deixar isso fora da marcação, pois poderá ter vários clientes com o mesmo horário de consulta, mas com médicos diferentes.

Assim se tiver uma tabela tipo:
Consultas
ID
IDMédico
IDPaciente
Data
HorárioInicio
Situação(Realizada, Cancelada, etc...)

Ficaria mais símples, pois ao tentar outra marcação poderia checar médido + Data + horário e saber se já existe marcação.
TECLA 30/05/2010 14:32:29
#343235
Citação:

:
Tecla, entao este codigo eu ja tentei...

e porque pensa o seguinte.

eu vou cadastrar um horario que seja das 15:30 as 16:30. mas no banco pode possuir um que seja das 15:45 as 16:45, entao fazendo este codigo ele nao iria funcionar.


OK, então explique a regra para a situação acima.
O próximo horário seria após as 16:30?
MARCELO.TREZE 30/05/2010 17:20:51
#343260
colega basa fazer duas consultas dentro de um intervalo de horas

como fazer a verificação

vc tem uma data/hora inicial e uma data/hora fina/, supondo que vc possua um campo text de nome Data, e outros dois Horaini e hora fim

então

SQL = SQL & [Ô]SELECT * FROM tabela WHERE [Ô]
SQL = SQL & [Ô](horaini > [Ô] & txtHoraini & [Ô] and horaini < [Ô]& txtHoraFim & [Ô]) or [Ô]
SQL = SQL & [Ô](horafim > [Ô] & txtHorafim & [Ô] and horafim < [Ô] & txthoraFim & [Ô]) and data = [ô][Ô] & txtdata & [Ô][ô][Ô]

Set RS = CNN.Execute(SQL)

If (RS.EOF = True And RS.BOF = True) Then
msgbox [Ô]pode gravar[Ô]
Else
msgbox [Ô]não pode gravar já tem horário[Ô]
End If


Tópico encerrado , respostas não são mais permitidas