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

Actualizar campo de checkbox en db

Estas en el tema de Actualizar campo de checkbox en db en el foro de ASP Clásico en Foros del Web. Hola a todos, tengo un problemilla. En una página saco con un select unos determinados registros y, al sacarlos creo en cada uno de ellos ...
  #1 (permalink)  
Antiguo 11/03/2009, 11:27
 
Fecha de Ingreso: febrero-2008
Mensajes: 27
Antigüedad: 16 años, 2 meses
Puntos: 1
Actualizar campo de checkbox en db

Hola a todos,

tengo un problemilla.
En una página saco con un select unos determinados registros y, al sacarlos creo en cada uno de ellos automáticamente dos checkbox con las propiedades name="valida" id="valida1" y name="factura" id="factura" respectivamente.

Tb he incorporado un boton "submit" a un asp que me actualiza dichos campos de la BD.

La cuestión es que al sacar los registros con una consulta, por diferentes motivos, nunca saca el mismo número de registros, por lo que no genera el mismo número de checkbox cada vez.

Mi problema es que no actualiza bien la Base de Datos y No consigo ver el fallo.

Aquí les dejo el código:


'Guardamos los checkbox VALIDA
'Recorremos todos los elementos del formulario que tengan como name: "valida" - En este caso los checkbox
for i = 1 To Request.Form("valida").Count Step 1

'Cambiamos el valor que recoge para poder almacenarlo en la Base de Datos - Campo bit
if Request.Form("valida")(i) <> "" then
validada = 1
else
validada = 0
end if

'Actualizamos
sql = " UPDATE INSCRIPCIONES_DE_MATERIAL" &_
" SET validada = " & validada &_
" from INSCRIPCIONES_DE_MATERIAL as im"&_
" where im.codempresa=" & varcodempresa & " and im.codtemporada=" & session("cod_tempo_actual") & " and im.codmedio=" & rsmenuinscripciones("codreg")

Response.Write(" ----- Actualizacion de campo VALIDADA num. " & i & " al valor: " & validada)
rsinscrip.Open sql,varconexion
Next



'Guardamos los checkbox FACTURA
'Recorremos todos los elementos del formulario que tengan como name: "factura" - En este caso los checkbox
for i = 1 To Request.Form("factura").Count Step 1

'Cambiamos el valor que recoge para poder almacenarlo en la Base de Datos - Campo bit
if Request.Form("factura")(i) <> "" then
facturada = 1
else
facturada = 0
end if

'Actualizamos
sql = " UPDATE INSCRIPCIONES_DE_MATERIAL" &_
" SET facturada = " & facturada &_
" from INSCRIPCIONES_DE_MATERIAL as im"&_
" where im.codempresa=" & varcodempresa & " and im.codtemporada=" & session("cod_tempo_actual") & " and im.codmedio=" & rsmenuinscripciones("codreg")

Response.Write(" ----- Actualizacion de campo VALIDADA num. " & i & " al valor: " & facturada)
rsinscrip.Open sql,varconexion
Next


Les agradezco toda la ayuda posible.
  #2 (permalink)  
Antiguo 12/03/2009, 03:06
 
Fecha de Ingreso: febrero-2008
Mensajes: 27
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Actualizar campo de checkbox en db

A ver, he conseguido que actualice los campos del checkbox si estos no están preseleccionados y los pone en la DB de false a true.

El problema está en el caso contrario. No me los pasa de true a false.

Ya sé que el formulario no lee el valor del checkbox si no está "checked" pero en
principio:

Código HTML:
if Request.Form("valida")(i) <> false then
					validada = 1
				else
					validada = 0
				end if
no debería de solucionar ese problema??

Al fin y al cabo le digo que si chequeo me lo ponga a "1" y en caso contrario me lo
ponga a "0".

No paro de darle vueltas al asunto y no se como arreglarlo.

Si a alguien le ha pasado lo mismo ruego un "poquito" de ayuda..pleeeease!!!!


Gracias.
  #3 (permalink)  
Antiguo 18/03/2009, 02:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 27
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Actualizar campo de checkbox en db

Nadie tiene idea de lo que hablo???

o yo no me he expresado bien??
  #4 (permalink)  
Antiguo 18/03/2009, 06:55
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
Respuesta: Actualizar campo de checkbox en db

nose si es que te entendi correctamente, pero me huele a que tienes problemas con los tipos de datos.

No se que BD estas usando, pero siempre se presentan problemas cuando te manejas con los tipos de datos que la BD te entrega.

¿POR QUE?

POrque no son todos iguales, y no siempre se entienden de la misma manera, dependera del idioma de la bd, del servidor y otro monton de factores.

Por ejemplo, true no es lo mismo que 1 ni tampoco es lo mismo que verdadero.
Las tres en terminos logicos significan lo mismo, sin embargo para la maquina no es igual.

Es por eso que debes acostumbrarte a trabajar con tus propios estandares de tal manera de hacer aplicaciones a pruba de balas. (esto es que funcionen en cualquier condicion)

Lo que yo hago es siempre manejarme en caso de los datos buleanos con un varchar de largo uno, donde los unicos valores son en mayuscula T y F

Asi siempre se que esperar y que entregarle a la aplicacion cuando trabajo con datos de tipo buleano.

Si la data es mucha y no puedes cambiar la bd, pues hazte una funcion que arregle este problema considerando todas las posibilidades

por ejemplo

Código asp:
Ver original
  1. function fixBuleano(entrada)
  2.  if entrada = false then fixBuleano = "F" :exit function
  3.  if entrada = 0 then fixBuleano = "F" :exit function
  4.  if entrada = "0" then fixBuleano = "F" :exit function
  5.  if entrada = "falso"  then fixBuleano = "F" :exit function
  6. end function


algo asi.

te deseo suerte
  #5 (permalink)  
Antiguo 18/03/2009, 10:52
 
Fecha de Ingreso: febrero-2008
Mensajes: 27
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Actualizar campo de checkbox en db

Gracias por la contestación Muzztein. Intentaré usar la función que me pasas. Parece bastante útil.

En realidad he cambiado un poco el código:

Código HTML:
'Guardamos los checkbox	VALIDA
			'Recorremos todos los elementos del formulario que tengan como name: "valida" - En este caso los checkbox
			for i = 1 To Request.Form("valorValida").Count			
																	
				'Cambiamos el valor que recoge para poder almacenarlo en la Base de Datos - Campo bit
				if Request.Form("valorValida")(i) = "1" then
					validada = 1
				elseif Request.Form("valorValida")(i) = "0" then
					validada = 0
				end if
				
				'Actualizamos			
				sql = " UPDATE INSCRIPCIONES_DE_MATERIAL" &_
					  " SET validada = " & validada &_
					  " from INSCRIPCIONES_DE_MATERIAL as im" &_					 
					  " where im.codempresa=" & varcodempresa & " and im.codtemporada=" & session("cod_tempo_actual") & " and im.codmedio=" & rsmenuinscripciones("codreg")				  
				 
				 Response.Write(Request.Form("valorValida")(i))
				 Response.Write(" ----- Actualizacion de campo VALIDADA num. " & i & " al valor: " & validada)
				 rsinscrip.Open sql,varconexion			 
			Next
Y el campo de la base de datos es un campo "bit", por eso le paso un valor de 0 o 1.

Un saludo y gracias.
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:34.