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

Actualización de multiples registros

Estas en el tema de Actualización de multiples registros en el foro de ASP Clásico en Foros del Web. Buenas tardes, tengo un formulario que rescata de las bases de datos todos los registros que tienen en blanco determinado campo, y a su vez ...
  #1 (permalink)  
Antiguo 14/08/2008, 12:30
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Actualización de multiples registros

Buenas tardes, tengo un formulario que rescata de las bases de datos todos los registros que tienen en blanco determinado campo, y a su vez este formulario, muestra ese campo con la posibilidad de marcarlo para así proceder a su actualización.

Una vez marcados los registro que deseo modificar, los cuales puede ser uno, varios o todos, pretendo que se actualicen con el siguiente código, pero no funciona, no se que puedo estar haciendo mal, gracias de antemano por la colaboración.

- CODIGO
-------------------------------------------------------------------------------

IF Request.Form=("id") then
response.redirect("error.asp")
else

Dim Base
Dim SQL
DIM ID
dim titulo
dim categoria
dim subcategoria
dim valida

id = request.form("id")
titulo = request.form ("titulo")
categoria =request.form ("categoria")
subcategoria =request.form("subcategoria")
valida=request.form("valida")




if request.form("valida") <> "" then valida = "true" else valida="false"



Set Base = Server.CreateObject("ADODB.Connection")
Base.Open = "mibasededatos.mdb"
sql="update anuncios SET fecha='"&date()&"', titulo='"&titulo&"',categoria='"&categoria&"', subcategoria='"&subcategoria&"', valida='"&valida&"' where id="&id&""
Base.Execute SQL


base.close
set base=nothing
%>


<%
end if

%>

--------------------------------------------------------------------------

ME DA EL SIGUIENTE ERROR:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (coma) en la expresión de consulta 'id=6757, 6758'.

/administrador/actualizar_anuncios.asp, línea 50

-----------------------------------------------------------------

gracias
  #2 (permalink)  
Antiguo 14/08/2008, 13:32
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Actualización de multiples registros

Hola

Te doy esta posible solución pero no estoy muy convencido de que funcione, puesto que no entiendo, tal y como lo tienes planteado, que la variable id contenga algo como (6757, 6758) ya que no es un arreglo. Estaría bien que revisaras lo que esta enviando el formulario.

Posible solución

Código:
sql="update anuncios SET fecha='"&date()&"', titulo='"&titulo&"',categoria='"&categoria&"', subcategoria='"&subcategoria&"', valida='"&valida&"' where "
datos = Split(id,",")
for i = 0 to UBound(datos)
if i <> 0 then
sql = sql & "or "
end if
sql = sql & "id="&datos(i)&""
next
sql = sql & """
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 15/08/2008, 12:13
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Actualización de multiples registros

Gracias Adler de antemano por tu ayuda, te comento que 6757, 6758, corresponden a los id que no tienen marcado el campo "valida" en la base de datos.

Efectivamente se dió lo que pensabas, no funcionó, ahora me da este error:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][Controlador ODBC Microsoft Access] No coinciden los tipos de datos en la expresión de criterios.

/administrador/actualizar_anuncios.asp, línea 59

La línea 59 es esto:

Base.Execute SQL

Mil gracias otra vez por tu colaboración
  #4 (permalink)  
Antiguo 15/08/2008, 12:48
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Actualización de multiples registros

¿Funcionará algo así..?

Código HTML:
<%	

	var1=request.form("id") 'Asigna los datos que viene de la otra pagina
	var2=split(var1,",") 'Elimina las comas que contengan esos valores y asigna los valores a "var1"
	Set Base = Server.CreateObject("ADODB.Connection")
	Base.Open = "mibasededatos.mdb" 
	for i=LBound(var2) to UBound(var2) 'Toma a "var2" como un arreglo y lo recorre de principio a fin
		id=Trim(var2) 'Elimina, si hubiera espacios en blanco al inicio y final de cada elemento y los asigna a la variable "id"
		sql="update anuncios SET fecha='"&date()&"', titulo='"&titulo&"',categoria='"&categoria&"', subcategoria='"&subcategoria&"', valida='"&valida&"' where id="&id&"" 'Y ahora si hace la consulta con cada uno de los "id" que se encuentren
		Base.Execute SQL
	next
	base.close
	set base=nothing

%>
Prueba y nos dices que paso...

Saludos...
  #5 (permalink)  
Antiguo 16/08/2008, 03:40
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Sonrisa Respuesta: Actualización de multiples registros

Gracias ciisteado, tampoco funcionó, primero m daba este error:

Error de Microsoft VBScript en tiempo de ejecución error '800a000d'

No coinciden los tipos

/administrador/actualizar_anuncios.asp, línea 55

Linea 55:
id=trim(var2)

Lo modifiqué a:
id=var2

y me da este error:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (coma) en la expresión de consulta 'id=6757, 6758, 6759, 6760, 6761, 6762, 6763, 6765, 6766'.

/administrador/actualizar_anuncios.asp, línea 57

------------------------------

Estos números:
6757, 6758, 6759, 6760, 6761, 6762, 6763, 6765, 6766
Corresponden a los id de los anuncios insertados por los usuarios.

Gracias por tu ayuda,
  #6 (permalink)  
Antiguo 16/08/2008, 04:40
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Actualización de multiples registros

Hola

¿Podrías usar otra vez el código que te pasé?. Añádele después de Base.Execute SQL

Response.Write SQL
Response.End ()


y mostrarnos lo que te dice

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 16/08/2008, 08:25
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Actualización de multiples registros

Gracias Adler, funcionó parcialmente con el código que me enviaste, te cuento que había obviado la la conexión por eso era que me daba error... normalmente trabajo con includes por eso estaba segura de que no era ese el problema..

Pero ahora lo que pasa es que todo se actualiza, cuando en realidad solo debe actualizar lo que está marcado en el formulario (<input type="Checkbox" name="valida" value="SI"<%=valida%>/>)

Gracias otra vez...
  #8 (permalink)  
Antiguo 16/08/2008, 08:56
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Actualización de multiples registros

No está funcionando bien, el resultado es que por ejemplo:

Si tengo 2 anuncios por actualizar, de difetentes categorias y subcategorias, me lista en cada anuncio tantas categorias y subcategoria estén pendientes, ejemplo:

anuncio 1
categoria a, subcategiria ab

anuncio 2
categoria c, subcategoria cb

listado:

anuncio1
categoria: a, c
subcategoria: ab, cb
  #9 (permalink)  
Antiguo 16/08/2008, 13:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Actualización de multiples registros

Hola

Perdona pero no he entendido nada

Cita:
Iniciado por Cameron_2006 Ver Mensaje
<input type="Checkbox" name="valida" value="SI"<%=valida%> />
Se suponse que el checkbox tendría que ser algo como

Código:
<input type="Checkbox" name="valida" value="SI" />
o
<input type="Checkbox" name="valida" value="<%=valida%>" />
Además no crees que sería mejor si cada checkbox tuviera un nombre distinto (valida1, valida2, valida3...) y su valor fuera la id del registro que se quiere actualizar?

Cita:
Iniciado por Cameron_2006 Ver Mensaje
Si tengo 2 anuncios por actualizar, de difetentes categorias y subcategorias, me lista en cada anuncio tantas categorias y subcategoria estén pendientes
Deberías introducir esos campos en el ciclo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 17/08/2008, 12:25
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Sonrisa Respuesta: Actualización de multiples registros

Disculpa no me expliqué bien, de todas maneras ya encontré una forma de hacerlo y es colocando un botón al lado de cada registro que al pulsarlo actualiza la fecha, no es muy practico ya que actualizo de uno en uno, pero por ahora está bien.

Lo unico que he logrado hacer del todo bien es seleccionar por medio de un checkbox los registros que quiera borrar, y se borran correctamente.

Te doy las gracias por la colaboración.
  #11 (permalink)  
Antiguo 17/08/2008, 18:43
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Respuesta: Actualización de multiples registros

creo que este codigo puede funcionarte perfectamente pero con unas cuantas variantes, por ejemplo....

no requiere realizar un trim dentro del FOR...
Cita:
<%

var2=split(request.form("id"),",")
Set Base = Server.CreateObject("ADODB.Connection")
Base.Open = "mibasededatos.mdb"
for i=0 to UBound(var2)
sql="update anuncios SET "&_
"fecha='"&date()&"', "&_
"titulo='"&titulo&"', "&_
"categoria='"&categoria&"', "&_
"subcategoria='"&subcategoria&"',"&_
"valida='"&valida&"' "&_
"where id="&var2(i)
Base.Execute SQL
next
base.close
set base=nothing

%>
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #12 (permalink)  
Antiguo 17/08/2008, 22:11
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: Actualización de multiples registros

con permiso

ummmm y si lo sacamos de un for y le hacemos un
Cita:
where id in("&id&")"
¿?
__________________
JuanRa Pérez
San Salvador, El Salvador
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 20:35.