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

Detectar si una variable es un número o no (siendo en ese caso tipo texto)

Estas en el tema de Detectar si una variable es un número o no (siendo en ese caso tipo texto) en el foro de ASP Clásico en Foros del Web. ¿Existe en ASP (o VBScript) alguna función equivalente al isNan de Javascript, para poder detectar si una variable es de tipo texto o numérica?...
  #1 (permalink)  
Antiguo 27/03/2005, 12:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 20 años, 3 meses
Puntos: 6
Detectar si una variable es un número o no (siendo en ese caso tipo texto)

¿Existe en ASP (o VBScript) alguna función equivalente al isNan de Javascript, para poder detectar si una variable es de tipo texto o numérica?

Última edición por un_tio; 27/03/2005 a las 12:25
  #2 (permalink)  
Antiguo 27/03/2005, 12:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 20 años, 3 meses
Puntos: 6
El motivo por el que quiero saberlo es el siguiente:

Quiero hacer un INSERT a una base de datos usando los datos que un cliente haya rellenado en un formulario.
Necesito saber si cada campo rellenado por el cliente es de tipo número o de tipo texto (pues en la sentencia SQL tendré que poner o comillas ('), si es un texto, o nada, si es un número).
Trabajo con formularios y bases de datos dinámicos (de un día para otro puede haberse creado nuevas), por lo que a priori no sé si un campo va a ser rellenado de tipo texto o de tipo número.

Por tanto, se me ocurren dos alternativas:

O bien uso una sentencia SQL que me informe del tipo de datos a rellenar que hay en la tabla, o bien recojo el dato introducido por el usuario y compruebo si es un número o una cadena; para decantarme por esta segunda opción (por cierto, ambas opciones tienen sus pegas si el usuario es "descuidado" o "se equivoca a propósito") es para lo que necesito saber cómo comprobar si una variable es de tipo texto o cadena (he mirado en libros y buscado algo por internet, y mientras que en Javascript sí se puede, como ya sabía, en Visual Basic no he visto referencia a eso).
  #3 (permalink)  
Antiguo 27/03/2005, 23:15
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
If IsNumeric(variable) Then

O tambien puedes preguntar por el tipo de dato, con nametype(variable)

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 27/03/2005, 23:38
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
auto

Última edición por trasgukabi; 28/03/2005 a las 13:59
  #5 (permalink)  
Antiguo 28/03/2005, 09:05
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 20 años, 3 meses
Puntos: 6
Gracias u_goldman. Una pequeña duda: ¿la función IsNumeric devuelve las cadenas de texto "true" o "false"? ¿Devuelve true o false pero no como cadena de texto (es decir, que se escribirían sin comillas dobles)?

trasgukabi ya lo he pensado, pero el problema de usar javascript es que no puedo pasarle los valores de los Requests de asp, que van en variables, al código javascript; bueno, eso sí podría, pero es la dirección inversa lo que ya no podría, de javascript a ASP.

Vamos, y además, que el tema es que esto no es una validación de un formulario como tú has entendido, sino saber cómo crear el código ASP en el momento mismo de la ejecución de la sentencia SQL (del insert), para saber si poner comillas o no.
  #6 (permalink)  
Antiguo 28/03/2005, 10:07
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
trasgukabi, si tenés el ejemplo típico de noticias.asp?IDNoticia=35 y te colocan a mano, en lugar de "35", "qwert", la aplicación daría errores en los tipos... osea que combiene validar que sea un número desde el servidor mediante ASP.

Igualmente, siempre combiene hacer validaciones en el cliente para, por ejemplo, asegurar que los datos sean correctos antes de hacer el submit y así evitar idas y venidas innecesarias desde el cliente al servidor y luego, una vez pasada la prueba de javascript, volver a validar datos críticos en el servidor para evitar que te caguen la aplicación mediante un formulario 'fake' que no tenga las validaciones que vos colocste (o por si el cliente no soporta javascript)
__________________
...___...
  #7 (permalink)  
Antiguo 28/03/2005, 11:37
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
IsNumeric, evalua una expresion numerica, por lo tanto, si IsNumeric, entonces, no necesitas comillas dobles...
Hay otra forma de evitarte todo el show de las comillas dobles y no comillas dobles, usa consultas parametrizadas.

Set rs = Server.CreateObject("ADODB.Recordset")
Set cmd = Server.CreateObject("ADODB.Command")
qry = "INSERT INTO tabla(campo1) VALUES(?)"
Set param = cmd.CreateParameter("parametro1", adInteger, adParamInput, 4)
cmd.Parameters.Append(param)
cmd.ActiveConnection = ObjConn 'conexion activa
cmd.CommandText = qry
cmd.CommandType = adCmdText
rs.Open cmd

En negritas las partes fundamentales, que son el tipo de dato, el tipo de parametro y la longitud del campo.
Con esto te dejas de preocupar por las famosas comillas simples, parece mas tedioso y quizas lo es, pero es mucho mas claro al final y mas facil en su mantenimiento.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 14:33.