Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com While


caiomor

Pergunta

Olá pessoal td bem ?

seguinte estou com um problema no código que não estou conseguindo resolver de forma alguma.

tenho um formulário que agenda reuniões. e grava estas informações em um bd (em access mesmo) mas estou com um problema. quando um usuário for cadastrar uma reunião o preciso fazer a verificação no bd para confirmar se o horário requisitado esta disponível.

fiz o seguinte código...

Dim rsVerificaDisp, sqldisp, flag

set rsVerificaDisp = Server.CreateObject("ADODB.Recordset")

sqldisp = "SELECT DataReuniao, Sala, HorarioInicial, HorarioFinal FROM TBL_REUNIAO where sala = '"& Request.Form("sala") &"' and DataReuniao = #"& Request.Form("DataReuniao") &"# ORDER BY HorarioInicial"
rsVerificaDisp.Open sqldisp, objDB, 3,2

flag = true

if not rsVerificaDisp.EOF then

    While not rsVerificaDisp.EOF
            if Request.Form("HorarioInicial")>= rsVerificaDisp.Fields("HorarioInicial") and Request.Form("HorarioInicial") < rsVerificaDisp.Fields("HorarioFinal") then
                flag = false
            End if
        rsVerificaDisp.MoveNext
    Wend

End if


if flag = true then
...

Else
....

mas ele não está conseguindo bloquear as reuniões em horários já agendados... não sei onde estou errando. sera que alguém sabe me dizer o problema ?

Editado por caiomor
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Primeiramente bem vindo ao forum...

quanto a sua duvida, bom... posso dar uma sugestao ? :D

Em vez do usuario selecionar um horario pra depois ver no banco se estão disponiveis, por que você não abre o formulario pro usuario já com os horarios disponiveis? Assim ficaria mais facil pra ele visualizar e marcar, porque imagina: Ele escolhe um horario, vai la no banco e volta dizendo "horario indisponivel", dai ele escolhe outra, vai la no banco e mesma mensagem de indisponivel.. se isso acontecer pela terceira vez o usuario vai ficar com saco cheio e provavelmente vai xingar teu sistema.

Ficaria ate mais facil pra você listar uma vez só os horarios disponiveis do que ficar validando toda hora no banco. Alguns sites disponibilizam um combo já com os horarios pra selecionar.

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiramente obrigado andréia por ter respondido meu questionamento.

então o sistema funciona mais ou menos assim...

a primeira pagina que o usuário tem acesso é uma pagina onde mostra todas as reuniões fixas (que acontecem semanalmente no mesmo horário e local). com a opção dele pesquisar todas as reuniões que já foram agendadas em qualquer data escolhida. então primeiramente ele escolhe o dia que ele deseja marcar a reunião, depois de visualizar todas as reuniões agendadas para o dia, aparece a opção de entrar no formulário de agendamento, levando em conta que o usuário já analisou as reuniões e já definiu um lugar pra ele agendar a reunião dele...

Só que como nem tudo é flores está acontecendo bastante o agendamento de reuniões "encavaladas" digamos eu marco na sala 1 das 09:00 as 11:00 vem outra pessoa e consegue marcar na mesma sala das 10:00 as 12:00...

fiz essa lógica para tentar arrumar esse problema mas a mesma não está funcionando.... já fritei meus neurônios tentando entender o porque que não está funcionando mas não tenho mais da onde tirar a solução....

Editado por caiomor
Link para o comentário
Compartilhar em outros sites

  • 0

opa consegui

ficou assim agora o código

flag = true

    Do While not rsVerificaDisp.EOF
        if CDate(Request.Form("HorarioInicial"))>= CDate(rsVerificaDisp.Fields("HorarioInicial")) and CDate(Request.Form("HorarioInicial")) < CDate(rsVerificaDisp.Fields("HorarioFinal")) or  CDate(Request.Form("HorarioFinal"))> CDate(rsVerificaDisp.Fields("HorarioInicial")) and CDate(Request.Form("HorarioFinal")) <= CDate(rsVerificaDisp.Fields("HorarioFinal")) or CDate(Request.Form("HorarioInicial")) < CDate(rsVerificaDisp.Fields("HorarioInicial")) and CDate(Request.Form("HorarioFinal")) > CDate(rsVerificaDisp.Fields("HorarioFinal")) then
            flag = false
        End if 
        rsVerificaDisp.MoveNext
    Loop



if flag = true then
...
else
...

VLW !!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...