Foros del Web » Programando para Internet » ASP Clásico »

Comparaciones con CInt()

Estas en el tema de Comparaciones con CInt() en el foro de ASP Clásico en Foros del Web. Hola, me ocurre a veces que comparaciones que hasta ahora estaban funcionando bien, por ejemplo, If var1 = var2 Then.... , de repente, me dan ...
  #1 (permalink)  
Antiguo 09/11/2007, 12:51
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años, 5 meses
Puntos: 9
Comparaciones con CInt()

Hola, me ocurre a veces que comparaciones que hasta ahora estaban funcionando bien, por ejemplo, If var1 = var2 Then...., de repente, me dan False, y estoy obligado a poner If CInt(var1) = CInt(var2) Then.....

Lo más raro es que algunas que otros días funcionaban ok, ahora me fallan, ¿por qué ocurre esto si se que contienen los mismos valores? El problema es que no siempre puedo poner CInt() porque son variables que según desde donde se llame pueden contener tipos distintos

Gracias
  #2 (permalink)  
Antiguo 09/11/2007, 13:47
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Comparaciones con CInt()

Podrías usar una función genérica. Aquí te pongo algo rápido:
Código:
<%
Function SonIguales(A,B)
   If VarType(A) <> VarType(B) Then
      SonIguales = False
   Else
      Select Case VarType(A)
        Case 0,1       
	     SonIguales = True                   'Empty, Null
	Case 2,3,4,5,6 
	     SonIguales = CDbl(A)=CDbl(B)        'Numericos
	Case 7
	     SonIguales = CDate(A) = CDate(B)    'Fechas
	Case 8 
	     SonIguales = CStr(A) = CStr(B)      'String
	Case 11 
	     SonIguales = CBool(A) = CBool(B)    'Boolean
	End Select
   End If
End Function

Response.Write SonIGuales(5,5) & "<br>" 
Response.Write SonIGuales(5.65,5.65) & "<br>" 
Response.Write SonIGuales(Date,Date) & "<br>" 
Response.Write SonIGuales("5","5") & "<br>" 
Response.Write SonIGuales(true,true) & "<br>" 

Response.Write SonIGuales(5,6) & "<br>" 
Response.Write SonIGuales(5.65,5.5) & "<br>" 
Response.Write SonIGuales(Date,Time) & "<br>" 
Response.Write SonIGuales("5",6) & "<br>" 
Response.Write SonIGuales(true,false) & "<br>" 
%>
  #3 (permalink)  
Antiguo 10/11/2007, 03:48
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años, 5 meses
Puntos: 9
Re: Comparaciones con CInt()

Muchas gracias, me sirvió, pero con una modificación:

Código:
        If EsNulo(A) and EsNulo(B) Then
            Iguales = True
        ElseIf EsNulo(A) or EsNulo(B) Then
            Iguales = False
        ElseIf VarType(A) <> VarType(B) Then
            Iguales = CStr(A) = CStr(B) 
No se por qué, a veces los valores enteros leidos de BD los toma como String, y al comparar un entero con un string me da False...

Lo mas raro es que comparaciones que antes daban ok ahora me dan mal resultado!!

Gracias por tu ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:53.