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

Modificar Datos De Una DB

Estas en el tema de Modificar Datos De Una DB en el foro de ASP Clásico en Foros del Web. Bueno, tengo un problema: quiero modificar datos de una DB. Eso en si no es un problema, por que lo unico qeu tengo que hacer ...
  #1 (permalink)  
Antiguo 16/12/2002, 11:31
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
QueryString

Bueno, tengo un problema: quiero modificar datos de una DB. Eso en si no es un problema, por que lo unico qeu tengo que hacer es volcar los datos de el campo/campos que quiera modificar en un Text y luego cambiarlos y ejecutar la sentencia update.

Pero yo quiero algo mas dinamico. Quiero qeu al pulsar el boton editar de cada campo(en este codigo:)
<%
strSQL = "SELECT ID, ARCHIVO, FECHA, IMAGEN FROM NEWS ORDER BY FECHA DESC"
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("news.mdb"))
Set MyRecordSet = MyConn.Execute(strSQL)
%>
<table border="1">
<%Do While NOT MyRecordSet.EOF%>
<tr>
<td><% = MyRecordset("ID")%></td>
<td><% = MyRecordset("IMAGEN")%></td>
<td><% = MyRecordset("ARCHIVO")%></td>
<td><% = MyRecordset("FECHA")%></td>
<td><a href="">Editar</a>
</tr>
<% MyRecordset.MoveNext
Loop
MyRecordset.Close%>
<br><br>
</table>


Quiero qeu al pulsar sobre Editar, fuese direccionado a una 'pagina' en la que, mandandola unos datos (como por ejemplo la ID) pudiese modificar el campo.
No se si me explico. Si alguien me entiende, que me ayude. Si no, intentare explicarme mejor.

Gracias

P.D: Basicamente quiero saber como hacer un link dinamico de tal forma que le pase a una web un parametro y esta lo recoja y abra el dato que le pase (algo asi como lo de modifica.asp?ID=2)
__________________
Tu portal de manga y anime.

Última edición por meru-kun; 16/12/2002 a las 12:52
  #2 (permalink)  
Antiguo 16/12/2002, 11:38
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
<td><a href="editar.asp?ID=<% = MyRecordset("ID") %>">Editar</a>

Luego, en editar.asp:

ID = Request.QueryString("ID")

SQL = "UPDATE Tabla SET Cantidad = Cantidad + 1 WHERE ID = " ID


claro que te es un ejemplo sin sentido que se me ocurrió recién... vos podés usar la variable ID para lo que quieras
  #3 (permalink)  
Antiguo 16/12/2002, 12:17
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 2 meses
Puntos: 1
Aqui tencontrara todo lo que necesitas para Consultar, insertar, modificar, borrar desde ASP

http://www.aspfacil.com/articulos/tododb.asp
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #4 (permalink)  
Antiguo 16/12/2002, 12:22
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
Ya esta todo arreglado. Muchas gracias!!

P.D: Se me olvidaba: Como paso dos querystring en un codigo?? Asi?: comprobar.asp?id=2?accion=modificar
o asi?: comprobar.asp?id=2+accion=modificar

Y luego como recupero esos datos...
__________________
Tu portal de manga y anime.

Última edición por meru-kun; 16/12/2002 a las 12:53
  #5 (permalink)  
Antiguo 16/12/2002, 13:20
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
de ninguna de las dos

sería así:

comprobar.asp?id=2&accion=modificar

Y luego recuperás los valores así:


Dim VarID, VarAccion
VarID = Request.QueryString("id")
VarAccion = Request.QueryString("accion")
  #6 (permalink)  
Antiguo 16/12/2002, 14:55
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
Pregunta

Bueno... yo lo siento, pero creo qeu al final me vais a hacer vosotros el codigo . Pero bueno, yo pregunto, de todas maneras. Ya os pondre en la seccion del staff

La cosa es que pretendo modificar datos, quiero decir, actualizar, y poniendo este codigo:
strSQLCoger2= "Select IMAGEN, ARCHIVO, FECHA From NEWS WHERE ID = txtID"
<%
'creas un objeto recordset
Set myrecordset = createObject("ADODB.recordset")
myrecordset.open strSQLCoger2, MyConn, 2,3
myrecordset("IMAGEN") = imgNewsU
myrecordset("ARCHIVO") = txtNewsU
myrecordset("FECHA") = txtFecha
myrecordset.update

%>


Me da un error: ( Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1.

/diseño/comprobar.asp, line 33

la lina 33 es la de myrecordset.open... ). ¿Que demonios pasa?
No me digais que la sentencia de strSQLCoger2 deberia ser asi:
strSQLCoger2= "Select IMAGEN, ARCHIVO, FECHA From NEWS WHERE ID ="& txtID
por qeu entonces me da otro error.
Donde demonios me equivoco?
__________________
Tu portal de manga y anime.
  #7 (permalink)  
Antiguo 16/12/2002, 15:11
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
veamos... si txtID es una variable e ID es un campo numérico, la SQL debería quedar como no querés que te digamos que quede

(strSQLCoger2= "Select IMAGEN, ARCHIVO, FECHA From NEWS WHERE ID ="& txtID)


pero definitivamente esto está mal:

strSQLCoger2= "Select IMAGEN, ARCHIVO, FECHA From NEWS WHERE ID = txtID"


Si txtID es un literal, deberías colocarlo entre apóstrofes. Si es una variable de tipo string, también pero concatenada con la sentencia SQL quedando:


strSQLCoger2= "Select IMAGEN, ARCHIVO, FECHA From NEWS WHERE ID = ' " & txtID & " ' "


de todas formas, me parece que lo mejor es hacer un update de esta manera...



strSQLCoger2= "UPDATE News SET IMAGEN = '" & imgNewsU & "', ARCHIVO = '" & txtNewsU & "', FECHA = '" & txtFecha & "' WHERE ID = " & txtID

MyConn.Execute(strSQLCoger2)
  #8 (permalink)  
Antiguo 16/12/2002, 15:18
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
strSQLCoger3= "UPDATE News SET IMAGEN = '" & imgNewsU & "', ARCHIVO = '" & txtNewsU & "', FECHA = '" & txtFecha & "' WHERE ID = " & txtID
MyConn.Execute(strSQLCoger3)


Y me da el error:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (falta operador) en la expresión de consulta 'ID ='.

/diseño/comprobar.asp, line 42
__________________
Tu portal de manga y anime.
  #9 (permalink)  
Antiguo 16/12/2002, 15:33
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mercedes
Mensajes: 92
Antigüedad: 23 años, 4 meses
Puntos: 0
porque en vez de hacer asi:
strSQLCoger3= "UPDATE News SET IMAGEN = '" & imgNewsU & "', ARCHIVO = '" & txtNewsU & "', FECHA = '" & txtFecha & "' WHERE ID = " & txtID
MyConn.Execute(strSQLCoger3)
no haces asi:
strSQLCoger3= "UPDATE News SET IMAGEN = '" & imgNewsU & "', ARCHIVO = '" & txtNewsU & "', FECHA = '" & txtFecha & "' WHERE ID = " & txtID
response.write strSQLCoger3
response.end
MyConn.Execute(strSQLCoger3)

asi puedes ver que contiene strSQLCoger3 y depuras el error.
(creo que txtID esta vacio por eso te tira ese error)
¿donde le asignas el valor a txtID?
  #10 (permalink)  
Antiguo 16/12/2002, 15:35
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Bueno, aparentemente txtID no tiene nigùn valor..

intentá hacer un response.write(strSQLCoger3) en vez de ejecutarla y fijate el resultado (además de pegar lo que devuelve en este mensaje para verlo)
  #11 (permalink)  
Antiguo 16/12/2002, 15:37
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
UPDATE News SET IMAGEN = '', ARCHIVO = '', FECHA = '' WHERE ID =


Eso es lo que me devuelve....
__________________
Tu portal de manga y anime.
  #12 (permalink)  
Antiguo 16/12/2002, 15:43
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mercedes
Mensajes: 92
Antigüedad: 23 años, 4 meses
Puntos: 0
Definitivamente no le estas asignando ningun valor a txtID, ni tampoco a las otras variables,creo.

txtID = request("txtID")
.
.
.
.
.


y asi con el resto de las variables.
  #13 (permalink)  
Antiguo 16/12/2002, 15:44
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
pero... todas tus variables están vacías!

Les estás asignando valor en algún momento? Digo.. algó así?:

imgNewsU = Request.Form("img")
txtNewsU = Request.Form("txt")
txtFecha = Request.Form("fecha")
txtID = Request.Form("id")


??
  #14 (permalink)  
Antiguo 16/12/2002, 15:48
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
(RENZO, podríamos ponernos de acuerdo, ¿no? porque que dos personas digan lo mismo es un gasto de recursos terible jajaja.
Te lo dejo a vos que yo me desconecto en 15 minutos y regreso en una hora mas o menos )
  #15 (permalink)  
Antiguo 16/12/2002, 15:48
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 22 años, 5 meses
Puntos: 0
Ya encontre el error.
Ponia la instruccion SQL antes que la asignacion de valores a las variahbles.
Gracias por la ayuda, de todos modos!!
__________________
Tu portal de manga y anime.
  #16 (permalink)  
Antiguo 16/12/2002, 15:54
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
PLOP!!





Jajajaja... suele pasar.

Bueno, mejor que ya está solucionado
  #17 (permalink)  
Antiguo 16/12/2002, 17:27
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mercedes
Mensajes: 92
Antigüedad: 23 años, 4 meses
Puntos: 0
jjaja, tenes razon dazuaga.

pero bueno dos cabezas piensan mejor que una !!

Saludos.-
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 10:35.