Hecho bolas con los tipos de datos por favor ayuda :(

24/03/2006 - 23:55 por Marcos Galaviz | Informe spam
Estoy realmente complicado con ASP y los tipos de datos y sus comparaciones,
no termino de comprender cuando poner comillas, o el & :( por ejemplo tengo
estas 2 comparaciones: Ors1 es un recordset y operac21 es un campo de ese
recordset y es numerico y quiero compararlo para ejecutar una accion y hago
esto y no funciona:

if ors1("operac21") = 1

si le pongo " & en realidad nunca es verdadera la condicion ¿como debe ser?,
siguiente pregunta quiero comparar en un SELECT para que me filtre los
registros a partir de una fecha pero tampoco he podido por mas que intento
he puesto el caracter # y creo haber probado comillas, & y todo lo que se me
ha ocurrido y nada.

¿alguien se puede apiadar de mi y explicarme como es que esto funciona?

Gracias y buen dia.

Preguntas similare

Leer las respuestas

#1 Jose A. Fernandez
25/03/2006 - 19:55 | Informe spam
Primeramete en ASP todo es variant.
Pero a la hora de comparar te conviene para que las funciones traajen
correctamente convertir al tipo de dato a comparar
por example:
IF Clng(ors1("operac21") ) = 1
y/o
Cstring(ors1("operac21")) = "1"
Respuesta Responder a este mensaje
#2 Dani Castillo
26/03/2006 - 13:38 | Informe spam
Bueno te recomiendo en general un repaso de asp y su sintaxis :-) no te lo
tomes a mal pero leer muchos manuales ayuda (www.asptutor.com)

en general:
asp usa un tipo de datos "no forzado" llamado variant, es su *unico* tipo de
datos , ahora vienen los peros

un variant es *cualquier cosa* una variable variant tiene un tipo implicito
dependiendo de su valor

dim a
a=1
' a es tipo intenger
a=1.5
' a es tipo single
a="hola"
' a es tipo string
a=oRs("dato")
' a tiene el mismo tipo que el campo "dato" del recordset oRs
' oRs por su cuenta es otro variant, que tiene tipo recordset (objeto)

etc

ahora las comparaciones
if ors1("operac21")=1

funciona si operac21 es tipo numerico

una comparacion da false si los tipos implicitos de datos son distintos
por ejemplo
a="1"
...
if a=1 then
no se cumple



si no estamos seguros del tipo (o si puede ser null) viene a veces bien usar
un forzado a string

if ors1("operac21") & "" = "1" then ...

conviertes la parte izquierda de la comparacion a string y comparas con un
string "1"

eso es util normalmente cuando comparamos dos valores que 'no estamos muy
seguros' de donde vienen

if a & "" = b & "" then ...

es decir, forzamos a que a y b sean strings y realizamos la comparacion

ese forzado tiene como inconveniente que es mas lentro a la hora de
ejecutarse, como ventaja que sabemos "cierto" que ambos lados de la
comparacion van a ser strings

otra ventaja del forzado es que evitamos el problema de los nulls

a=null
...
if (a<>7) then
*no entra* en el then
¿porque? porque null<>7==> da null y se fastidia la condicion :-)

sin embargo
if (a & "" <> "7") then

da el resultado esperado, entra en la condicion , null & "" = "" que es <>
"7"

por ultimo, para fechas:

es muy conveniente usar el formato canonico para las fechas, el formato
canonico es
YYYYMMDD
es decir
26/3/2006 pasa a ser
20060326
(es facil construir una rutina q pase a canonico)

la comparacion suele ir entre signos de # aunque depende del motor de la
base de datos

para probar suele ser mucho mas rapido usar el front-end visual de la base
de datos que estes usando , si es access pues en el editor de consultas, la
creas "visual" de forma aproximada y pulsas en la opcion de ver sql , te
dara una idea del formato a conseguir, si usas mysql pues algun frontend
como mysqlfront te permitira probar sql's directamente y comprobar si
funcionan

dani

"Marcos Galaviz" escribió en el mensaje
news:u%
Estoy realmente complicado con ASP y los tipos de datos y sus
comparaciones, no termino de comprender cuando poner comillas, o el & :(
por ejemplo tengo estas 2 comparaciones: Ors1 es un recordset y operac21
es un campo de ese recordset y es numerico y quiero compararlo para
ejecutar una accion y hago esto y no funciona:

if ors1("operac21") = 1

si le pongo " & en realidad nunca es verdadera la condicion ¿como debe
ser?, siguiente pregunta quiero comparar en un SELECT para que me filtre
los registros a partir de una fecha pero tampoco he podido por mas que
intento he puesto el caracter # y creo haber probado comillas, & y todo lo
que se me ha ocurrido y nada.

¿alguien se puede apiadar de mi y explicarme como es que esto funciona?

Gracias y buen dia.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida