douradex Posted September 25, 2006 at 11:56 AM Report #52582 Posted September 25, 2006 at 11:56 AM 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
M6 Posted September 25, 2006 at 01:18 PM Report #52592 Posted September 25, 2006 at 01:18 PM 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(*)". 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
douradex Posted September 25, 2006 at 03:37 PM Author Report #52638 Posted September 25, 2006 at 03:37 PM 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.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now