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

actualizar en vez de añadir un nuevo registro?

Estas en el tema de actualizar en vez de añadir un nuevo registro? en el foro de ASP Clásico en Foros del Web. Hola tengo este codigo: <!--#include file="xelupload.asp"--> <% Dim up, fich 'Dim sNombre 'sNombre = Trim(Request.Form("Fiche")) 'rs.Fields("archivo")=sNombre set up = new xelUpload up.Upload() Dim fich1, fich2, ...
  #1 (permalink)  
Antiguo 03/06/2004, 09:39
 
Fecha de Ingreso: junio-2003
Mensajes: 36
Antigüedad: 21 años
Puntos: 0
actualizar en vez de añadir un nuevo registro?

Hola tengo este codigo:

<!--#include file="xelupload.asp"-->
<%
Dim up, fich
'Dim sNombre
'sNombre = Trim(Request.Form("Fiche"))
'rs.Fields("archivo")=sNombre
set up = new xelUpload
up.Upload()

Dim fich1, fich2, fichPDF


For each fich in up.Ficheros.Items

'Para guardarlo
'Con el nombre de fichero original:
if (LCase(Right(fich.Nombre,3)) = "jpg") or (LCase(Right(fich.Nombre,4)) = "jpeg") or (LCase(Right(fich.Nombre,3)) = "gif") then
fich.Guardar Server.MapPath("../../ServiciosOnline/digital/download/")
fich2 = fich.Nombre
else

if (LCase(Right(fich.Nombre,3)) = "pdf") then
fich.Guardar Server.MapPath("../../ServiciosOnline/digital/ficheros/")
'fichPDF = fich.Nombre
fich1 = fich.Nombre

else

fich.Guardar Server.MapPath("../../ServiciosOnline/digital/ficheros/")
fich1 = fich.Nombre
end if
end if

next

' Con otro nombre:
' fich.GuardarComo nombrefichero, Server.MapPath("rutavirtual")
'----------------------------------------------------------------
' Almacenar datos en base de datos
'Abrimos una conexión a una base de datos
Dim oConn, rs, SQL

set oConn = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")

'Nos conectamos con un DSN
oConn.Open "DSN=digital"

'Y abrimos la tabla Datos
SQL = "SELECT * FROM digital"

'Abrimos el Recordset con cerrojo 2 (adLockPessimiestic)
'que permite modificaciones

rs.Open SQL, oConn, 0, 2

'Añadimos un nuevo registro
rs.AddNew

'rs.Fields("description") = objUpload.Form("description")

rs.Fields("trimestre") = up.Form("trim")
rs.Fields("anyo") = up.Form("an")
'rs.Fields("prioridad") = up.Form("pri")
'rs.Fields("principal") = up.form("sino")
rs.Fields("resumen") = up.Form("resumen")
rs.Fields("fecha") = up.Form("fecha")
rs.Fields("titular")= up.Form("titular")
'rs.Fields("link")=up.Form("link")
rs.Fields("categoria")=up.Form("categoria")
rs.Fields("destino")=up.Form("destin")
rs.Fields("mes")=up.Form("meses")
rs.Fields("link_1")=up.Form("link1")
rs.Fields("link_2")=up.Form("link2")
rs.Fields("link_3")=up.Form("link3")
rs.Fields("link_4")=up.Form("link4")
rs.Fields("resumen2")=up.Form("resumen2")
rs.Fields("destacado")=up.Form("destacado")
rs.Fields("unodos")=up.Form("numerito")
rs.Fields("texto_link_1")=up.Form("texto_link1")
rs.Fields("texto_link_2")=up.Form("texto_link2")
rs.Fields("texto_link_3")=up.Form("texto_link3")
rs.Fields("texto_link_4")=up.Form("texto_link4")
'Guardamos el contenido del fichero en la base de datos:
'el nombre del fichero, su tipo

rs.Fields("imagen") = fich2
'nombre=rs.Fields("imagen")

rs.Fields("archivo") = fich1
'rs.Fields("pdf")=fichPDF

rs.Update
rs.Close


'Limpiamos objetos
set oFich = nothing
set objUpload = nothing
'rs.Close
set rs = nothing
oConn.Close
set oConn = nothing


'next
%>
<%Response.Redirect("nuevo_docRG.asp")%>
<title>Archivo Insertado</title>
<body bgcolor="#FFFFCC">


Y lo q quiero conseguir es q en vez de añadirme un registro nuevo..me actualice (update) un..registro...como puedo hacerlo?

Por favor alguien me puede ayudar? :(
  #2 (permalink)  
Antiguo 03/06/2004, 10:22
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
No recuerdo bien cómo se hacía de esta forma... yo siempre utilizo SQL (UPDATE tabla SET campo = valor). Pero veamos. Debés traer SOLAMENTE el registro que querés modififcar en la SQL y no toda la tabla... además, hay que quitar el rs.AddNew (porque no querés agregar un nuevo registro).


Código:
'Y abrimos la tabla Datos con el registro a modificar
SQL = "SELECT * FROM digital where algun_campo = " & request("algun_id")

'Abrimos el Recordset con cerrojo 2 (adLockPessimiestic)
'que permite modificaciones

rs.Open SQL, oConn, 0, 2

'lo siguiente no va más
'Añadimos un nuevo registro
'rs.AddNew

'rs.Fields("description") = objUpload.Form("description")

rs.Fields("trimestre") = up.Form("trim")
rs.Fields("anyo") = up.Form("an")
'rs.Fields("prioridad") = up.Form("pri")
'rs.Fields("principal") = up.form("sino")
rs.Fields("resumen") = up.Form("resumen")
rs.Fields("fecha") = up.Form("fecha")
rs.Fields("titular")= up.Form("titular")
'rs.Fields("link")=up.Form("link")
rs.Fields("categoria")=up.Form("categoria")
rs.Fields("destino")=up.Form("destin")
rs.Fields("mes")=up.Form("meses")
rs.Fields("link_1")=up.Form("link1")
rs.Fields("link_2")=up.Form("link2")
rs.Fields("link_3")=up.Form("link3")
rs.Fields("link_4")=up.Form("link4")
rs.Fields("resumen2")=up.Form("resumen2")
rs.Fields("destacado")=up.Form("destacado")
rs.Fields("unodos")=up.Form("numerito")
rs.Fields("texto_link_1")=up.Form("texto_link1")
rs.Fields("texto_link_2")=up.Form("texto_link2")
rs.Fields("texto_link_3")=up.Form("texto_link3")
rs.Fields("texto_link_4")=up.Form("texto_link4")
'Guardamos el contenido del fichero en la base de datos:
'el nombre del fichero, su tipo

rs.Fields("imagen") = fich2
'nombre=rs.Fields("imagen")

rs.Fields("archivo") = fich1
'rs.Fields("pdf")=fichPDF

rs.Update
rs.Close


Probalo así y comentanos
  #3 (permalink)  
Antiguo 03/06/2004, 10:29
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años, 1 mes
Puntos: 1
Bueno, así rápido, tienes 2 errores en la página:

1. Estás haciendo una consulta SQL general ("SELECT * FROM digital"), y con esto lo que consigues es recuperar TODOS los registros, cuando lo que tendrías que hacer es recuperar SOLO el registro que quieres actualizar. Por ejemplo, si quieres actualizar el registro 42 (por decir uno), podrías hacerlo así "SELECT * FROM digital WHERE id_registro = 42"

2. Estás utilizando "rs.AddNew", y con esto lo que haces es CREAR un nuevo registro en la tabla, por eso no puedes actualizarlo (aunque al final ponga Rs.Update).

Resumiendo:

Lo que estás haciendo actualmente es:

Recupera TODOS los resgistros de la tabla "digital" y añade uno nuevo.

Cuando lo que deberías hacer es:

Recupera el registro 42 (por poner un número) de la tabla "digital", y actualiza los datos del mismo.

Espero que te ayude, ante quialquier duda, pregunta

Un saludo

LeCLUB
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 21:22.