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

Problema al intentar recuperar el valor de un checkbox.

Estas en el tema de Problema al intentar recuperar el valor de un checkbox. en el foro de ASP Clásico en Foros del Web. Harto ya de buscar la respuesta en tutoriales, manuales, ejemplos, etc, acudo aquí con mi consulta, pues estoy seguro de que la solución es muy ...
  #1 (permalink)  
Antiguo 12/01/2007, 12:59
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 18 años, 2 meses
Puntos: 0
Problema al intentar recuperar el valor de un checkbox.

Harto ya de buscar la respuesta en tutoriales, manuales, ejemplos, etc, acudo aquí con mi consulta, pues estoy seguro de que la solución es muy facil, pero yo me estoy volviendo loco...

Estoy creando una intranet para mi empresa, con un montón de funciones: control comercial, control de órdenes y pedidos, gestión de clientes, etc. La verdad es que llevo ya unos meses con ello, pues cada vez que aprendo algo nuevo vuelvo a cambiar todo.

Cuando la acabe la pondré a disposición de quien la quiera usar... me llenará de orgullo saber que todo mi trabajo ha podido resultar útil para otras personas...

En fin, que voy con la cuestión que me vuelve loco... bueno, al menos la que más loco me vuelve ahora mismo, pues este aprendizaje es un continuo discurrir entra la locura y la desesperación:

¿CÓMO SE RECUPERAN LOS VALORES DE UN CAMPO SÍ/NO DE UNA BB.DD. Y SE UTILIZAN EN UN CHECKBOX?

Es decir, concretando:

PÁGINA 1 -> Un formulario de introducción de datos, incluido un checkbox con el siguiente código:

<input type="checkbox" name="wcasilla_verificacion" value="ON">

PÁGINA 2 -> Recogemos los valores del formulario y los insertamos en la BB.DD:

<%
if request.form("wcasilla_verificacion") = "on" then
xcasilla_verificacion = "1"
else
xcasilla_verificacion = "0"
end if
%>

<%
sSQL="Insert Into tabla (casilla_verificacion) values ('" & xcasilla_verificacion & "')"
%>

Hasta aquí todo funciona perfectamente. El usuario marca en el formulario la casilla de verificación o no, y en la base de datos ese campo aparece marcado o no, según la elección (por cierto, el tipo de campo en Access es Sí/No, con formato Verdadero/Falso). Pero ahora llega el problema:

PÁGINA 3 -> Modificamos el formulario inicial recuperando sus valores:

Aquí tenemos una página igual que la primera, es decir, el formulario del principio, pero en cada campo aparece el valor que introdujo el usuario, con el sistema <INPUT NAME="campo_prueba" value="<%=rs("campo_prueba")%>">.

Lógicamente, si el usuario ha marcado el checkbox al principio, debería de aparecer ahora marcado. Pero... ¿CÓMO SE HACE ESO?

Yo utilizo, porque lo he copiado de otros sitios donde veo que lo hacen así, la siguiente fórmula:

<input type="checkbox" name="wcasilla_verificacion" value="ON" <% if rs("casilla_verificacion") = True then response.write (" checked ") else end if %>>

Se supone que, así, se lee el campo de la BB.DD., se comprueba si es True o False, y, si es True, se añade el valor "checked" a la etiqueta "input".

Pues nada, de esta manera, cada vez que intento acceder a esta página 3 me sale el siguiente error:

"ERROR EN LA PÁGINA
Hay un problema con la página solicitada y no puede ser mostrada.."

He probado de todo: con comillas, sin comillas, poniendo True, poniendo On, poniendo if...<> 0, etc, pero no logro que me funcione de ningún modo.

Ya os digo que he mirado en un montón de sitios, y me he descargado aplicaciones de otras personas en que también usan este sistema, pero a ellos les funciona, claro, y yo no sé por qué. También observo que esto de los checkboxes no se utiliza demasiado, cuando a mí me parecen unos elementos de gran valor a la hora de rellenar una ficha con muchas opciones.

A ver si me podéis decir algo.

Muchas gracias y un saludo.

Moleman.
  #2 (permalink)  
Antiguo 12/01/2007, 13:32
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 7 meses
Puntos: 8
Re: Problema al intentar recuperar el valor de un checkbox.

Que tal Moleman.

El manejo de Fechas y Booleanos es complicado ya que la base de datos y VB/ASP no comparten el mismo formato. Lo que yo hago para el caso de los booleanos es no usarlos y en su caso usar enteros ( tu defines, 0-falso; 1-Verdaero) y en el caso de las fechas pues andar haciendo malabares con los formatos.

Ahora bien, tu código quedaría:
Código:
<input type="checkbox" name="wcasilla_verificacion" value="ON" <% if rs("casilla_verificacion") = "verdadero" then response.write (" checked ") else end if %>>
O prueba imprimiedo que es lo que contiene: rs("casilla_verificacion")

Pero para evitarte problemas a futuro( en caso de que quieras migrar tu base de datos a SQL Server, por ejemplo) cambia el tipo de datos de tu campo casilla_verificacion a tipo entero.

Saludos y Suerte!!
  #3 (permalink)  
Antiguo 12/01/2007, 14:07
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Problema al intentar recuperar el valor de un checkbox.

O sea, que en la BB.DD. el campo casilla_verificacion no la defines como "Sí/No" sino como "Texto", ¿no?

Voy a probar.

Muchas gracias.

Moleman.
  #4 (permalink)  
Antiguo 12/01/2007, 14:45
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Problema al intentar recuperar el valor de un checkbox.

No...lo que daniel00 indica, es que tu campo lo definas como entero, el cual tendra el valor de un booleano 0 o 1, es una buena solución para interactuar con bases de datos sobre todo de access que hacen lo que se les da la gana dependiendo del lenguaje predeterminado de la aplicación, y finalmente un booleano no es sino entero que toma dos valores.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 12/01/2007, 15:52
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 7 meses
Puntos: 8
Re: Problema al intentar recuperar el valor de un checkbox.

'xacto.

Puse la palabra "verdadero", porque si esta en español seguramente te esta devolviendo ese valor el campo boleano.

Y sí es mejor cambiar el tipo a entero.

Saludos.
  #6 (permalink)  
Antiguo 19/01/2007, 08:50
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Problema al intentar recuperar el valor de un checkbox.

Pues ya está, ya me ha salido... ¡por fin!

Dejo por aquí el código por si alguien lo quiere usar:

BB.DD. ACCESS

Crear un campo de nombre casilla_verificacion y asignarle un valor numérico de "entero".

PÁGINA 1: FORMULARIO

<input type="checkbox" name="wcasilla_verificacion" value="True">

PÁGINA 2: INSERTAR VALORES DEL FORMULARIO EN LA BB.DD.

if request.form("wcasilla_verificacion") = "True" then
xcasilla_verificacion = 1
else
xcasilla_verificacion = 0
end if

<%
sSQL="Insert Into tabla (casilla_verificacion) values ('" & xcasilla_verificacion & "')"
%>

PÁGINA 3: RECUPERAR FORMULARIO CON DATOS

<% if rs("cambios01_2006") = "1" then
response.write ("<input type='checkbox' name='wcasilla_verificacion' value='True' checked>")
else
response.write ("<input type='checkbox' name='wcasilla_verificacion' value='True'>")
end if
%>

PÁGINA 4: INSERTAR NUEVOS VALORES

if request.form("wcasilla_verificacion") = "True" then
xcasilla_verificacion = 1
else
xcasilla_verificacion = 0
end if

<%
sSQL="Insert Into tabla (casilla_verificacion) values ('" & xcasilla_verificacion & "')"
%>

Bueno, creo que con esto ya está todo. Me ha costado un montón, pero lo he conseguido... ¡menuda sensación de triunfo se queda, ¿verdad?!

Si alguien puede aprovechar el código, garantizo que funciona, tal cual lo he escrito.

Un saludo y gracias a daniel00 y u_goldman.

Moleman.
  #7 (permalink)  
Antiguo 19/01/2007, 09:35
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: Problema al intentar recuperar el valor de un checkbox.

Bueno, sin afan de ser "molestoso" permíteme hacer algunas sugerencias...

Como podrás observar, el código que pones en página 2 y 4 es exactamente el mismo, por lo que puedes unificarlo en solo una página. E igual si cambias al checkBox su value a "1" puedes evitarte la asignacion:

<input type="checkbox" name="wcasilla_verificacion" value="1">
.....
<%
sSQL="Insert Into tabla (casilla_verificacion) values ('" & wcasilla_verificacion & "')"
%>

La página 3 no tiene mucho sentido para mi, por que el insert lo haces afectando el campo "casilla_verificacion" pero el if que condiciona el estado de la casilla lo haces con el campo Cambios=1_2006, pero bueno, eso no importa mucho, lo que si es que puedes comprir ese código a una linea:

response.write ("<input type='checkbox' name='wcasilla_verificacion' value='1' <%if rs("cambios01_2006")="1" Then Response.Write " checked " End If%>>")

Bueno, son observaciones sin mala intensión
  #8 (permalink)  
Antiguo 23/01/2007, 09:32
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: Problema al intentar recuperar el valor de un checkbox.

Hola, Myakire:

De molestoso nada, todo lo contrario, agradecido que estoy por tu atención.

Lo de la página 3 es que me he equivocado yo, el campo "cambios01_2006" en realidad es el campo "casilla_verificacion", pero me he liado al escribirlo.

Y las páginas 2 y 4 no son totalmente iguales, la diferencia es que la 2 hace un "insert", y la 4 hace un "update". Ya me gustaría a mí saber cómo hacer una misma página para insertar o actualizar registros, que inserte si es un registro nuevo, y actualice si es una modificación.

Gracias.

Moleman.
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 01:26.