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

Actualizacion mediante checkbox

Estas en el tema de Actualizacion mediante checkbox en el foro de ASP Clásico en Foros del Web. Hola amigos Nuevamente estoy aqui para pedirles una ayudita Estoi haciendo una aplicacion en la cual traigo datos desde una base de datos access, algunos ...
  #1 (permalink)  
Antiguo 25/02/2010, 14:42
 
Fecha de Ingreso: enero-2010
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Actualizacion mediante checkbox

Hola amigos
Nuevamente estoy aqui para pedirles una ayudita


Estoi haciendo una aplicacion en la cual traigo datos desde una base de datos access, algunos de esos datos son de tipo si/no lo que nescesito es cambiar el estado de esos datos mediante un formulario en asp, marcando varios checkbox y despues dandole al boton actualizar.

El formulario es algo asi:



cada dato puede tener un solo estado (despachado, pendiente, devujelto o nulo)
despues de actualizar solo debe mostrar los que no esten despachados y esten pendientes (osea despachado=true y pendiente=true)

Este es el select que hago para eso

Código:
txtSql ="SELECT * FROM Ventas where despachado=false and devuelto=false and nula=false "   


.


He intentado hacerlo con if y con case pero nada
lo mas que he logrado es que me modifique un solo dato en la base.


Espero sus comentarios
de antemano gracias
  #2 (permalink)  
Antiguo 25/02/2010, 17:43
 
Fecha de Ingreso: enero-2010
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Actualizacion mediante checkbox

Este es el codigo que he estado usando
pero definitivamente no esta correcto




Código:
<%

set Con = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("base.mdb")

txtSql ="SELECT * FROM Ventas where despachado=false and devuelto=false and nula=false "

Set Rs=Con.Execute(txtSql)

Do While Not Rs.EOF
If Rs("despachado") = true then
	color = "#99CCFF"
Else
	color = "#CCFFFF"
End if
%>

<tr bgColor= <%= color %>>

  <td><input name="folio5" id="folio5 "type ="hidden" value="<%=Rs("folio")%>" "></td>
  <td><%=Rs("folio")%></td>
<td><%=Rs("nombre")%></td>
<td><input name="folio1" type="checkbox" id="folio1" value=""></td>
<td><input name="folio2" type="checkbox" id="folio2" value="" ></td>
<td><input name="folio3" type="checkbox" id="folio3" value=""></td>
<td><input name="folio4" type="checkbox" id="folio4" value=""></td>
<td><%=Rs("Total")%></td></tr>

<%Rs.MoveNext
Loop
%>

Esto lo envia mediante formulario a "actualiza.asp"


actualiza.asp



Código:
if Request.Form("folio1")= true then
	txtSql="Update Ventas Set despachado = true Where folio in("&Request.Form("folio")&")"
	Set Rs=Con.Execute(txtSql)
			Mensaje = "Se actualizaron los registros "

end if
if Request.Form("folio2")= true then
	txtSql="Update Ventas Set pendiente = true Where folio In("&Request.Form("folio5")&")"	Set Rs=Con.Execute(txtSql)
			Mensaje = "Se actualizaron los registros "
end if

if Request.Form("folio3")= true then
	txtSql="Update Ventas Set devuelto = true Where folio In("&Request.Form("folio5")&")"
	Set Rs=Con.Execute(txtSql)
			Mensaje = "Se actualizaron los registros "
end if

if Request.Form("folio4")= true then
	txtSql="Update Ventas Set despachado = true Where folio In("&Request.Form("folio5")&")"
	Set Rs=Con.Execute(txtSql)
			Mensaje = "Se actualizaron los registros "
end if
			
			
	
%>
<body>
<script LANGUAGE="JavaScript">

var pagina="ComoHotmail.asp"
function redireccionar()
{
location.href=pagina
}
setTimeout ("redireccionar()", 0);

</script>
<%= Mensaje%>
  #3 (permalink)  
Antiguo 25/02/2010, 18:16
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Actualizacion mediante checkbox

Cita:
cada dato puede tener un solo estado (despachado, pendiente, devujelto o nulo)
Entonces debes usar radios en lugar de checks

Cita:
despues de actualizar solo debe mostrar los que no esten despachados y esten pendientes (osea despachado=true y pendiente=true)
Si solo puede tener UN estado entonces estas buscando SOLO los que estén pendientes ¿no crees?

txtSql ="SELECT * FROM Ventas WHERE pendiente = 1 " '¿1 es para true?, ya no recuerdo

(Deberías tener un campo llamado estado con una letra como valor que lo identifique en lugar de uno por cada diferente estado)

¿cuál es la duda específica?
  #4 (permalink)  
Antiguo 25/02/2010, 18:47
 
Fecha de Ingreso: enero-2010
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Actualizacion mediante checkbox

Entonces debes usar radios en lugar de checks



Cita:
Iniciado por Myakire Ver Mensaje
Si solo puede tener UN estado entonces estas buscando SOLO los que estén pendientes ¿no crees?

no podria ser asi, porque esa base de datos se esta llenando periodicamente de datos desde otra base de datos, vienen en blanco solo nombre folio y demases, pero los campos si/no no estan especificados, por lo que deberia mostrar los que no estan despachados y los que por alguna razon en alguna actualizacion anterior quedaron pendientes , no se si me explico ( si no lo hago, pudeo esforzarme mas
  #5 (permalink)  
Antiguo 26/02/2010, 07:49
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Actualizacion mediante checkbox

La verdad es que por lo menos yo, no he entendido de todo. No me ha quedado claro el por qué no puedes poner radios, ni el por que no puedes buscar solo los pendientes si eso es lo que comentaste.

En general no he entendido cual es el problema o la duda que tienes.
  #6 (permalink)  
Antiguo 26/02/2010, 08:21
 
Fecha de Ingreso: enero-2010
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Actualizacion mediante checkbox

La utilizacion de radios no esta en discucion, se me pidieron check y asi tendra que ser XD.. Donde manda capitan...

Lo otro, a lo que me referia yo, no podria solo buscar los pendientes porque la base de datos esta recibiendo altas continuas de datos nuevos, los cuales hay que clasificar en despachado, pendiente, devuelto o nulo. Osea siempre habran datos nuevos sin ningun tipo de clasificacion, si buscase solo los pendientes no me mostrara los datos nuevos que no estan despachados.


La duda de lo anterior es la siguiente.

Como puedo hacer para mandar el valor del folioen cada checkbox y que en la pagina de recepcion del formulario haga el update correspondiente al folio que se marco y al campo que se marco (despachado, pendiente, dev, nula)

de antemano muchas gracias
  #7 (permalink)  
Antiguo 26/02/2010, 10:02
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Actualizacion mediante checkbox

Cita:
Iniciado por under_milox Ver Mensaje
La utilizacion de radios no esta en discucion, se me pidieron check y asi tendra que ser XD.. Donde manda capitan...
El que así te lo hayan esquematizado no significa que así lo hayan pedido, tu como programador debes analizar que ese formato puede dar pie a tener un registro con múltiples estados lo que a todas luces es incorrecto, pero ahora si que, es tu cliente y tu sabrás.

Cita:
Iniciado por under_milox Ver Mensaje
Lo otro, a lo que me referia yo, no podria solo buscar los pendientes porque la base de datos esta recibiendo altas continuas de datos nuevos, los cuales hay que clasificar en despachado, pendiente, devuelto o nulo. Osea siempre habran datos nuevos sin ningun tipo de clasificacion, si buscase solo los pendientes no me mostrara los datos nuevos que no estan despachados.
ok, entonces es con algo como WHERE Pendiente = true OR (Estado1 is null AND Estado2 is null AND Estado3 is null etc etc)

Cita:
Iniciado por under_milox Ver Mensaje
La duda de lo anterior es la siguiente.
Como puedo hacer para mandar el valor del folioen cada checkbox y que en la pagina de recepcion del formulario haga el update correspondiente al folio que se marco y al campo que se marco (despachado, pendiente, dev, nula)
Esto se complica un poco por que debes de considerar la posibilidad de lo que menciono en el primer párrafo, entonces no puedes hacer un simple update con el value del parámetro, tienes que validar cada uno, a lo rápido y sin meditarlo mucho supongo que esto te funcionaría:

1) A los checks les vas a poner de nombre algo como name="<%rs("Id")E1%>" para el estado 1, name="<%rs("Folio")E2%>" para el estado dos, y así sucesivamente. Esto es para poder correlacionar los diferentes checks con el Id al que actualizarán.
2) Vas a tener que tener un parámetro oculto con el mismo nombre y con el value igual al ID (el folio), esto para que se mande una cadena separada por comas con cada uno de los folios del listado
3) en la página de la actualización, hacer un SPLIT al parámetro que tiene los numeros de folios y recorrer en un ciclo cada folio del vector resultante
4) Si ya tienes el numero de folio, ya tienes el nombre de los checks a buscar, entonces concatenas la sentencia update con algo como:

sql = "UPDATE Tabla SET "
if Request(vectorFolios(i)&"E1")<>"" Then
sql = sql & " despachado = true "
elseif Request(vectorFolios(i)&"E2")<>"" Then
sql = sql & " pendiente = true "
etc
etc

5) Validar los casos donde no se actualice ningún estado (otra vez, al ser check box estar permitiendo que seleccionen todos los estados o ninguno)

y listo, con eso tienes
  #8 (permalink)  
Antiguo 03/03/2010, 07:11
 
Fecha de Ingreso: enero-2010
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Actualizacion mediante checkbox

como hago u split?
Perdon la ignorancia
  #9 (permalink)  
Antiguo 03/03/2010, 08:24
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Actualizacion mediante checkbox

Cita:
Iniciado por under_milox Ver Mensaje
como hago u split?
Perdon la ignorancia
Tienes dos formas:

así:



o así:

función split


Etiquetas: checkbox, actualizaciones
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 19:59.