Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kania

[Resolvido] erro em contagem no select

Recommended Posts

Gente olha que coisa doida, alguém consegue explicar:

 

Tenho este select

 

SELECT COUNT(*) AS Total FROM  palavras_chaves WHERE id = '" & Session("idLogin") & "'

 

Se eu der um Response.Write na tela ele imprime 2

 

Agora se eu fizer uma condição If assim

 

Rstotal("Total") >= "15"
 Response.Write "Maior ou igual a 15"
Else
 Response.Write "Menor que 15"
End If

 

Ele esta retornando com sendo maior ou igual a 15, agora alguém consegue explicar o porque ele faz isto? Uma vez que 2 é menor que 15

Compartilhar este post


Link para o post
Compartilhar em outros sites

"2" é maior que "15" mas 2 é menor que 15

 

Entendeu?

 

Tira as aspas para ele entender como numero em vez de texto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Mario, sim entendi, você esta querendo falar a diferença entre inteiro e string isto?

 

O valor ali vem como string, vou converter para inteiro para ver o que acontece.

 

Agora me tira uma duvida, porque 2 como string é maior que 15 como string e 2 como inteiro é menor que 15 como inteiro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

dependendo da situação é melhor usar um contatdor normal ou a clausula count do SQL, pois se o seu bd for muito grande o recordcount do objeto recordset para apresentar queda de desempenho e para usar o RecordCount , seu cursortype tem que ser recordset.CursorType = 3 (AdOpenDynamic)

 

exemplo:

<%
DIM mySQL, objRS
mySQL = "SELECT * FROM myTable" 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open mySQL, objConn


DIM iRecordCount
iRecordCount = 0
DO WHILE NOT objRS.EOF
iRecordCount = iRecordCount + 1
objRS.MoveNext
Loop


Response.Write "(" & iRecordCount & ")"

objRS.Close
Set objRS = Nothing 
objConn.Close
Set objConn = Nothing
%> 

 

SQL COUNT

 

<!--#INCLUDE VIRTUAL="/includes/connection.asp" -->

<%
DIM mySQL, objRS
mySQL = "SELECT Count(*) AS intTotal FROM myTable" 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open recSQL, objConn

' Display result
Response.Write objRS("intTotal")

objRS.Close
Set objRS = Nothing 
objConn.Close
Set objConn = Nothing
%> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Normalmente utilizo o Count do SQL mesmo, só uso RecordCount em casos que não tem como utilizar o pelo SQL.

 

Mas usando o Cint para transformar em Inteiro deu certo, na verdade já tinha testado com o Cint só queri saber o porque que uma string "2" é considerada maior que uma string "15"

Compartilhar este post


Link para o post
Compartilhar em outros sites

por que para ordenar como string sempre é levado em conta o primeiro caracter apenas se for igual passamos para o proximo

 

assim então o "2" será maior que qualquer texto iniciado por "1"

 

qualquer mesmo

 

"12222222222222222222222222222222222222222222222222222222222222222222222222"

"1bhjfgdsgfskjfhksdfhskjdhkj"

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom que resolveu

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.