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

Actualizar varios registros con id distintos a la vez en base de datos

Estas en el tema de Actualizar varios registros con id distintos a la vez en base de datos en el foro de ASP Clásico en Foros del Web. Buenas a todos. Tengo un form para actualizar datos de una base de datos, en un form elijo un nombre de una persona y me ...
  #1 (permalink)  
Antiguo 29/10/2010, 01:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 1
Actualizar varios registros con id distintos a la vez en base de datos

Buenas a todos.

Tengo un form para actualizar datos de una base de datos, en un form elijo un nombre de una persona y me pasa a otro form de actualización en el cual cuando me aparece un registro sólo con un id si me lo actualiza bien, pero cuando aparecen varios registros con id distintos no me actualiza ninguno en la bbdd y no se porque. Os pongo el código.

form para modificar:
'Recogemos los valores del formulario
nombre= Request.Form("nombre")


'Instanciamos y abrimos nuestro objeto conexion
SET oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Driver={MySQL ODBC 3.51 Driver};Server:localhost;Port=3306;Database=docume ntacion;Uid=root;Pwd="
SET rs = Server.CreateObject("ADODB.Recordset")

'Ahora creamos la sentencia SQL
sSQL="Select * From telefonia Where nombre='" & nombre & "'"
'Ejecutamos la orden
set rs = oConn.Execute(sSQL)

%>
<form method="post" action="Actualizartelefoniatabla2.asp">
<table width="1286" border="2" align="center" bordercolor="#000000">
<tr bgcolor="#999999">
<th width="17" bgcolor="#FFFF00"><span class="Estilo14">Id</span></th>
<th width="54" bgcolor="#FFFF00"><span class="Estilo14">Fecha de compra</span></th>
<th width="48" bgcolor="#FFFF00"><span class="Estilo14">Fecha de baja</span></th>
<th width="59" bgcolor="#FFFF00"><span class="Estilo14">Nº telefono</span></th>
<th width="60" bgcolor="#FFFF00"><span class="Estilo14">Modelo</span></th>
<th width="42" bgcolor="#FFFF00"><span class="Estilo14">IMEI</span></th>
<th width="35" bgcolor="#FFFF00"><span class="Estilo14">Nº SIM</span></th>
<th width="30" bgcolor="#FFFF00"><span class="Estilo14">PIN</span></th>
<th width="36" bgcolor="#FFFF00"><span class="Estilo14">PUK</span></th>
<th width="73" bgcolor="#FFFF00"><span class="Estilo14">Compañía</span></th>
<th width="59" bgcolor="#FFFF00"><span class="Estilo14">Nombre</span></th>
<th width="98" bgcolor="#FFFF00"><span class="Estilo14">Departamento</span></th>
<th width="86" bgcolor="#FFFF00"><span class="Estilo14">Delegación</span></th>
<th width="60" bgcolor="#FFFF00"><span class="Estilo14">Tipo contrato</span></th>
<th width="93" bgcolor="#FFFF00"><span class="Estilo14">Permanencia</span></th>
<th width="107" bgcolor="#FFFF00"><span class="Estilo14">Observaciones</span></th>
<th width="42" bgcolor="#FFFF00"><span class="Estilo14">Stock</span></th>
<th width="35" bgcolor="#FFFF00"><span class="Estilo14">Baja</span></th>
<th width="87" bgcolor="#FFFF00"><span class="Estilo14">Tecnología</span></th>
</tr>
<%
Do While Not rs.Eof
%>
<tr bordercolor="#000000">
<td height="28"><div align="center" class="Estilo4"><input type="text" name="id" value=<%=rS("id")%>></div></td>
<td><div align="center" class="Estilo4">
<input type="text" name="Fechacompra" value=<%=rS("Fechacompra")%>>
</div></td>
<td><div align="center" class="Estilo4"><input type="text" name="Fechabaja" value=<%=rS("Fechabaja")%>></div></td>
<td><div align="center" class="Estilo4"><strong><input type="text" name="numerotelefono" value=<%=rS("numerotelefono")%>></strong></div></td>
<td><div align="center" class="Estilo4">
<textarea name="modelo" rows="1"><%=rS("modelo")%></textarea>
</div></td>
<td><div align="center" class="Estilo4"><input type="text" name="IMEI" value=<%=rS("IMEI")%>></div></td>
<td><div align="center" class="Estilo4"><input type="text" name="numerotarjetasim" value=<%=rS("numerotarjetasim")%>></div></td>
<td><div align="center" class="Estilo4"><input type="text" name="PIN" value=<%=rS("PIN")%>></div></td>
<td><div align="center" class="Estilo4"><input type="text" name="PUK" value=<%=rS("PUK")%>></div></td>
<td><div align="center" class="Estilo4"><strong><input type="text" name="compania" value=<%=rS("compania")%>></strong></div></td>
<td><div align="center" class="Estilo4"><strong><input type="text" name="nombre" value=<%=rS("Nombre")%>></strong></div></td>
<td><div align="center" class="Estilo4"><input type="text" name="departamento" value=<%=rS("Departamento")%>></div></td>
<td><div align="center" class="Estilo4"><input type="text" name="Delegacion" value=<%=rS("Delegacion")%>></div></td>
<td><div align="center" class="Estilo4">
<textarea name="tipocontrato" rows="1"><%=rS("tipocontrato")%></textarea>
</div></td>
<td><div align="center" class="Estilo4">
<textarea name="permanencia" rows="1"><%=rs("permanencia")%></textarea>
</div></td>
<td><div align="center" class="Estilo4">
<textarea name="Observaciones" rows="1"><%=rs("Observaciones")%></textarea>
</div></td>
<td><div align="center" class="Estilo4"><input type="text" name="Stock" value=<%=rs("Stock")%>></div></td>
<td><div align="center" class="Estilo4"><input type="text" name="Baja" value=<%=rs("Baja")%>></div></td>
<td><div align="center" class="Estilo4"><input type="text" name="tecnologia" value=<%=rs("tecnologia")%>></div></td>
</tr>
<%
rs.MoveNext
Loop%>
</table>
</div>
<br><br><br>



<div align="center">
<button type="submit">Actualizar</button>
</div>

</form>



Y form para actualizarlos:

<%
'Recogemos los valores del formulario
numerotelefono=Request.Form("numerotelefono")
modelo= Request.Form("modelo")
IMEI= Request.Form("IMEI")
numerotarjetasim= Request.Form("numerotarjetasim")
Compania= Request.Form("compania")
PUK= Request.Form("PUK")
Departamento= Request.Form("Departamento")
Delegacion= Request.Form("Delegacion")
PIN= Request.Form("PIN")
Observaciones= Request.Form("Observaciones")
Nombre= Request.Form("nombre")
baja= Request.Form("baja")
Stock= Request.Form("Stock")
Fechacompra= Request.Form("Fechacompra")
Fechabaja= Request.Form("Fechabaja")
permanencia= Request.Form("permanencia")
tipocontrato= Request.Form("tipocontrato")
tecnologia= Request.Form("tecnologia")


'Instanciamos y abrimos nuestro objeto conexion
SET oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Driver={MySQL ODBC 3.51 Driver};Server:localhost;Port=3306;Database=docume ntacion;Uid=root;Pwd="
SET rs = Server.CreateObject("ADODB.Recordset")

'Ahora creamos la sentencia SQL
sSQL="Update telefonia Set numerotelefono='" & numerotelefono & "', modelo='" &modelo& "', IMEI='" &IMEI& "', numerotarjetasim='" &numerotarjetasim& "', compania='" &compania& "', PUK='" &PUK& "', Departamento='" &Departamento& "', Delegacion='" &Delegacion& "', PIN='" &PIN& "', Observaciones='" &Observaciones& "', nombre='" &nombre& "', baja='" &baja& "', Stock='" &Stock& "', fechacompra='" &fechacompra& "', fechabaja='" &fechabaja& "', permanencia='" & permanencia & "', tipocontrato= '" &tipocontrato& "', tecnologia= '" &tecnologia&"' where( numerotelefono ='" & numerotelefono & "')"
'Ejecutamos la orden
set rs = oConn.Execute(sSQL)
%>
  #2 (permalink)  
Antiguo 03/11/2010, 06:12
 
Fecha de Ingreso: agosto-2008
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Actualizar varios registros con id distintos a la vez en base de datos

Por favor, nadie sabe como hacer esto.
a lo mejor no se puede y hay que ir actualizando uno a uno en la tabla.
  #3 (permalink)  
Antiguo 03/11/2010, 10:59
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: Actualizar varios registros con id distintos a la vez en base de datos

a ojo de buen cubero este es mi comentario:

No te actualiza nada por que a cada elemento del formulario le pones el mismo nombre:

<input type="text" name="numerotelefono" value=<%=rS("numerotelefono")%>>

Lo que hace que al tener más de uno el parámetro se manda con los diferentes valores separados por comas, es decir, si tienes un elemento el parámetro "numerotelefono" tendría por ejemplo "914-14-14" pero si son dos tendría "914-14-14, 978-78-78" entonces por ello el WHERE del UPDATE no se cumple y no a actualiza nada.

La solución es sencilla pero vas a tener que cambiar tu código, vas a tener que recorrer la colección REQUEST e ir separando en arreglos cada elemento, luego hacer el UPDATE dentro de un FOR que recorra el resultado del SPLIT, algo como esto (juega antes con este código que no lo he probado):

Código ASP:
Ver original
  1. for each control in request.form
  2.   for indice=1 to request.form(control).count
  3.        vecNumeroTelefono=SPLIT(request.form(control)(indice), ",")
  4.        .....
  5.        For i=0 to UBound(vecNumeroTelefono)
  6.              sSQL="Update .... WHERE numerotelefono = " & vecNumeroTelefono(i)
  7.              ....
  8.        Next
  9.   next
  10. next

Esa es la idea

Saludos
  #4 (permalink)  
Antiguo 04/11/2010, 07:54
 
Fecha de Ingreso: agosto-2008
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Actualizar varios registros con id distintos a la vez en base de datos

No me funciona, lo que he hecho es cambiar los nombres de los request y poner el for así:
<%
'Recogemos los valores del formulario


numero=Request.Form("numerotelefono")
model= Request.Form("modelo")
IME= Request.Form("IMEI")
tarjetasim= Request.Form("numerotarjetasim")
Comp= Request.Form("compania")
codpuk= Request.Form("PUK")
Depart= Request.Form("Departamento")
Deleg= Request.Form("Delegacion")
codpin= Request.Form("PIN")
Obser= Request.Form("Observaciones")
Nom= Request.Form("nombre")
baj= Request.Form("baja")
Stoc= Request.Form("Stock")
Fechacomp= Request.Form("Fechacompra")
Fechabaj= Request.Form("Fechabaja")
perman= Request.Form("permanencia")
tipocontr= Request.Form("tipocontrato")
tecnolog= Request.Form("tecnologia")


'Instanciamos y abrimos nuestro objeto conexion
SET oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Driver={MySQL ODBC 3.51 Driver};Server:localhost;Port=3306;Database=docume ntacion;Uid=root;Pwd="
SET rs = Server.CreateObject("ADODB.Recordset")

'Ahora creamos la sentencia SQL
for each control in request.form
for indice=1 to request.form(control).count
vecnumero=SPLIT(request.form(control)(indice), ",")
For i=0 to Ubound(vecnumero)
sSQL="Update telefonia set numerotelefono='" &numero& "' where(numerotelefono ='" & vecNumero(i) & "')"
sSQL="Update telefonia set modelo='" &model& "' where(numerotelefono ='" & vecNumero(i) & "')"

Next
next
next



set rs = oConn.Execute(sSQL)


%>

Etiquetas: distintos, registros
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 17:00.