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

UPDATE 30 registros

Estas en el tema de UPDATE 30 registros en el foro de ASP Clásico en Foros del Web. uso este form ASP para cargar registros a un SQL server, como hago para ingresar los datos nuevamente y haga UPDATE en vez de otro ...
  #1 (permalink)  
Antiguo 22/03/2007, 22:22
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 2 meses
Puntos: 1
UPDATE 30 registros

uso este form ASP para cargar registros a un SQL server, como hago para ingresar los datos nuevamente y haga UPDATE en vez de otro insert.
Tengo un campo en la tabla que se llama "id_registro" que se autoincrementa y no se repite nunca, calculo que lo debo usar, pero no se como.

aqui mi form:

Código:
            <%
FInicio = "2007/1/1"
dia=DateDiff("d", FInicio ,date())
%>

<FORM METHOD="POST" ACTION="cargado.asp">
<%
for i = 0 to 30
%>
  <table width="70%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td><div align="center" class="Estilo10"><%=((Date() - dia) + i)%></div></td>
      <td><span class="Estilo10">
        <input name="bme<% = i %>" type="text" value="" size="15" /></span></td>
      <td><div align="center" class="Estilo10">
        <input name="fecha<% = i %>" type="hidden" value="<%=((Date() - dia) + i)%>" />
      </div></td>
      <td><div align="center" class="Estilo10">
        <input name="turno<% = i %>" type="hidden" value="1" />
      </div></td>
      <td><div align="center" class="Estilo10">
        <input name="local<% = i %>" type="hidden" value="1" />
      </div></td>
    </tr>
  </table>
  <%next%>
      <INPUT TYPE="hidden" value="<% = i %>" name="cantidad"> 
	  <INPUT TYPE="hidden" value="<% = i %>" name="cantidad2">
	  <INPUT TYPE="hidden" value="<% = i %>" name="cantidad3">
	  <INPUT TYPE="hidden" value="<% = i %>" name="cantidad4">
	  <br>
      <INPUT TYPE="SUBMIT" value="Insertar">
      </p>
</p>
    </FORM>
y aqui la hoja que toma los datos osea cargado.asp (a donde envia el form anterior)

Código:
              <%
'Recogemos los valores del formulario
cantidad = Request.Form("cantidad")
cantidad2 = Request.Form("cantidad2")
cantidad3 = Request.Form("cantidad3")
cantidad4 = Request.Form("cantidad4")

'Instanciamos y abrimos nuestro objeto conexion 
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "circulacion", "sa", ""
set objRS = CreateObject("ADODB.Recordset")


for i = 0 to cantidad
bme_actual = request.form("bme" & i)
fecha_actual = request.form("fecha" & i)
turno_actual = request.form("turno" & i)
local_actual = request.form("local" & i)
'Ahora creamos 30 sentencias SQL

if bme_actual<>"" or bme<>0 then
   sSQL="Insert Into costos_maxirest (bme,fecha,turno,local) values ('" & bme_actual & "','" & fecha_actual & "','" & turno_actual & "','" & local_actual & "')"
   'y Ejecutamos la orden 30 veces
   set objRS = Conn.Execute(sSQL)
end if

next
%>
</p>
            <p class="Estilo11">Datos cargados </p>
            <%
'Cerramos el sistema de conexion
Conn.Close
%>
cualquier consejo sera de gran ayuda.
muchisimas gracias.
pela
__________________
Bye!
  #2 (permalink)  
Antiguo 23/03/2007, 19:36
 
Fecha de Ingreso: marzo-2007
Mensajes: 80
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: UPDATE 30 registros

pudes hacer un consulta primero verificando si existe el registro por nombre, fecha o como quieras, si existe, extraes el id y en base a ello haces un update
  #3 (permalink)  
Antiguo 23/03/2007, 20:39
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: UPDATE 30 registros

me podrias orientar un poco mas como hacer?
soy novato :(

gracias amigo
__________________
Bye!
  #4 (permalink)  
Antiguo 24/03/2007, 05:44
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: UPDATE 30 registros

A ver si lo he entendido. ¿Quieres actualizar un mismo registro 30 veces?

Como el bucle va de 0 a 30. El 0 corresponde al Insert Into y desde el 1 al 30 al Update ¿Correcto?

Prueba esto

Código:
if bme_actual = 0 or bme = 0 then
sSQL="Insert Into costos_maxirest (bme,fecha,turno,local) values ('" & bme_actual & "','" & fecha_actual & "','" & turno_actual & "','" & local_actual & "')"

elseif bme_actual >=1 or bme>=1 then
sSQL="Update costos_maxirest Set ...."

      'y Ejecutamos la orden 30 veces
   set objRS = Conn.Execute(sSQL)
end if
Suerte
  #5 (permalink)  
Antiguo 24/03/2007, 06:34
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: UPDATE 30 registros

no, es un formulario que genera 31 registros distintos, osea cargo un valor distinto para cada BME y al enviar mi formulario carga 31 registros. (del 0 al 30) cada uno lleva una fecha y a la vez en mi tabla SQL se genera un ID para cada uno de esos registros, mi tema es, como hago para actualizar dichos valores, supongo que debo hacer referencia al campo ID...pero no se como hacer.

gracias por la ayuda
__________________
Bye!
  #6 (permalink)  
Antiguo 24/03/2007, 08:37
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: UPDATE 30 registros

Supongo que los registros que vas a actualizar son consecutivos.

Código:
sSQL="Select * tabla order by Id desc" ' Tendrá que ser una consulta mas especifica
rs.open oConn, 3, 3
id = rs("Id")
set rs.close
.......

for i = 0 to cantidad

valor_id = id + i

sSQL="Update costos_maxirest Set .... Where Id = "&valor_id&";"
Suerte
  #7 (permalink)  
Antiguo 24/03/2007, 09:20
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: UPDATE 30 registros

el insert y el update lo ubico en la misma hoja?
gracias adler
__________________
Bye!
  #8 (permalink)  
Antiguo 24/03/2007, 11:29
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
Re: UPDATE 30 registros

hola de nuevo Pelao, recuerdas en el foro que te contesto Myakire y AL_ZUWAGA, en este POST donde te escribio sobre como insertar 30 registro,

utilizarias similar la sentencia, solo que en ves de insertar, pondrias UPDATE, utilizando las sentencias como te las expone ADLER(), hay veces que no es necesario crear todo desde 0, simplemente utilizas la misma estructura y solo cambias 1 o 2 parametros....

esta utilizabas para insertar
Código:
 for i = 1 to cantidad
bme_actual = request.form("bme" & i)
'Ahora creamos 30 sentencias SQL

if bme_actual<>"" or bme<>0 then
   sSQL="Insert Into costos_maxirest (bme) values ('" & bme_actual & "')"
   'y Ejecutamos la orden 30 veces
   set objRS = Conn.Execute(sSQL)
end if

next
y ADLER te da el siguiente...

Código:
for i = 0 to cantidad
 
 valor_id = id + i
sSQL="Insert Into costos_maxirest (bme,fecha,turno,local) values ('" & bme_actual & "','" & fecha_actual & "','" & turno_actual & "','" & local_actual & "')"

      'y Ejecutamos la orden 30 veces
   set objRS = Conn.Execute(sSQL)
end if
rs.open oConn, 3, 3
id = rs("Id")
set rs.close
next
.......
espero te sirva la estructura que ya tienes.

suerte
______________________________
y claro que puedes tener el insertar y el update, incluso el borrar, en la misma pagina, solo llamarias a cada una de ellas.... ya sea por FUNCTION, o un querystring en el formulario

FUNCTION INSERT() o BORRAR() o ACTUALIZAR()
END FUNCTION

o en el FORM en la seccion ACCION
<form ACTION="?accion=borrar"> o
<form ACTION="?accion=insertar"> o
<form ACTION="?accion=actualizar">

recojes el parametro
realiza=request.QueryString("accion")
if realiza="borrar" then
todo el procedimiento de borrar
else
if realiza="insertar" then
todo el procedimiento de de insertar
else
if realiza="actualizar" then
todo el procedimiento de actualizar
end if
end if
end if

o incluso con un SELECT

select case realiza
case "borrar"
CODIGO
case "insertar"
CODIGO
case "actualizar"
CODIGO
end select

espero te sirva PELAO
hechale ganas, y suerte con tu proyecto

Última edición por Shiryu_Libra; 24/03/2007 a las 11:38 Razón: anexando un ultimo comentario
  #9 (permalink)  
Antiguo 24/03/2007, 13:12
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Re: UPDATE 30 registros

Shiryu_Libra lamento no estar deacuardo contigo en cuanto a lo que has posteado referente a mi post yo no escribí

Cita:
for i = 0 to cantidad

valor_id = id + i
sSQL="Insert Into costos_maxirest (bme,fecha,turno,local) values ('" & bme_actual & "','" & fecha_actual & "','" & turno_actual & "','" & local_actual & "')"

'y Ejecutamos la orden 30 veces
set objRS = Conn.Execute(sSQL)
end if
rs.open oConn, 3, 3
id = rs("Id")
set rs.close
next
.......
sino

Código:
sSQL="Select * tabla order by Id desc" ' Tendrá que ser una consulta mas especifica
rs.open oConn, 3, 3
id = rs("Id")
set rs.close
.......

for i = 0 to cantidad

valor_id = id + i

sSQL="Update costos_maxirest Set .... Where Id = "&valor_id&";"
Supongamos que los registros que va a actualizar van desde el 31 al 61, necesita sacar la Id(31) de ahí el Select y que añada que ha de ser una consulta mas especifica, ya que esa consulta no le resultaría. Después la variable valor_id se iría incrementando en uno su valor y actualizas solo los registros que tienen esa Id. Si no se usa la clausa, actualizaría toda la tabla.

PD. No se me había pasado por la cabeza ordenar acciones por el Select. Buen a porte.

Un saludo
  #10 (permalink)  
Antiguo 24/03/2007, 19:03
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
Re: UPDATE 30 registros

creo que no pegue correctamente ADLER, una disculpa...

lo que pasa es que nuestro compañero pelao, ha estado armando su pagina poco a poco, entonces por eso pegue los codigos, creo que no seleccione bien el tuyo

nuevamente una disculpa
  #11 (permalink)  
Antiguo 29/03/2007, 08:52
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 2 meses
Puntos: 1
Re: UPDATE 30 registros

EXPECTACULAR!
muchas gracias
__________________
Bye!
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:50.