| |||
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 |
| |||
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). |
| |||
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. |
| ||||
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)
__________________ ...___... |
| ||||
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 |