• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

douradex

Erro em comparação ( IF THEN ELSE)

3 mensagens neste tópico

  o programa deverá servir para registar reservas de autocarros.

  Os autocarros são 2.

  O que se pretende é ter uma variável de controlo ( para dar um erro) para controlar se já existem 2 autocarros ocupados.  Ou seja em caso de nova requisição se o ano, mês, dia já está registado numa reserva da base de dados deveremos comparar  a hora de partida desejada e a hora de chegada que já existe na base de dados. Em caso de a partida da nova reserva ser antes da chegada da antiga  a variável deverá aumentar uma unidade.

  Se a variável tiver o valor 2 então deverá ser informado o utilizador de impossibilidade de requisição.

  O problema é que os IF's não estão a comparar.

' Criar uma ligação para Base de Dados

Set ligacao = Server.CreateObject("ADODB.Connection")

' Abrir Base de Dados Gestão de Viaturas

ligacao.Open "DSN=gestaoViaturas"

' Criar uma instância para Recorset, assim podemos manipular os dados da Base de Dados

Set recligacao = Server.CreateObject("ADODB.Recordset")

' Serve para controlar quantas reservas existem num dia em autocarros -tipo1 -( 36 lugares )

' Serve para controlar quantas reservas existem num dia na carrinha -tipo2 -( 8 lugares )

tipo1 = 0

tipo2 = 0

' Vamos percorrer a tabela para saber quantas reservas existem no dia pretendido

SQLstmt= "SELECT h_chegada,m_chegada FROM reserva WHERE ((a_data=" & Request.Form("ano") & ") and (m_data=" & Request.Form("mes") & ") and (d_data=" & Request.Form("dia") & "))"

'e abre-la

Set recligacao = ligacao.execute(SQLstmt)

while not recligacao.EOF

If Cint(recligacao.Fields("h_chegada")) > hora_partida then

response.write "Chegou comparação 1 <br>"

if visitantes < 8 then

tipo2 = tipo2 + 1

else

tipo1 = tipo1 + 1

end if

else

If ((Cint(recligacao.Fields("h_chegada")) = hora_partida) and ( Cint(recligacao.Fields("m_chegada")) > minuto_partida)) then

response.write "Chegou comparação 2 <br>"

if visitantes < 8 then

tipo2 = tipo2 + 1

else

tipo1 = tipo1 + 1

end if

end if

end if

'response.write " Hora chegada reserva = " & recligacao.Fields("h_chegada") & "h : " & recligacao.Fields("m_chegada") & "m <br>"

'response.write " Hora partida pedido= " & hora_partida & "h : " & minuto_partida & "m <br>" 

recligacao.MoveNext

wend

Se tiverem por aí uma ideia... agradeço.

Sem mais

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Creio que compreendi o que necessitas de fazer mas não compreendi bem como o fazes.

Acho que o problema dos IFs acontecem devido a uma destas duas causas (ou a ambas):

- dados que são retornados da BD não serem bem os que esperas quando fazes as validações.

- variável visitantes não está a ser incializada nem incrementada.

Vê se consegues colocar a BD a fazer esse trabalho por ti, se consegues obter essa contagem através de um "SELECT COUNT(*)".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela resposta.

Mas já encontrei uma solução para o problema.

Na comparação do if para que não houvesse problemas utilizei a conversão Cint em ambos os campos . Deu resultado.

Fica aqui uma sugestão para estas comparações.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora