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

update y checkbox

Estas en el tema de update y checkbox en el foro de ASP Clásico en Foros del Web. HOla.Soy newbie en ASP.Tengo el sgte problema tengo una tabla access con un valor si\no.Tengo el form y demas.Yo hago una busqueda que me levanta ...

  #1 (permalink)  
Antiguo 27/10/2006, 08:22
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
update y checkbox

HOla.Soy newbie en ASP.Tengo el sgte problema tengo una tabla access con un valor si\no.Tengo el form y demas.Yo hago una busqueda que me levanta los datos de esta base de datos al form, dodne ahi tenfgo un checkbox que se llama checkbox. Resulta que por otro lado en ese mismo form tengo el boton de update que me updeta todos los texbox.Pero lo que no me funciona es el del checkbox.Les paso el codigo a evr si alguien puede darme una mano


<!-- definimos el lenguaje a utilizar -->
<%@ Language="VBScript" %>
<html>
<head>
<title>Ingreso de Datos</title>
</head>
<!-- comienza el script -->

<%
'definimos la variable de conexion
Dim Conexion,Tabla
Dim lngRecordNo 'Holds the record number to be updated
lngRecordNo = CLng(Request.Form("textfield"))
Set Conexion = Server.CreateObject("ADODB.Connection")
Set Tabla = Server.CreateObject("ADODB.Recordset")
'conectamos a la base de datos mediante OLE ODBC dando el Driver
Conexion.Open "Driver={Microsoft Access Driver (*.mdb)}; " & "Dbq=" & Server.MapPath("base.mdb")
'definimos la variable de carga de datos
Dim sql, cid, sqll
cid=Request.Form("textfield")

sql="UPDATE tabla1 SET "
sql=sql & "IdDoc='" & Request.Form("textfield") & "',"
sql=sql & "Revision='" & Request.Form("textfield2") & "',"
sql=sql & "Titulo='" & Request.Form("textfield3") & "',"
sql=sql & "Fecha='" & Request.Form("textfield4") & "',"
If (Request.Form("checkbox")) = True Then
sql = sql & "active='Yes'"
End If
sql=sql & "Documento='" & Request.Form("textfield6") & "'"
sql=sql & " WHERE IdDoc='" & cid & "'"

on error resume next
Conexion.Execute sql
if err<>0 then
response.write("No update permissions!")
else
response.write("Record " & cid & " was updated!")
end if

response.write Request.Form("checkbox")
response.end

Conexion.close
Response.Redirect "Menu.html"

%>
  #2 (permalink)  
Antiguo 27/10/2006, 09:33
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
al imprimir tu sentencia sql como te queda ? Los valores si son los que esperabas ?
que valor le das al checkbox desde tu campo html ?
  #3 (permalink)  
Antiguo 27/10/2006, 12:59
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Antes que nada muchas gracias por responder. Aqui te paso el codigo de mi checkbox dnd est la mayor info
<input type="checkbox" name="checkbox" value="1" CHECKED>

Por otro lado con esta :

response.write Request.Form("checkbox")
response.end

me devuelve un 1 si el checkbox esta tildado

Espero puedan ayudarme
  #4 (permalink)  
Antiguo 27/10/2006, 13:04
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
El problema es la manera que estas formando la sentencia SQL en funcion al valor de tu checkbox:
Código:
If (Request.Form("checkbox")) = True Then
  sql = sql & "active='Yes'"
End If


if Request.Form("checkbox") = "1" then
  sql = sql & " active = 'Yes' "
end if
Y de paso te recomendaria que no utilices un string para este tipo de dato en tu base de datos, utiliza un valor booleano (1/0), es mucho mas facil manejar.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 27/10/2006, 13:04
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
oK, entonces cambia el true de la comparacion por un 1, puesto que es el valor que trae el checkbox

Me gano master
  #6 (permalink)  
Antiguo 27/10/2006, 13:15
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Es que aca andamos desestresandonos, je je, es viernes todo el dia

Salud!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 27/10/2006, 13:35
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Goldman gracia spor ayudar.Probe ambas senticas q me pasaste y me continua sin aupdetaer.
Probe ambas osea :
If (Request.Form("checkbox")) = True Then
sql = sql & "active='Yes'"
End If


if Request.Form("checkbox") = "1" then
sql = sql & " active = 'Yes' "
end if

No me tiran error ,pero tampoco me funcioan, tambien len ugar del yes puse si dado que le tenia en castellano y tampoco.Les paso eto que si me esta funcionando que es traerme los datos a un form
a ver si con este sirve de guia para ver mi drama un poco mejor.Aclaro este me anda perfecto lo pongo a modo ejemplo para que vean como lee la base y como trae el valor desde la base.
<%
If Tabla.Fields("Vigente") = TRUE then
%>

<input type="checkbox" name="checkbox" value="1" CHECKED>
<%
ELSE
%>
<INPUT TYPE="checkbox" NAME="checkbox" value="1">
<%
end IF
%>
  #8 (permalink)  
Antiguo 27/10/2006, 13:39
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Tu error entonces es logico, debes fijarte en la estructura de tus tablas, que tengan el tipo de datos esperado y en base a que campo quieres realizar la actualizacion.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 27/10/2006, 13:40
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Tengo una base de datod access y en disenio tiene el siguiente valor Sí/No
  #10 (permalink)  
Antiguo 27/10/2006, 13:41
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Entonces el valor esperado NO es un 'Si/No' el valor esperado es un booleano 1/0 sin apostrofes, y aunque access permite que le mandes un true/false tampoco lo hagas, el valor primitivo para un booleano siempre es un entero que toma dos valores 1/0.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #11 (permalink)  
Antiguo 27/10/2006, 13:43
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Como Logico no entiendo.
sql="UPDATE tabla1 SET "
sql=sql & "IdDoc='" & Request.Form("textfield") & "',"
sql=sql & "Revision='" & Request.Form("textfield2") & "',"
sql=sql & "Titulo='" & Request.Form("textfield3") & "',"
sql=sql & "Fecha='" & Request.Form("textfield4") & "',"
If (Request.Form("checkbox")) = True Then
sql = sql & "active='Yes'"
End If
sql=sql & "Documento='" & Request.Form("textfield6") & "'"
sql=sql & " WHERE IdDoc='" & cid & "'"

Todo esto me update segun IdDoc todos los campos que arriba indica.Tambien quiero poder actualizar el campo del checkbox si el usuario lo destilda que quede destildado.
Con respecto a mi base de datos access tengo valor Sí/No
  #12 (permalink)  
Antiguo 27/10/2006, 13:46
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Cita:
Entonces el valor esperado NO es un 'Si/No' el valor esperado es un booleano 1/0 sin apostrofes, y aunque access permite que le mandes un true/false tampoco lo hagas, el valor primitivo para un booleano siempre es un entero que toma dos valores 1/0.
Bueno, ya la solucion ahi esta.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #13 (permalink)  
Antiguo 27/10/2006, 13:47
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
como seria entonces pasarle 1 o un 0
se haria asi :

If (Request.Form("checkbox")) = 1 Then
sql = sql & "active=1"
End If
  #14 (permalink)  
Antiguo 27/10/2006, 13:51
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Y si lo intentas y vemos que resulta?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #15 (permalink)  
Antiguo 27/10/2006, 13:57
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Gracias por responder Goldman
If (Request.Form("checkbox")) = 1 Then
sql = sql & "active=1"
End If

No funca !!!! Me tiene loco
  #16 (permalink)  
Antiguo 27/10/2006, 19:32
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Alguien q pofa pueda darme una mano prove el sgte y nada

If (Request.Form("checkbox")) = "1" Then
sql = sql & "active=1"
End If

Alguien sabe como puedo solucionarlo ?????
  #17 (permalink)  
Antiguo 28/10/2006, 08:21
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
a ver... si despliegas todos tus datos desde la página asp. que valor obtienes en el campo active El valor que te de, es el que vas a ocupar en tu comparación, y por ende es el valor que le vas a poner en tu checkbox como valor predeterminado.
  #18 (permalink)  
Antiguo 28/10/2006, 09:57
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Hola Orhasro Antes que nada gracias or tomarte tu tiempo en ayudarme. Mira puse esta linea
response.write Request.Form("checkbox")
response.end

me devuelve un 1 si el checkbox esta tildado y si esta destiltado no me devuelve nada.
Como obtuve un 1 puse lo sgte :
If (Request.Form("checkbox")) = "1" Then
sql = sql & "active=1"
End If

Y tampoco me esta funcionando.Despues escribi este codigo que te adjunto aqui abajo el cual me devuelve el valor del checkbox a mo for el cual si funciona
<%
If Tabla.Fields("Vigente") = TRUE then
%>

<input type="checkbox" name="checkbox" value="1" CHECKED>
<%
ELSE
%>
<INPUT TYPE="checkbox" NAME="checkbox" value="1">
<%
end IF
%>


Bueno la verdad es que ya me reeee marie porque no entiendo porque no me updetea la base de datos access donde el valor el Si/No.
Vuelvo a pegar mi codigo actual a ver si pueden identificar el error:

<!-- definimos el lenguaje a utilizar -->
<%@ Language="VBScript" %>
<html>
<head>
<title>Ingreso de Datos</title>
</head>
<!-- comienza el script -->

<%
'definimos la variable de conexion
Dim Conexion,Tabla
Dim lngRecordNo 'Holds the record number to be updated
lngRecordNo = CLng(Request.Form("textfield"))
Set Conexion = Server.CreateObject("ADODB.Connection")
Set Tabla = Server.CreateObject("ADODB.Recordset")
'conectamos a la base de datos mediante OLE ODBC dando el Driver
Conexion.Open "Driver={Microsoft Access Driver (*.mdb)}; " & "Dbq=" & Server.MapPath("base.mdb")
'definimos la variable de carga de datos
Dim sql, cid, sqll
cid=Request.Form("textfield")

sql="UPDATE tabla1 SET "
sql=sql & "IdDoc='" & Request.Form("textfield") & "',"
sql=sql & "Revision='" & Request.Form("textfield2") & "',"
sql=sql & "Titulo='" & Request.Form("textfield3") & "',"
sql=sql & "Fecha='" & Request.Form("textfield4") & "',"
If (Request.Form("checkbox")) = "1" Then
sql = sql & "active=1"
End If
sql=sql & "Documento='" & Request.Form("textfield6") & "'"
sql=sql & " WHERE IdDoc='" & cid & "'"

on error resume next
Conexion.Execute sql
if err<>0 then
response.write("No update permissions!")
else
response.write("Record " & cid & " was updated!")
end if

response.write Request.Form("checkbox")
response.end

Conexion.close
Response.Redirect "Menu.html"

%>
  #19 (permalink)  
Antiguo 28/10/2006, 10:35
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Ok, dices que tu sentencia si actualiza bien, solo q lo del checkbox no entra cierto ?

If (cint(Request.Form("checkbox"))) = 1 Then
sql = sql & "active=true"
End If


si te regresa 1 deberia de funcionar lo de arriba . Ahora bien, tu campo ACTIVE es del tipo SI/NO de access, por q no le cambias a true en vez de 1,

Última edición por orharo2003; 28/10/2006 a las 10:51
  #20 (permalink)  
Antiguo 28/10/2006, 11:53
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Cita:
si te regresa 1 deberia de funcionar lo de arriba . Ahora bien, tu campo ACTIVE es del tipo SI/NO de access, por q no le cambias a true en vez de 1,
Hola master, te contesto por que no deberia hacerse esto. Sucede que un campo true/false no es mas que un booleano cierto? 1/0 sucede que en sistemas en español, access interpretará el booleano como si/no así literalmente, obvio puedes hacerle el workaround de cambiar tu LCID y demás, pero siempre es mejor utilizar el tipo de dato correcto que no es más que para un booleano un entero que toma dos valores. Por eso mi recomendación de enviar 1/0.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #21 (permalink)  
Antiguo 28/10/2006, 12:54
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Hola Muchas Gracias a todos por estar ayudando. Ya probe con :

if Request.Form("checkbox") = 1 then
sql = sql & " active = 'Sí' "
end if


If (Request.Form("checkbox")) = True Then
sql = sql & "active='Yes'"
End If


if Request.Form("checkbox") = "1" then
sql = sql & " active = 'Yes' "
end if

y mas ...

Osea no entiendo la logica ! si utilizo la misma logica que hice en buscar la cual es :

<%
If Tabla.Fields("Vigente") = TRUE then
%>

<input type="checkbox" name="checkbox" value="1" CHECKED>
<%
ELSE
%>
<INPUT TYPE="checkbox" NAME="checkbox" value="1">
<%
end IF
%>

Seria :

If (Request.Form("checkbox")) = 1 Then
sql = sql & "active= 'True' "
End If

Lo cual no me funciona !!!!! Estoy hace unos 3 dias con este tema me esta volviendo loco.
En access español tengo configurado el tipo de dato Sí/No literalmente y con un formato Sí/No literalmente.Los otros dos formatos son Verdadero/Falso y Activado/Desactivado.

BUeno espero puedan darme una solucion.

Desde ya kiero agradecer mucho a Goldman, Orharo y a todos lso que forman parte de este foro.

Gracias Totales
  #22 (permalink)  
Antiguo 28/10/2006, 13:06
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
No funciona ni asi ?

If (cint(Request.Form("checkbox"))) = 1 Then
sql = sql & "active=1"
End If

  #23 (permalink)  
Antiguo 28/10/2006, 13:16
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Hola Orharo ! Gracias por estar presente. Copie tal cual el codigo y lo pegue en mi codigo quedandome asi:

sql="UPDATE tabla1 SET "
sql=sql & "IdDoc='" & Request.Form("textfield") & "',"
sql=sql & "Revision='" & Request.Form("textfield2") & "',"
sql=sql & "Titulo='" & Request.Form("textfield3") & "',"
sql=sql & "Fecha='" & Request.Form("textfield4") & "',"
If (cint(Request.Form("checkbox"))) = 1 Then
sql = sql & "active=1"
End If
sql=sql & "Documento='" & Request.Form("textfield6") & "'"
sql=sql & " WHERE IdDoc='" & cid & "'"

Y asi y todo me me funciona!!!!
  #24 (permalink)  
Antiguo 28/10/2006, 13:25
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Cita:
Iniciado por u_goldman Ver Mensaje
Hola master, te contesto por que no deberia hacerse esto. Sucede que un campo true/false no es mas que un booleano cierto? 1/0 sucede que en sistemas en español, access interpretará el booleano como si/no así literalmente, obvio puedes hacerle el workaround de cambiar tu LCID y demás, pero siempre es mejor utilizar el tipo de dato correcto que no es más que para un booleano un entero que toma dos valores. Por eso mi recomendación de enviar 1/0.

Saludos
Gracias master .

Lo bueno y es fin de semana Ya !!!!
  #25 (permalink)  
Antiguo 28/10/2006, 13:31
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Si lo lei a eso. Pero como hago para poner en el formato de acces 1/0 si solamente me deja elejir Sí/No literalmente.Los otros dos formatos son Verdadero/Falso y Activado/Desactivado.
Y con el codigo que em has pasadyo ya probe y no me funciona.

Gracias Orharo por estar presente
  #26 (permalink)  
Antiguo 28/10/2006, 16:40
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Que tipo de dato pongo en la base de datos access y en que formato ???
COmo armo el sgte cod segun formato y tipo de dato que seleccione ariba para este sentencia

If (Request.Form("checkbox")) = True Then
sql = sql & "active='Yes'"
End If

y para la sgte :


<%
If Tabla.Fields("Vigente") = TRUE then
%>

<input type="checkbox" name="checkbox" value="1" CHECKED>
<%
ELSE
%>
<INPUT TYPE="checkbox" NAME="checkbox" value="1">
<%
end IF
%>


Me volvio loco y aun no pude solucionarlo !!!!
Saludos y gracias a todos
  #27 (permalink)  
Antiguo 28/10/2006, 16:45
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
25 posts despues regresamos a donde partimos, vamos un poco de voluntad seria apreciada.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #28 (permalink)  
Antiguo 28/10/2006, 17:59
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
Probe todo! Hasta cambie a numerico el campo y como valor predetermiunado puse 0 .Una vez que hacia esto lograba hacer un update pero me ponia -1 en la base.
Bueno es por eso que me gustaria saber como funciona porque me pare q no tengo claro los conceptos nose me agote de probar.Mi logica fue facil
<%
If Tabla.Fields("Vigente") = TRUE then
%>

<input type="checkbox" name="checkbox" value="1" CHECKED>
<%
ELSE
%>
<INPUT TYPE="checkbox" NAME="checkbox" value="1">
<%
end IF
%>

si esto me funciona en el proceso de update tendria que hacer al revez probe

If (cint(Request.Form("checkbox"))) = 1 Then
sql = sql & "active=True"
End If

Y no me funciona es por ello que recurri aqui , pero pude ver que cosas como que todos la pasan difrente forma para metros como "active='Yes'" o If (Request.Form("checkbox")) = 1 Then
o If (Request.Form("checkbox")) = "1" Then es como que perdi la logica si lleba comilla ,sino lleva etc.
La verdad es que em esta volviendo loco Es por eso que adjunto los campo de mi form y los de mi update los cuales son:
Para ver si alguien ve el error
If (Request.Form("checkbox")) = True Then
sql = sql & "active='Yes'"
End If

y para la sgte :


<%
If Tabla.Fields("Vigente") = TRUE then
%>

<input type="checkbox" name="checkbox" value="1" CHECKED>
<%
ELSE
%>
<INPUT TYPE="checkbox" NAME="checkbox" value="1">
<%
end IF
%>


Mi base es access mi tipo de dato si/no y mi formato si/no
  #29 (permalink)  
Antiguo 28/10/2006, 18:12
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Cita:
Probe todo! Hasta cambie a numerico el campo y como valor predetermiunado puse 0 .Una vez que hacia esto lograba hacer un update pero me ponia -1 en la base.
Amigo mio, vaya a descansar, su programa esta funcionando -1 = 1 = true = Si

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #30 (permalink)  
Antiguo 28/10/2006, 23:20
 
Fecha de Ingreso: octubre-2006
Mensajes: 17
Antigüedad: 17 años, 7 meses
Puntos: 0
El drama era despeus que cuando queria hacer un update de ese campo me daba error ovbiamente por que habia -1 y no 1.
como se hace para solucionarlo ? Enteindes a que me refiero
Muchas 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 00:43.