none
Problema com dados boolean RRS feed

  • Pergunta

  • Bom dia,

    Estou com dificuldade, e creio que seja coisa simples.

    Gostaria de que se o campo ACESSOTUTOR estiver marcado no banco de dados

    o menu TUTOR ficasse visivel

    Caso contrario, nao ficaria visivel

    Tentei assim

    <%
    if cadusuges_acessotutor = "N" then 
    ' Verifica se Dados da Fatura e Produção foram cadastrados
    SQLConsulta = "SELECT * FROM TCadastro_UsuariosGestores WHERE cadusuges_acessotutor "
    Set RS = Conexao.Execute(SQLConsulta)
    cadusuges_acessotutor = "N"
    if not RS.eof then 
    cadusuges_acessotutor = "S"
    end if 
    RS.Close
    Set RS = nothing
    else
    cadusuges_acessotutor = "S"
    end if
    %>

    e no menu

    <% if cadusuges_acessotutor = "S" then %>
    <li class="topmenu"><a href="#" style="height:15px;line-height:15px;"><span>Tutor</span></a>
    <ul>
    <li class="subfirst"><a href="grafico_perfilempresainstituicao.asp">Fórum</a></li>

    </ul></li>
    <% end if %>

    já tentei outras formas, mas não consegui.

    terça-feira, 22 de janeiro de 2013 14:30

Todas as Respostas

  • VOcê está usando asp clássico? É o que parece

    Twitter: @MayogaX
    Blog: Dev Blog

    terça-feira, 22 de janeiro de 2013 20:42
  • sim sim! 
    quarta-feira, 23 de janeiro de 2013 10:11
  • então, eu não tenho experiência com asp clássico, mas acho que o correto no seu if seria:

    <% if cadusuges_acessotutor == true then %>

    ou 

    <% if cadusuges_acessotutor == "S" then %>

    Porque numa comparação você utiliza dois sinais de "=" (igual)

    o caso do true (o primeiro exemplo) pq é o que o banco costuma retornar de um campo do tipo booleano. Caso o ado retorne como número será 1 para verdadeiro e 0 para falso.


    Twitter: @MayogaX
    Blog: Dev Blog

    quarta-feira, 23 de janeiro de 2013 11:54
  • Não sei se foi erro ao passar o código para cá mas reparei que o não está passando valor no where para o select no banco de dados, talvez isso possa estar danificando os resultados;

    ou o que eu sugiro a você é:

    if cadusuges_acessotutor = "N" then 'remover 
    ' Verifica se Dados da Fatura e Produção foram cadastrados
    SQLConsulta = "SELECT * FROM TCadastro_UsuariosGestores WHERE cadusuges_acessotutor "
    Set RS = Conexao.Execute(SQLConsulta)
    cadusuges_acessotutor = "N"
    if not RS.eof then 
    cadusuges_acessotutor = "S"
    end if 
    RS.Close
    Set RS = nothing
    else 'remover
    cadusuges_acessotutor = "S" 'remover
    end if 'remover
    para verificar se o erro já não vem anteriormente

    quarta-feira, 23 de janeiro de 2013 13:25
  • Olá, tudo bem?

    Eu dei uma olhada na query que você está fazendo:

    SQLConsulta = "SELECT * FROM TCadastro_UsuariosGestores WHERE cadusuges_acessotutor "

    Por acaso não está faltando nada no WHERE? Por exemplo,

    se o seu campo no banco for char(1), você deveria verificar WHERE cadusuges_acessotutor = '{valorQueVoceUsaComoTRUE}'
    se o seu campo for numérico, você provavelmente deve estar gravando 1=true e 0=false. Portanto ficaria WHERE cadusuges_acessotutor = 1
    se o seu campo for BIT (boolean) no SQLServer, você deve tratar da mesma forma usando 1=true ou 0=false.

    Eu acho que a sua query está dando erro, e você está setando cadusuges_acessotutor = "N" antes de verificar RS.eof. Como RS.eof provavelmente vai dar erro também (pois RS nao tem o resultado da query) a variável está sempre com "N" e não cai no seu if mais abaixo.

    RESUMINDO: pega a query que você está usando no banco de dados, executa no Query Analizer (SQL Management Tools) e verifica qual é o retorno. Se estiver OK, poste o retorno aqui que ajudamos.

    Lembrando que no ASP clásico, a comparação e feita da mesma forma que no VB, usando apenas um simbolo de igual. 

    Exemplo:

    If CStr(cadusuges_acessotutor) = "N" Then
        'True
    Else
        'False
    End If

    Seu codigo com a minha observação na WHERE:

    <%
    if cadusuges_acessotutor = "N" then 
    	' Verifica se Dados da Fatura e Produção foram cadastrados
    	SQLConsulta = "SELECT * FROM TCadastro_UsuariosGestores WHERE cadusuges_acessotutor = {TEMQUESERIGUAL A ALGUMA COISA} "
    	Set RS = Conexao.Execute(SQLConsulta)
    	cadusuges_acessotutor = "N"
    	if not RS.eof then 
    		cadusuges_acessotutor = "S"
    	end if 
    	RS.Close
    	Set RS = nothing
    else
    	cadusuges_acessotutor = "S"
    end if 
    %>
    
    e no menu
    
    <% if cadusuges_acessotutor = "S" then %>
    <li class="topmenu"><a href="#" style="height:15px;line-height:15px;"><span>Tutor</span></a>
    <ul>
    <li class="subfirst"><a href="grafico_perfilempresainstituicao.asp">Fórum</a></li>
    
    </ul></li>
    <% end if %>


    []'s --- Se a minha resposta lhe foi util, marque "Propor como Proposta" para qualificar o conteudo do fórum e ajudar os outros usuários. Obrigado, Valdek Santos Santana Junior

    • Sugerido como Resposta Afonso Fernandes quinta-feira, 24 de janeiro de 2013 17:22
    quinta-feira, 24 de janeiro de 2013 15:36