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

[Resolvido] condicionais


Notax

Pergunta

pessoal tenho estas três condicionais abaixo...

Quando apenas uma delas (qualquer. uma) é posta no script funciona perfeito... mas quando coloco as três juntas só a terceira funciona mesmo quando as opções são para as outras funcionarem... onde será que tá o meu erro?

'primeira condicional

if chcRefinar = "ON" then
qdrSituacao = 1
call geral_com_refino()
ElseIf chcRefinar = "" then
call geral_sem_refino()
end if

'segunda condicional

If chcRefinar = "ON" then
qdrSituacao = 2
call pagas_com_refino()
ElseIf chcRefinar = "" then
call pagas_sem_refino()
end if

'terceira condicional

if chcRefinar = "ON" then
qdrSituacao = 3
call nao_pagas_com_refino()
ElseIf chcRefinar = "" then
call nao_pagas_sem_refino()
end if

[]'s Notax

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Fala Kuroi, beleza?

Então...

vou botar o codigo completo aqui que eu acho que vai facilitar... mas assim:

essas subs que não funcionam:

geral_com_refino() deveria consultar independente da palavra no campo pago, mas atraves de uma ou mais palavras especificas no campo tipo.

geral_sem_refino() independente do pago e independente do tipo...

pagas_com_refino() só as pagas (palavra sim coluna pago) e só os tipos selecionados no form.

pagas_sem_refino() só as pagas (palavra sim coluna pago) independente do tipo.

as que funcionam é só essas aqui:

call nao_pagas_com_refino() só as não pagas (palavra não coluna pago) e só os tipos selecionados no form.

call nao_pagas_sem_refino() só as não pagas (palavra não coluna pago) independente do tipo.

o código é meio grandão... mas segue na íntegra:

<%
Option Explicit
Response.Expires = 0
Dim objConn, objRs, strQuery, ComandoSQL, Conexao, objrs2, strsql2, valor_resultado, ddi, mmi, aai, datai, ddf, mmf, aaf, dataf, CmbTipo, sql_Tipo, array_tipo, i, tipo
Dim strConnection, chcRefinar, qdrSituacao, sim, não, geral, ComandoSQL1
chcRefinar = request.form ("chcRefinar")
qdrSituacao = request.form ("qdrSituacao")


if chcRefinar = "ON" then
qdrSituacao = 1
call geral_com_refino()
ElseIf chcRefinar = "" then
call geral_sem_refino()
end if

If chcRefinar = "ON" then
qdrSituacao = 2
call pagas_com_refino()
ElseIf chcRefinar = "" then
call pagas_sem_refino()
end if

if chcRefinar = "ON" then
qdrSituacao = 3
call nao_pagas_com_refino()
ElseIf chcRefinar = "" then
call nao_pagas_sem_refino()
end if


%>

<%sub geral_com_refino()
ddi = request.form ("txtddi")
mmi = request.form ("txtmmi")
aai = request.form ("txtaai")
datai = (ddi &"/"& mmi &"/"& aai)
datai = Cdate(day (datai) &"/"& month (datai) &"/"& year (datai))

ddf = request.form ("txtddf")
mmf = request.form ("txtmmf")
aaf = request.form ("txtaaf")
dataf = (ddf &"/"& mmf &"/"& aaf)
dataf = Cdate(day (dataf) &"/"& month (dataf) &"/"& year (dataf))

cmbTipo = Trim(Request.Form("cmbTipo"))
sql_tipo = ""
If cmbTipo <> "" Then
     sql_tipo = "("
      array_tipo = Split(cmbTipo, ",")
     For i = 0 To UBound(array_tipo)
          If i <> UBound(array_tipo) Then
               sql_tipo = sql_tipo & "tipo = '" & Trim(array_tipo(i)) & "' OR "
          Else
               sql_tipo = sql_tipo & "tipo = '" & Trim(array_tipo(i)) & "'"
          End If
     Next
     sql_tipo = sql_tipo & ")"
End If

Session.LCID=1033
ComandoSQL = "select * from a_pagar where " & sql_tipo &  " and DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# ORDER BY DATA ASC"
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
set objrs2 = server.createobject("adodb.recordset")
strsql2 = "select SUM(valor) as tvalor from a_pagar WHERE " & sql_tipo &  " and DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "#"
Session.LCID=1046 
objrs2.open strsql2, objconn, 3, 2
valor_resultado = objrs2 ("tvalor")
Set ObjRs = objConn.Execute(ComandoSQL)
end sub%>


<%sub geral_sem_refino()
ddi = request.form ("txtddi")
mmi = request.form ("txtmmi")
aai = request.form ("txtaai")
datai = (ddi &"/"& mmi &"/"& aai)
datai = Cdate(day (datai) &"/"& month (datai) &"/"& year (datai))

ddf = request.form ("txtddf")
mmf = request.form ("txtmmf")
aaf = request.form ("txtaaf")
dataf = (ddf &"/"& mmf &"/"& aaf)
dataf = Cdate(day (dataf) &"/"& month (dataf) &"/"& year (dataf))

Session.LCID=1033
ComandoSQL = "SELECT * FROM a_pagar WHERE DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# ORDER BY DATA ASC"
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
strQuery = "SELECT * FROM a_pagar"
Set ObjRs = objConn.Execute(ComandoSQL)
set objrs2 = server.createobject("adodb.recordset")
strsql2 = "select SUM(valor) as tvalor from a_pagar WHERE DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "#"
Session.LCID=1046 
objrs2.open strsql2, objconn, 3, 2
valor_resultado = objrs2 ("tvalor")
end sub%>

<%sub pagas_sem_refino()
ddi = request.form ("txtddi")
mmi = request.form ("txtmmi")
aai = request.form ("txtaai")
datai = (ddi &"/"& mmi &"/"& aai)
datai = Cdate(day (datai) &"/"& month (datai) &"/"& year (datai))

ddf = request.form ("txtddf")
mmf = request.form ("txtmmf")
aaf = request.form ("txtaaf")
dataf = (ddf &"/"& mmf &"/"& aaf)
dataf = Cdate(day (dataf) &"/"& month (dataf) &"/"& year (dataf))

Session.LCID=1033
ComandoSQL = "SELECT * FROM a_pagar WHERE DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# and pago = 'SIM' ORDER BY DATA ASC"
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
strQuery = "SELECT * FROM a_pagar"
Set ObjRs = objConn.Execute(ComandoSQL)
set objrs2 = server.createobject("adodb.recordset")
strsql2 = "select SUM(valor) as tvalor from a_pagar WHERE DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# and pago = 'SIM'"
Session.LCID=1046 
objrs2.open strsql2, objconn, 3, 2
valor_resultado = objrs2 ("tvalor")
end sub%>




<%sub pagas_com_refino()
ddi = request.form ("txtddi")
mmi = request.form ("txtmmi")
aai = request.form ("txtaai")
datai = (ddi &"/"& mmi &"/"& aai)
datai = Cdate(day (datai) &"/"& month (datai) &"/"& year (datai))

ddf = request.form ("txtddf")
mmf = request.form ("txtmmf")
aaf = request.form ("txtaaf")
dataf = (ddf &"/"& mmf &"/"& aaf)
dataf = Cdate(day (dataf) &"/"& month (dataf) &"/"& year (dataf))

cmbTipo = Trim(Request.Form("cmbTipo"))
sql_tipo = ""
If cmbTipo <> "" Then
     sql_tipo = "("
      array_tipo = Split(cmbTipo, ",")
     For i = 0 To UBound(array_tipo)
          If i <> UBound(array_tipo) Then
               sql_tipo = sql_tipo & "tipo = '" & Trim(array_tipo(i)) & "' OR "
          Else
               sql_tipo = sql_tipo & "tipo = '" & Trim(array_tipo(i)) & "'"
          End If
     Next
     sql_tipo = sql_tipo & ")"
End If

Session.LCID=1033
ComandoSQL = "select * from a_pagar where " & sql_tipo & " and DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# and pago = 'SIM' ORDER BY DATA ASC" 
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
set objrs2 = server.createobject("adodb.recordset")
strsql2 = "select SUM(valor) as tvalor from a_pagar WHERE " & sql_tipo &  " and DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# and pago = 'SIM'"
Session.LCID=1046 
objrs2.open strsql2, objconn, 3, 2
valor_resultado = objrs2 ("tvalor")
Set ObjRs = objConn.Execute(ComandoSQL)
end sub%>




<%sub nao_pagas_sem_refino()
ddi = request.form ("txtddi")
mmi = request.form ("txtmmi")
aai = request.form ("txtaai")
datai = (ddi &"/"& mmi &"/"& aai)
datai = Cdate(day (datai) &"/"& month (datai) &"/"& year (datai))

ddf = request.form ("txtddf")
mmf = request.form ("txtmmf")
aaf = request.form ("txtaaf")
dataf = (ddf &"/"& mmf &"/"& aaf)
dataf = Cdate(day (dataf) &"/"& month (dataf) &"/"& year (dataf))

Session.LCID=1033
ComandoSQL = "SELECT * FROM a_pagar WHERE DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# and pago = 'não' ORDER BY DATA ASC"
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
strQuery = "SELECT * FROM a_pagar"
Set ObjRs = objConn.Execute(ComandoSQL)
set objrs2 = server.createobject("adodb.recordset")
strsql2 = "select SUM(valor) as tvalor from a_pagar WHERE DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# and pago = 'não'"
Session.LCID=1046 
objrs2.open strsql2, objconn, 3, 2
valor_resultado = objrs2 ("tvalor")
end sub%>



<%sub nao_pagas_com_refino()
ddi = request.form ("txtddi")
mmi = request.form ("txtmmi")
aai = request.form ("txtaai")
datai = (ddi &"/"& mmi &"/"& aai)
datai = Cdate(day (datai) &"/"& month (datai) &"/"& year (datai))

ddf = request.form ("txtddf")
mmf = request.form ("txtmmf")
aaf = request.form ("txtaaf")
dataf = (ddf &"/"& mmf &"/"& aaf)
dataf = Cdate(day (dataf) &"/"& month (dataf) &"/"& year (dataf))

cmbTipo = Trim(Request.Form("cmbTipo"))
sql_tipo = ""
If cmbTipo <> "" Then
     sql_tipo = "("
      array_tipo = Split(cmbTipo, ",")
     For i = 0 To UBound(array_tipo)
          If i <> UBound(array_tipo) Then
               sql_tipo = sql_tipo & "tipo = '" & Trim(array_tipo(i)) & "' OR "
          Else
               sql_tipo = sql_tipo & "tipo = '" & Trim(array_tipo(i)) & "'"
          End If
     Next
     sql_tipo = sql_tipo & ")"
End If

Session.LCID=1033
ComandoSQL = "select * from a_pagar where " & sql_tipo & " and DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# and pago = 'não' ORDER BY DATA ASC" 
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
set objrs2 = server.createobject("adodb.recordset")
strsql2 = "select SUM(valor) as tvalor from a_pagar WHERE " & sql_tipo &  " and DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# and pago = 'não' "
Session.LCID=1046 
objrs2.open strsql2, objconn, 3, 2
valor_resultado = objrs2 ("tvalor")
Set ObjRs = objConn.Execute(ComandoSQL)
end sub%>




<html>
<head>
<title></title>
</head>
<body bgcolor="#FFFFFF">
<div align="center" style="width: 756; height: 119"> 
  <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif"><em><strong>Contas 
    a <font color="#FF0000">Pagar</font> (consulta)</strong></em></font></p>
  <table width="902" border="0" cellspacing="0" cellpadding="0" height="1">
    <tr>
      <td width="958" valign="top" height="136"> 
        <table border="0" cellpadding="0" cellspacing="0" width="902">
          <tr bgcolor="ffffff"> 
            <td width="902" colspan="3">
              <table width="100%" border="0" cellspacing="2" cellpadding="2">
                            </table>
              
            </td>
          </tr>
          <tr> 
            <td colspan="3"> 
              <form method="GET" action="a_pagar_consulta.asp">
                <table width="902" border="0" cellspacing="0" cellpadding="0" height="1">
                  <tr> 
                    <td height="1" align="center" width="952"> 
                      <table border="0" width="950" height="8" cellpadding="2">
                        <tr bgcolor="#0099FF"> 
                          <td width="97" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">DATA</font></b></font></td>
                          <td width="284" height="1" align="center"> <font size="1" color="FFFFFF"><b></b> 
                            </font> <font size="1" color="FFFFFF"><b><font face="Verdana">HIST&Oacute;RICO</font></b> 
                            </font></td>
                          <td width="249" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">TIPO</font></b></font></td>
                          <td width="144" align="center"><font size="1" color="FFFFFF"><b><font face="Verdana">VALOR</font></b> 
                            </font></td>
                          <td width="144" height="1" align="center"><font color="FFFFFF" size="1" face="Verdana"><b>Pago?</b> 
                            </font></td>
                        </tr>
                        <%While Not objRS.EOF %>
                        <tr bgcolor="#FFFFFF"> 
                          <td width="97" height="1" align="center" style="border-style: solid; border-width: 2"> 
                            <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write objRS("data")%>
                              </font> </b></font></div></td>
                          <td height="1" align="center" style="border-style: solid; border-width: 2"> 
                            <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              </font> </b></font> <font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("historico")%>
                              </font></b></font></div></td>
                          <td width="249" height="1" align="center" style="border-style: solid; border-width: 2"> 
                            <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("tipo")%></a>
                              </font></b></font></div></td>
                          <td width="144" align="center" style="border-style: solid; border-width: 2"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000">
                            <%Response.write formatnumber(objRS("valor"),2)%>
                            </font></b></font></td>
                          <td width="144" height="1" align="center" style="border-style: solid; border-width: 2"> 
                            <div align="center"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write objRS("pago")%>
                              </font></b></font></div></td>
                        </tr>
                        <%
  'Movendo para o proximo registro
  objRS.MoveNext
  Wend
    %>
                      </table>
                    </td>
                  </tr>
                </table>
              </form>
            </td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
  <b>Valor total à pagar para o Período Consultado = R$ 
  <%  Response.Write(objrs2.fields("tvalor").value)%>
  </B> 
  <%  
  objRs.close
  objConn.close
  Set objRs = Nothing
  Set objConn = Nothing
  %>
</div>
</body>
</html>

[]'s Notax.

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

  • 0

mas então, ele ta chamando sim as funcoes, só que ele não vai mostrar nd, se você chamar uma depois da outra sem escrever nd.

nota q você chama uma funcao e poe o select no objRS. logo depois você chama outra e poe outro select no mesmo objRS e depois outra. ai quando chega no final você mostra os dados do objRS. é claro q ele só vai mostrar da ultima, já q depois q você faz um novo select, o antigo é perdido.

Link para o comentário
Compartilhar em outros sites

  • 0

Uhm... entendi Kuroi... mas daí logo pensei que a solução seria então de nominar diferentes selects para cada função... mas tão logo tb percebi que isso não adianta... que ele continua chamando sempre o último select...

o que eu acho estranho é que se eu colocar apenas assim:

if chcRefinar = "ON" then

qdrSituacao = 1

call geral_com_refino()

ElseIf chcRefinar = "" then

call geral_sem_refino()

end if

mesmo com os dois subs tendo o mesmo select cada um com sua peculiaridade funciona legal!

então continuo na dúvida de como solucionar isso... será que pode dar mais uma mão?

valeu a força.

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0

Então... eu tentei isso mas tb não funcionou... não da erro mas tb não retorna nenhum dado...

vou explicar melhor por que tenho quase certeza que o erro está nas condicionais... o caso é assim:

são seis subs:

sub 1()

sub 2()

sub 3()

sub 4()

sub 5()

sub 6()

tenho então no form que irá chamar as subs um chcBox e 3 radiobuttons...

Significa que se o checkbox ta marcado e o radiobutton 1 selecionado

vou pra sub 1

se o checkbox ta desmarcado mas o radio 1 continua marcado vai pra sub dois e assim por diante... ou seja, pra cada radiobutton eu tenho duas opções... duas condições...

eu sei que to teimando... mas o que eu não consigo entender é que se eu coloco apenas uma daquelas condicionais, tipo assim:

if chcRefinar = "ON" then
qdrSituacao = 1
call geral_com_refino()
ElseIf chcRefinar = "" then
call geral_sem_refino()
end if
e deixo no codigo apenas as subs: geral_com_refino geral_sem_refino funciona perfeito... então me parece que o erro está nas condicionais que chamam as subs! sei lá... eu acho que meu erro está nos ifs e elseifs... porque se funciona com duas subs deveria funcionar com seis tb... não? ainda para continuar justificando o porque da minha dúvida... quando eu coloco as condicionais assim:
if chcRefinar = "ON" then
elseif qdrSituacao = 1 then
call geral_com_refino()
elseif qdrSituacao = 2 then
call pagas_com_refino()
elseif qdrSituacao = 3 then
call nao_pagas_com_refino()
end if
If chcRefinar = "" then
elseif qdrSituacao = 1 then
call geral_sem_refino()
elseif qdrSituacao = 2 then
call pagas_sem_refino()
elseif qdrSituacao = 3 then
call nao_pagas_sem_refino()
end if

todas elas funcionam... no entanto um fenomeno muito estranho acontece:

logo que eu abro o form o checkbox está desmarcado... então tento selecionar as radios e ver o que dá... e não dá nada... não aparece nenhum registro...

daí eu MARCO o checkbox e vou testando as radiobuttons... daí o resultado é como se o checkbox tivesse DESMARCADO!

daí eu DESMARCO denovo o checkbox e testo as radiobuttons daí o resultado apresenta como se o checkBox estivesse MARCADO!

O chcekbox está denominado como chcRefinar e os RadioButtons como qdrSituacao!

MUITO ESTRANHO... NÃO ACHAM???

foi mau aí pelo incomodo... mas se rolar mais uma ajuda agradeço!

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

  • 0
mas então, ele ta chamando sim as funcoes, só que ele não vai mostrar nd, se você chamar uma depois da outra sem escrever nd.

nota q você chama uma funcao e poe o select no objRS. logo depois você chama outra e poe outro select no mesmo objRS e depois outra. ai quando chega no final você mostra os dados do objRS. é claro q ele só vai mostrar da ultima, já q depois q você faz um novo select, o antigo é perdido.

Certamente o kuroi tem razão sobre o recordset, e parece que o problema é por aí mesmo. Mas...

Notax, não entendi o que você quer dizer exatamente com

todas elas funcionam...

com relação a este código:

if chcRefinar = "ON" then
elseif qdrSituacao = 1 then
call geral_com_refino()
elseif qdrSituacao = 2 then
call pagas_com_refino()
elseif qdrSituacao = 3 then
call nao_pagas_com_refino()
end if
If chcRefinar = "" then
elseif qdrSituacao = 1 then
call geral_sem_refino()
elseif qdrSituacao = 2 then
call pagas_sem_refino()
elseif qdrSituacao = 3 then
call nao_pagas_sem_refino()
end if

compreendo que as vezes coisas muito esquisitas podem acontecer, mas provavelmente não deve ser o if.

Você já depurou o código para ver quais rotinas estão realmente sendo chamadas?

[]'s! :rolleyes:

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

  • 0

Kuroi meu amigo, Sabino e demais... Consegui!

Eram só as condicionais mesmo... na real me dei conta do que o Kuroi tava dizendo... mas não era aquilo que eu queria... eu de fato não queria pegar todas as funções... QUERIA SÓ UMA DELAS!!! Por isso não tinha problema todas as subs terem o mesmo select... Sei lá... não tinha entendido o que vocês tavam falando por isso... e daí tb não consegui explicar melhor... desculpem aí!

Eu não tava sabendo escrever as condicionais... saquem só... ficou assim:

if chcRefinar = "ON" and qdrSituacao = 1 then
call geral_com_refino()
elseif chcRefinar = "ON" and qdrSituacao = 2 then
call pagas_com_refino()
elseif chcRefinar = "ON" and qdrSituacao = 3 then
call nao_pagas_com_refino()
elseif chcRefinar = "" and qdrSituacao = 1 then
call geral_sem_refino()
elseif chcRefinar = "" and qdrSituacao = 2 then
call pagas_sem_refino()
elseif chcRefinar = "" and qdrSituacao = 3 then
call nao_pagas_sem_refino()
end if

Daí matou a charada e todos os mistérios!

valeu pessoal... desculpem aí qualquer. mau entendido e pela minha teimosia...

[]'s Notax

Editado por Notax
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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...