Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gilnet

Tabela temporária

Recommended Posts

Olá,

 

Preciso retornar de uma tabela de agendamentos todos os horários disponiveis entre um intervalo(ex. na tabela eu tenho cadastrado os seguintes horários 8:00, 10:00, 10:30, 13:00, 13:30, 14:00 - preciso mostrar os horários que não estão cadastrados ex. 8:30, 9:00, 9:30, 11:00, 11:30, 12:00 12:30) então estou usando uma tabela temporaria pra montar os horarios que não estão na tabela agendamento vejam o código:

 

CREATE procedure pHoraMarcada

(

@IDataHora datetime,

@FDataHora datetime

)

as

declare @Dia integer

declare @Mes integer

declare @DiaMes varchar(5)

begin

create table #tbHoraMarcada -- tabela temporária

(

HoraConsulta dateTime,

DiaMes varchar(5)

)

while(@IDataHora <= @FDataHora)

begin

set @IDataHora = dateadd(n,30,@IDataHora) -- o intervalo entre as consulta é de 30 minutos

set @Dia = datepart(dd, @IDataHora)

if(@Dia < 10)

set @DiaMes = '0' + cast(@Dia as varchar) + '/'

else

set @DiaMes = cast(@Dia as varchar) + '/'

set @Mes = datepart(mm, @IDataHora)

if(@Mes < 10)

set @DiaMes = @DiaMes + '0' + cast(@Mes as varchar)

else

set @DiaMes = cast(@DiaMes as varchar)

insert into #tbHoraMarcada

(

HoraConsulta,

DiaMes

)

values

(

@IDataHora,

@DiaMes

)

 

end

select #tbHoraMarcada.HoraConsulta, #tbHoraMarcada.DiaMes, tbFuncionario.Nome,

dbo.nDiaSemana(datepart(dw,HoraConsulta)) as DiaSemana

from #tbHoraMarcada

left outer join tbAgendamento on(tbAgendamento.DataHoraConsulta = #tbHoraMarcada.HoraConsulta)

left outer join tbFuncionario on(tbAgendamento.idDentista = tbFuncionario.idFunc)

left outer join tbFeriado on(tbFeriado.DiaMes = #tbHoraMarcada.DiaMes)

where

tbAgendamento.DataHoraConsulta is null

and

datepart(dw,#tbHoraMarcada.HoraConsulta) between 2 and 6

and

tbFeriado.DiaMes is null

 

end

 

O detalhe é que o nome do dentista, não está aparecendo ouseja a coluna mostra NULL e eu preciso mostrar o nome do dentista.

 

Alguma dica ????

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode criar uma tabela que sirva apenas para criar a lista.

 

crie uma tabela que tenha (apenas) todos os horários que você quer listar. você usa ela para fazer um join e listar todos os horários.

 

com essa tabela, se o cliente quiser que você mude os agendamentos de meia em meia hora para 15 em 15 minutos, é só acrescentar os registros.

 

ela é como se você chumbasse os horários no codigo, mas com um poder de manipulação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.