Hola a todos.
Saben que no logro hacer que mi boton guardar,modificar,eliminar haga lo que yo quiero, no se como lograr hacer q funcionen si ustedes tienen la amabilidad se los agradeceria...
la coneccion es a sql server.
| |||
Ayuda con Guardar,Modificar,Eliminar datos de una base de datos Hola a todos. Saben que no logro hacer que mi boton guardar,modificar,eliminar haga lo que yo quiero, no se como lograr hacer q funcionen si ustedes tienen la amabilidad se los agradeceria... la coneccion es a sql server. |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos Lo que yo quiero hacer es Guardar registros desde un formulario a mi base de datos, como tambien quiero modificar datos de mi base de datos y tambien en un formulario y lo ultimo es tratar de eliminar los registros asociados a un rut, borrar todos los campos q lo componen yo tengo este codigo pero no me funciona nada. <% dim rut dim nombre dim clave dim perfil dim sucursal rut=request.form("text1") nombre=request.form("text2") clave=request.form("text3") perfil=request.form("text4") sucursal=request.form("text5") function Ingreso(rut,nombre,clave,perfil,sucursal) Const adOpenForwardOnly = 0 Const adOpenKeyset = 1 Const adOpenDynamic = 2 Const adOpenStatic = 3 Const adLockReadOnly = 1 Const adLockPessimistic = 2 Const adLockOptimistic = 3 Dim cnn, rcs, SQL set cnn=Server.CreateObject("ADODB.Connection") set rcs=Server.CreateObject("ADODB.Recordset") cnn.Open "driver={SQL Server};server=EFUENTES; database=Osiris; uid=sa;pwd=" rcs.CursorType=adopenkeyset rcs.LockType = adLockOptimistic SQL=" insert into usuarios(per_rutper,per_nombre,cep_contra,pep_codp er,GlsSucursal)values('" & rut & "', '" & nombre & "', '" & clave & "', '" & perfil & "', '" & sucursal & "');" rcs.Open SQL,cnn 'necesito validar para q no ingrese un rut duplicado rcs.AddNew rcs("per_rutper")=rut rcs("per_nombre")=nombre rcs("cep_contra")=clave rcs("pep_codper")=perfil rcs("GlsSucursal")=sucursal rcs.Update rcs.Close set rcs=nothing cnn.Close set cnn=nothing Response.Write("Los datos fueron bien Guardados") end function %> |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos El listado de los datos te lo dejo a ti XD
Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% Dim cnn, rcs, SQL set cnn=Server.CreateObject("ADODB.Connection") set rs=Server.CreateObject("ADODB.Recordset") cnn.Open "driver={SQL Server};server=EFUENTES; database=Osiris; uid=sa;pwd=" ' Borrado / busqueda para actualizar if request.QueryString("borrar") <> "" then cnn.execute("DELETE FROM usuarios WHERE rut = " & request.QueryString("borrar") elseif request.QueryString("update") <> "" then set rs = cnn.execute("SELECT * FROM usuarios WHERE rut = " & request.QueryString("update") end if ' Insercion / modificacion de registros if request.Form("rut") <> "" then if request.Form("action") = "update" then sql = "UPDATE usuarios SET nombre = '" & request.Form("nombre") & "'" sql = sql & ", clave = '" & request.Form("clave") & "'" sql = sql & ", perfil = '" & request.Form("perfil") & "'" sql = sql & ", sucursal = '" & request.Form("sucursal") & "'" sql = sql & " WHERE rut = " & request.Form("rut") ' Actualizar else ' Comprobamos que no exista Dim rsd set rsd = Server.CreateObject("ADODB.Recordset") set rsd = cnn.execute("SELECT rut FROM usuarios WHERE rut = " & request.Form("rut") existe = not rsd.EOF rsd.close() if not existe then sql = "INSERT INTO usuarios (rut, nombre, clave, perfil, sucursal) VALUES (" sql = sql & "'" & request.Form("rut") & "'" sql = sql & ",'" & request.Form("nombre") & "'" sql = sql & ",'" & request.Form("clave") & "'" sql = sql & ",'" & request.Form("perfil") & "'" sql = sql & ",'" & request.Form("sucursal") & "')" end if end if end if ' Lo ideal es que controles el SQL injection %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> </head> <body> <form id="form1" name="form1" method="post" action=""> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td>RUT</td> <td><input type="text" name="rut" value="<% if isObject(rs) then response.Write(rs.fields("rut").value %>" /></td> </tr> <tr> <td>Nombre</td> <td><input type="text" name="nombre" value="<% if isObject(rs) then response.Write(rs.fields("nombre").value %>" /></td> </tr> <tr> <td>Clave</td> <td><input type="text" name="clave" value="<% if isObject(rs) then response.Write(rs.fields("clave").value %>" /></td> </tr> <tr> <td>Perfil</td> <td><input type="text" name="perfil" value="<% if isObject(rs) then response.Write(rs.fields("perfil").value %>" /></td> </tr> <tr> <td>Sucursal</td> <td><input type="text" name="sucursal" value="<% if isObject(rs) then response.Write(rs.fields("sucursal").value %>" /></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td colspan="2" align="center"> <input type="hidden" name="action" value="<% if isObject(rs) response.Write("update") else response.Write("insert") %>" /> <input type="submit" name="Submit" value="Enviar" /></td> </tr> </table> </form> </body> </html> Un saludo
__________________ "Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié - |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos Gracias por las respuesta. me gustaria saber si son variables ("borrar") ("update") ("action") existe..... te lo agradeceria mucho tu respuesta. GRACIAS SALUDOS Antonio Neira. |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos Por eso te decia que los listados :D Te explico. Imagina que haces una paginacion de los datos en un grid: listado.asp
Código:
Como puedes imaginar el codigo que te di ayer seria el de detalle.asp. Aqui existen procesos de un paso (borrar) o de dos pasos (modificar). Borrar es una variable GET que contiene el ruf a borrar lo cual hace nada mas llegar a detalle.asp. Update contiene el ruf del registro a modificar. Para modificar primero lo visualiza (1er. paso) pasando el ruf por GET. El usuario interacciona con los datos y pulsa el boton (submit el form) llamando a la misma página para que actualize los datos en la BD (2o. paso) esta vez a traves del método POST. <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> </head> <body> <% Dim cnn, rcs, SQL set cnn=Server.CreateObject("ADODB.Connection") set rs=Server.CreateObject("ADODB.Recordset") cnn.Open "driver={SQL Server};server=EFUENTES; database=Osiris; uid=sa;pwd=" set rs = cnn.execute("SELECT * FROM usuarios") ' Maquetamos los resultados ' No incluyo Clave por seguridad (supongo) %> <a href="detalle.asp">Pulse aqui para insertar</a> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td>RUF</td> <td>Nombre</td> <td>Perfil</td> <td>Sucursal</td> <td> </td> </tr> <% while not rs.EOF %> <tr> <td><%=rs.fields("ruf").value%></td> <td><%=rs.fields("nombre").value%></td> <td><%=rs.fields("perfil").value%></td> <td><%=rs.fields("sucursal").value%></td> <!-- FIJATE EN LO QUE PONEMOS AQUI --> <td> <a href="detalles.asp?borrar=<%=rs.fields("ruf").value%>">Borrar Registro</a><br /> <a href="detalles.asp?update=<%=rs.fields("ruf").value%>">Modificar Registro</a><br /> </td> </tr> <% rs.movenext() wend %> </table> </body> </html> <% set rs = nothing cnn.close() set cnn = nothing %> Una vez actualizada la BD (tanto para borrar, como para insertar como actualizar -Active Record- ) puedes redirigir al usuario otra vez a listado.asp si asi lo deseas. NOTA: Si te fijas, ACTION solo se pasa por POST en el formulario y sirve solo para identificar cual es la accion a realizar: insertar o modificar. Un saludo
__________________ "Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié - |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos estoy tratando de actualizar el campo BME pero me da el siguiente error al enviar el form ADODB.Recordset (0x800A0CC1) No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido. /tablero/detalles.asp, línea 52 aqui esta mi codigo
Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% Dim cnn, rcs, SQL set cnn=Server.CreateObject("ADODB.Connection") set rs=Server.CreateObject("ADODB.Recordset") cnn.open "circulacion", "sa", "" ' Borrado / busqueda para actualizar if request.QueryString("update") <> "" then set rs = cnn.execute("SELECT * FROM costos_maxirest WHERE bme = " & request.QueryString("update")) end if ' Insercion / modificacion de registros if request.Form("bme") <> "" then if request.Form("action") = "update" then sql = "UPDATE costos_maxirest SET bme = '" & request.Form("bme") & "'" sql = sql & " WHERE fecha = " & request.Form("fecha") ' Actualizar ' Actualizar else ' Comprobamos que no exista Dim rsd set rsd = Server.CreateObject("ADODB.Recordset") set rsd = cnn.execute("SELECT bme FROM costos_maxirest WHERE bme = " & request.Form("bme")) existe = not rsd.EOF rsd.close() if not existe then sql = "INSERT INTO costos_maxirest (bme,fecha) VALUES (" sql = sql & ",'" & request.Form("bme") & "'" sql = sql & ",'" & request.Form("fecha") & "'" end if end if end if ' Lo ideal es que controles el SQL injection %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> </head> <body> <form id="form1" name="form1" method="post" action="detalles.asp"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td>Fecha</td> <td><p> <input type="text" name="fecha" value="<% if isObject(rs) then response.Write(rs.fields("fecha").value)%>" /> </p></td> </tr> <tr> <td>bme</td> <td><p> <input type="text" name="bme" value="<% if isObject(rs) then response.Write(rs.fields("bme").value)%>" /> </p> </td> </tr> <tr> </tr> <tr> <td colspan="2" align="center"> <input type="hidden" name="action" value="<% if isObject(rs) then response.Write("update") else response.Write("insert") %>" /> <input type="submit" name="Submit" value="Enviar" /></td> </tr> </table> </form> </body> </html>
__________________ Bye! Última edición por Pelao; 15/03/2007 a las 00:12 |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos Eso es porque un campo no existe en la Base de datos. Comprueba si todos los nombres de campos que has utilizado existen realmente en la Bd. Un saludo
__________________ "Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié - |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos ese error ya lo arregele...ahora me dice esto al enviar el form a detalle.asp Tipo de error: Error de Microsoft VBScript en tiempo de ejecución (0x800A000D) No coinciden los tipos /tablero/detalles.asp, línea 20 el tema es que me actualiza los registros pero me modifica todos los valores BME de la tabla SQL. aqui el codigo exacto que uso
Código:
gracias <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% Dim cnn, rs, SQL set cnn=Server.CreateObject("ADODB.Connection") set rs=Server.CreateObject("ADODB.Recordset") cnn.open "circulacion", "sa", "" ' Borrado / busqueda para actualizar if request.QueryString("borrar") <> "" then cnn.execute("DELETE FROM costos_maxirest WHERE bme = " & request.QueryString("borrar")) elseif request.QueryString("update") <> "" then set rs = cnn.execute("SELECT * FROM costos_maxirest WHERE bme = " & request.QueryString("update")) end if ' Insercion / modificacion de registros if request.Form("bme") <> "" then if request.Form("action") = "update" then set sql = cnn.execute("UPDATE costos_maxirest SET bme = " & request.Form("bme")) & "'" sql = sql & " WHERE bme = " & request.Form("bme") ' Actualizar else ' Comprobamos que no exista Dim rsd set rsd = Server.CreateObject("ADODB.Recordset") set rsd = cnn.execute("SELECT bme FROM costos_maxirest WHERE bme = " & request.Form("bme")) existe = not rsd.EOF rsd.close() if not existe then sql = "INSERT INTO costos_maxirest (bme) VALUES (" sql = sql & ",'" & request.Form("bme") & "'" end if end if end if ' Lo ideal es que controles el SQL injection %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> </head> <body> <form id="form1" name="form1" method="post" action="detalles.asp"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td>Fecha</td> <td><p><% if isObject(rs) then response.Write(rs.fields("fecha").value)%></p></td> </tr> <tr> <td>bme</td> <td><p> <input type="text" name="bme" value="<% if isObject(rs) then response.Write(rs.fields("bme").value)%>" /> </p> </td> </tr> <tr> </tr> <tr> <td colspan="2" align="center"> <input type="hidden" name="action" value="<% if isObject(rs) then response.Write("update") else response.Write("insert") %>" /> <input type="submit" name="Submit" value="Enviar" /></td> </tr> </table> </form> </body> </html> tammander
__________________ Bye! |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos Tienes que usar al menos un campo de control en las sentencias SQL UPDATE ya que si no, no sabe donde actualizar. UPDATE table set campo1 = 'guauguau' where campo1 = 'beeeeee' Como puedes ver es un poco incongruente y de resultados inciertos. Usa un campo unico que no vaya a cambiar: UPDATE table set campo1='beeeee' where id = 12 Un saludo
__________________ "Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié - |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos ah... el tema es que yo tengo mi tabla SQL 2 campos Fecha y BME el campo que yo quiero updatear es BME de determinada fecha..en listado.asp me aparece todo bien...cuando le doy modificar dato tambien..ingreso el dato y al enviar me sale ese error. creo q no se puede hacer. :(
__________________ Bye! |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos Puedes hacer dos cosas: 1 - La mas recomandable. Incorpora un campo IDentificador autonumerico que te sirva de control 2 - Hacer el Update en dos pasos: A - Haz primero un SELECT con el valor antiguo set rs = conn.execute("SELECT bme FROM tabla WHERE bme = " & bme) b - Actualiza el registro leido: if not rs.EOF then rs("bme") = nuevo_bme rs.update end if Este es un poco de andar por casa y, no se que resultados puede llegar a tener en determinadas circunstancias. Un saludo
__________________ "Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié - |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos no se hacerlo estoy al horno este es mi form
Código:
y aqui proceso<FORM METHOD="post" ACTION="update.asp"> <% for i = 0 to 30 %> <p> <input name="bme<% = i %>" type="text" value="" /> </p> <br /> <%next%> <INPUT TYPE="hidden" value="<% = i %>" name="cantidad"> <INPUT TYPE="SUBMIT" value="Insertar"> </p> </FORM>
Código:
<% 'Recogemos los valores del formulario cantidad = Request.Form("cantidad") '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) 'Ahora creamos 30 sentencias SQL if bme_actual<>"" or bme<>0 then sSQL="UPDATE costos_maxirest (bme) values ('" & bme_actual & "')" 'y Ejecutamos la orden 30 veces set objRS = Conn.Execute (sSQL) end if next %> <h1><div align="center"><% = i %> registros Insertados</div></h1> <div align="center"><a href="lectura.asp">Visualizar el contenido de la base</a></div> <% 'Cerramos el sistema de conexion Conn.Close %>
__________________ Bye! |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos Ya te digo que el problema esta en el diseño de la tabla en la base de datos. Ahora veo que costos_maxirest posee el campo bme que actua de campo unico y que es ese el que tienes que actualizar. Primero: La sentencia SQL UPDATE no tiene ese formato que pones. Es: UPDATE tabla SET campo=valor, campo2=valor2, campoN = valorN WHERE campoclave = valorClave Y el INSERT (insertar) es: INSERT INTO tabla (campo1, campo2, campoN) VALUES (valor1, valor2, valorN) Como ves UPDATE necesita al menos un campo de control (clave) para que se actualize solo un registro o un grupo de ellos. Si no lo haces asi, actualiza TODOS los registros de la tabla. Por otro lado. Si lo que quieres es actualizar precisamente ese campo de control, lo mejor es insertar un nuevo campo en la tabla que actue de indice primario y liberar el otro campo de esa labor. Pero como veo que lo que quieres hacer es actualizar (UPDATE) la tabla, veamos el otro metodo. ASP permite cargar los datos de una busqueda en un objeto Recordset. Una vez almacenado en el, lo modificas. Esto suele funcionar en Bases de Datos de Microsoft (Access, MSSQL Server) porque a las tablas que no tienen indice primario, le asigna uno interno para controlar la posicion de cada registro en la tabla. El codigo: Donde tu pones:
Código:
Yo lo haria asi (y me pillo los dedos porque esto es un peligro )if bme_actual<>"" or bme<>0 then sSQL="UPDATE costos_maxirest (bme) values ('" & bme_actual & "')" 'y Ejecutamos la orden 30 veces set objRS = Conn.Execute (sSQL) end if
Código:
Mas no puedo hacer. Sigo pensando que crear una tabla temporal que incluya un indice primario autonumerico y volcar los datos de la tabla costos_maxirest es la mejor opcion.if bme_actual<>"" or bme<>0 then set objRS = Conn.Execute ("SELECT * FROM costos_maxirest WHERE bme = '" & bme & "'") ' Si existe el registro if not objRS.EOF then objRS("bme") = bme_actual objRS.update() end if objRS.close() end if Un saludo
__________________ "Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié - Última edición por tammander; 15/03/2007 a las 17:00 |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos agrege el campo ID (es autoincrement) ...entonces para actualizar el campo BME en cada registro deberia hacer referencia al ID ?
__________________ Bye! |
| |||
Re: Ayuda con Guardar,Modificar,Eliminar datos de una base de datos Ahora tienes mucho mas facil identificar cada registro: Puedes seguir buscando registros por bme: "SELECT * FROM costos_maxirest WHERE bme = '" & bme_antiguo & "'" Pero ahora se te devuelve un identificador unico para ese registro: ID que tendrá un valor unico y exclusivo de dicho registro. A la hora de realizar la actualización, puedes guardar ese valor ID en un campo oculto (hidden) que el formulario envia una vez se han realizado los cambios por el usuario. Asi, cuando la página ASP lea esos valores pasados por POST: request.Form("ID") Sabrá que registro hay que actualizar: sql = "UPDATE costos_maxirest SET bme = '" & request.Form("bme") & "' WHERE ID = " & request.Form("ID") Un saludo
__________________ "Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié - |