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

Actualizar agregando un nuevo registro

Estas en el tema de Actualizar agregando un nuevo registro en el foro de ASP Clásico en Foros del Web. Hola Quisiera ver si me pueden orientar Tengo una tabla que manualmente actualizamos pero ahora me pidieron realizar un script para actualizarla un poco mas ...
  #1 (permalink)  
Antiguo 24/02/2008, 22:55
Avatar de webbeginner  
Fecha de Ingreso: noviembre-2004
Mensajes: 241
Antigüedad: 19 años, 7 meses
Puntos: 2
Actualizar agregando un nuevo registro

Hola
Quisiera ver si me pueden orientar
Tengo una tabla que manualmente actualizamos pero ahora me pidieron realizar un script para actualizarla un poco mas automaticamente y me esta costando mucho trabajo porque no encuentro una buena forma de hacerlo

La tabla a actualizar es esta



El funcionamiento de dicha actualizaciòn como lo hacemos manual es el siguiente:
Tenemos una tabla llamada HISTORIA, y supongamos que se requiere actualizar el registro cuyo ID es el 341 (la columna que se desea editar es referencia) , entonces en vez de actualizar dicho campo, se genera otro registro (por ejemplo con el ID 342) con informaciòn identica al del 341, en este nuevo registro hacemos el cambio que necesitamos de la columna referencia. Una vez hecho esto hay que cambiar la columna estatus de uno a cero (lo que indica que ya no es el registro correcto) y en el nuevo registro hay que hacer que la columna estatus tenga el valor de uno (para indicar que es el registro correcto)



Aqui les muestro un còdigo que actualiza la columna referencia pero no crea el nuevo registro , no tengo idea de como puedo hacerlo



Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<HTML>
<HEAD>
	<TITLE>1</TITLE>
<% 
id_historial= 341 
referencia = "34453" %>
<center>Consulta a una base de datos</center>
<%
Dim oConn, rs, SQL
Dim nombre
'Creo el objeto Connection
set oConn =  Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("bd1.mdb")
SQL= "UPDATE historia SET estatus = 1, referencia = '" & estatus & "' where id_historial = " & id_historial & ""
set rs = oConn.Execute(SQL)

	Response.Write("SE ACTUALIZO tabla")


oConn.Close


%>
MAs informaciòn

ASP 3.0
Windows XP


Por favor solicito de su valiosa ayuda a modificar el codigo q tengo o a que me den ideas.

Gracias !!!!!!!!
__________________
************************
"La bondad es simple; la maldad, múltiple"
  #2 (permalink)  
Antiguo 25/02/2008, 08:13
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: Actualizar agregando un nuevo registro

A ver si te entendí bien:

Cita:
<%
id_historial= 341
referencia = "5345345"


Dim oConn, rs, SQL
Dim nombre
'Creo el objeto Connection
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("bd1.mdb")


'actualizamos el estatus a 1
Sql="UPDATE historia SET estatus = 0, referencia = '" & estatus & "' where id_historial = " & id_historial
oConn.Execute(SQL)
'y generamos un nuevo registro con los mismos datos pero con estatus 1
Sql="INSERT INTO historia "
Sql=Sql & "SELECT id_tipo, 1,referencia WHERE where id_historial = " & id_historial
oConn.Execute(SQL)
Response.Write("SE ACTUALIZO tabla")

oConn.Close

%>
Ojala sea eso, espero te sirva,
Saludos!
  #3 (permalink)  
Antiguo 25/02/2008, 09:17
Avatar de webbeginner  
Fecha de Ingreso: noviembre-2004
Mensajes: 241
Antigüedad: 19 años, 7 meses
Puntos: 2
Re: Actualizar agregando un nuevo registro

Gracias por responder pcarvajal !!!

Como siempre todos ayudando !!

En este momento no tengo el servidor para hacer la prueba

Solo me surge la duda


Con estas lineas
Código:
Sql="INSERT INTO historia "
Sql=Sql & "SELECT id_tipo, 1,referencia WHERE where id_historial = " & id_historial
¿¿Se garantiza que tenga el mismo contenido del registro viejito ?? me refiero al contenido inicial del campo referencia, porque me faltan 5 columnas mas, que no puse en la imagen para simplificar mi necesidad pero que requiero que todo el registro completo con todas sus columnas sea identico en el nuevo y el viejito (claro, excepto el campo referencia que es el que quiero actualizar y el de estatus)

de verdad agradezco mucho que hayas respondido
__________________
************************
"La bondad es simple; la maldad, múltiple"
  #4 (permalink)  
Antiguo 25/02/2008, 09:36
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: Actualizar agregando un nuevo registro

Hola de nuevo,
Cita:
Sql=Sql & "SELECT id_tipo, 1,referencia WHERE where id_historial = " & id_historial
Lo que está en rojo te garantiza que sea "una copia feliz del edén", ya que estarías duplicando los datos del registro según el filtro.
Si son mas campos deberias colocarlo así:

Cita:
Sql=Sql & "SELECT id_tipo, 1,referencia, campo1,campo2, campoN WHERE where id_historial = " & id_historial
Pruebalo y avisa como te va,
Saludos!
  #5 (permalink)  
Antiguo 25/02/2008, 09:47
Avatar de webbeginner  
Fecha de Ingreso: noviembre-2004
Mensajes: 241
Antigüedad: 19 años, 7 meses
Puntos: 2
Re: Actualizar agregando un nuevo registro

Entendido

Muero de ganas por probar el script



Muchas gracias por tu valiosa ayuda !!
__________________
************************
"La bondad es simple; la maldad, múltiple"
  #6 (permalink)  
Antiguo 25/02/2008, 09:51
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: Actualizar agregando un nuevo registro

pues ojala te sirva
y no dejes de avisar

Saludos!
  #7 (permalink)  
Antiguo 25/02/2008, 09:57
Avatar de webbeginner  
Fecha de Ingreso: noviembre-2004
Mensajes: 241
Antigüedad: 19 años, 7 meses
Puntos: 2
Re: Actualizar agregando un nuevo registro

Hola aqui de nuevo


Estoy viendo que en el script primero hago la actualización del campo referencia y el estatus lo cambio a cero, despues hago una inserción con el contenido identico.

Pero requiero que el campo "antiguo" quede intacto a excepción del campo estatus, una vez hecho esto, insertar un nuevo registro .... y a este nuevo registro hacerle la actualización de referencia, supongo que solo es invertir las sentencias SQL ¿o como funciona la prioridad de ejecuciones?

Siento que no es tan simple como cambiar el orden de las sentencias porque para actualizar el registro recién insertado necesitaria conocer su id para poder editarlo

¿Como podría ser la mecanica?

__________________
************************
"La bondad es simple; la maldad, múltiple"
  #8 (permalink)  
Antiguo 25/02/2008, 10:08
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: Actualizar agregando un nuevo registro

Cita:
Pero requiero que el campo "antiguo" quede intacto a excepción del campo estatus, una vez hecho esto, insertar un nuevo registro .... y a este nuevo registro hacerle la actualización de referencia, supongo que solo es invertir las sentencias SQL ¿o como funciona la prioridad de ejecuciones?
Si mal no te entendí, es precisamente lo que hace el codigo, mira:


Aqui solo actualizas la referencia, el campo te queda intacto

Cita:
'actualizamos el estatus a 1
Sql="UPDATE historia SET estatus = 0, referencia = '" & estatus & "' where id_historial = " & id_historial
oConn.Execute(SQL)

y aqui haces la copia con el campo referencia en 1
Cita:

'y generamos un nuevo registro con los mismos datos pero con estatus 1
Sql="INSERT INTO historia "
Sql=Sql & "SELECT id_tipo, 1,referencia WHERE where id_historial = " & id_historial

Ahora, si no era eso lo que habías explicado, hazlo con dibujitos porque como es Lunes ando muuuuyyyy lento

Saludos!
  #9 (permalink)  
Antiguo 25/02/2008, 11:34
Avatar de webbeginner  
Fecha de Ingreso: noviembre-2004
Mensajes: 241
Antigüedad: 19 años, 7 meses
Puntos: 2
Re: Actualizar agregando un nuevo registro

Hola

Cita:
Iniciado por pcarvajal Ver Mensaje
Si mal no te entendí, es precisamente lo que hace el codigo, mira:


Aqui solo actualizas la referencia, el campo te queda intacto



Saludos!
O sea el registro (el viejito) si queda intacto, lo que no queda intacto es el campo Referencia, ya que se está actualizando con la nueva información y este registro (el viejito) debe quedar intacto el unico campo que hay que cambiar es el de estatus, y en el codigo se cambia estatus y referencia...

OJO: Referencia si se va a actualizar pero solo en el registro nuevo ... unicamente ahi necesitamos el campo referencia actualizado, esto para que el valor incial de Referencia quede como historico en el registro viejito

En resumen

En el registro (o renglón) viejito se debe actualizar estatus a cero
En el nuevo registro (o renglón), se debe hacer un clon del registro viejtio pero con el campo Referencia actualizado (aki es donde se actualiza la información de referencia)



Si se entiende mejor ??


saludos !!!!
__________________
************************
"La bondad es simple; la maldad, múltiple"
  #10 (permalink)  
Antiguo 27/02/2008, 06:47
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 5 meses
Puntos: 8
Re: Actualizar agregando un nuevo registro

ok, entonces así quedaría:
Cita:
<%
id_historial= 341
referencia = "5345345"


Dim oConn, rs, SQL
Dim nombre
'Creo el objeto Connection
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("bd1.mdb")


'en el viejito
Sql="UPDATE historia SET estatus = 0 where id_historial = " & id_historial
oConn.Execute(SQL)

'creamos el nuevo con el estatus en 1 y la referencia actualizada
Sql="INSERT INTO historia "
Sql=Sql & "SELECT id_tipo, 1," & referencia & ",campo1, campo2, campoN WHERE id_historial = " & id_historial
oConn.Execute(SQL)
Response.Write("SE ACTUALIZO tabla")

oConn.Close

%>
Saludos!
  #11 (permalink)  
Antiguo 27/02/2008, 16:56
Avatar de webbeginner  
Fecha de Ingreso: noviembre-2004
Mensajes: 241
Antigüedad: 19 años, 7 meses
Puntos: 2
Re: Actualizar agregando un nuevo registro

Perfecto

Te comento que funciono excelentemente bien

Muchas gracias por tu ayuda !!!!!
__________________
************************
"La bondad es simple; la maldad, múltiple"
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 13:30.