

| |||
![]() ![]() ![]() |
| |||
Re: Como Insertar Datos??? Esta Shiryu_Libra, sin duda. Pero sin el recordset. Tal como dice CésarBalaguer Cita: No necesitas el recordset. Es una consulta de accion, no de seleccion. Un saludo
__________________ "Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié - |
| |||
Re: Como Insertar Datos??? ![]() ![]() ![]() |
| ||||
Re: Como Insertar Datos??? Cita: de hecho hay que cambiarla... en todo caso revisa este LINK, ahi veras las formas de generar tu coneccion a la base suerte ![]()
__________________ "Eres parte del problema, parte de la solucion o parte del paisaje" Un Saludo desde Desierto de Altar, Sonora, MX. Shiryu_libra |
| ||||
Re: Como Insertar Datos??? Q hago ?? 1.- Recojo todos los elementos del form y reemplazo los q estan vacios por el formato q yo desee. 2.- Si el valor q me interesa no esta vacio : 3.- Hago la conexión. 4.- Verifico si existe determinado valor. 5.- Si llega al fin de la tabla y no encuentra el determinado valor, lo Agrega. 6.- Si encuentra el determinado valor modifica el registro con los nuevos valores.
Código:
<% varID = request.form("s_id") var1 = request.form("box_number_e") var2 = request.form("box_cc") var3 = request.form("box_cf") var4 = request.form("q_s") if var4 = "" then var4New = "0" else var4New = var4 end if var5 = request.form("q_e") var6 = request.form("q_d") if var6 = "" then var6New = "000" else var6New = var6 end if var7 = request.form("d_e") var77 = request.form("d_ee") var8 = request.form("d_d") var9 = request.form("status") if var9 = "" then var9New = "0" else var9New = var9 end if Const adOpenKeyset = 1 Const adLockOptimistic = 3 if var1 <> "" then Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("distrib.mdb")) set rs=createobject("ADODB.Recordset") rs.CursorType = adOpenKeyset rs.LockType = adLockOptimistic sqltxt="SELECT * from Plan where numberGuia='"&var1&"'" rs.Open sqltxt, Conn if rs.eof then rs.Addnew rs("numberGuia")=var1 rs("codeDistrib")=var2 rs("codflexDistrib")=var3 rs("saldoVenta")=var4New rs("entregadoVenta")=var5 rs("devueltoVenta")=var6New rs("dateEmitidoVenta")=var7 rs("dateEntregadoVenta")=var77 rs("dateDevueltoVenta")=var8 rs("statusDistrib")=var9New rs.update ShowCONFIRM = "AGREGADO" else rs("numberGuia")=var1 rs("codeDistrib")=var2 rs("codflexDistrib")=var3 rs("saldoVenta")=var4 rs("entregadoVenta")=var5 rs("devueltoVenta")=var6New rs("dateEmitidoVenta")=var7 rs("dateEntregadoVenta")=var77 rs("dateDevueltoVenta")=var8 rs("statusDistrib")=var9New rs.update ShowCONFIRM = "MODIFICADO" end if rs.close Conn.Close set rs = Nothing Set Conn = Nothing else ShowCONFIRM = "Número de Guía no fue ingresado." end if response.redirect "?PageID_level=my_form-135-not-admin&userID="&var2&"&confirm="&ShowCONFIRM %>
__________________ En esta vida todo es posible ... excepto vencer a la muerte . Última edición por allhen; 17/04/2007 a las 19:48 |
| ||||
Re: Como Insertar Datos??? lo anterior expuesto fue para access !! ahora tigres de SQL: si solo se cambia esto Cita: por el driver de conexion para SQL ... funcionaria ??? Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("distrib.mdb"))
__________________ En esta vida todo es posible ... excepto vencer a la muerte . |
| ||||
Re: Como Insertar Datos??? Hola Allhen, solo 2 cosas de la pregunta que haces. la primera es que el Access no maneja SQL convencional, algunas instrucciones no necesariamente seràn interpretadas por otros motores de la misma forma como algunas instrucciones de SQL server u otros seràn interpretados por el Access, sin embargo para un simple INSERT con la cadena de conexión debería ser más que suficiente. Lo segundo es que tu forma de insertar registros debería ser optimizada, y es por varias razones, un insert, update o delete no te devuelve ningun cursor por lo que usar un objeto recordset estaría por demás, tu insert o tu update deberías ejecutarlo directamente con el EXECUTE de tu conexión: Conexion.Execute ("Insert ......") Cuando haces un select para verificar si el registro existe estás invocando a todas las columnas de tu tabla cuando en realidad no necesitas ninguna y estas recargando la memoria, lo que te recomiendo hacer en ese caso es utilizar un SELECT COUNT(*) FROM ó de otra forma en tu cláusula SELECT pon únicamente la columna que es tu índice, por ejemplo: SELECT ID FROM TABLA WHERE ID=1 (Siendo ID la columna por la cual está creado el índice) y para terminar, un temita adicional... en tu código el rs.close probablemente tenga problemas cuando no encuentre ningún registro y eso debido a que al no encontrar nada no abrió ningún cursor (lease resultado) por lo tanto no tendrá nada que cerrar. Saludos y buena suerte |
| ||||
Re: Como Insertar Datos??? respecto a esto : Cita: tienes razon ... gracias por la observacion ... pero con esto del cut and paste... como q se me olvidan algunas cosas !sqltxt="SELECT * from Plan where numberGuia='"&var1&"'" sqltxt="SELECT numberGuia from Plan where numberGuia='"&var1&"'" Cita: fijate q nunca.. me ha botado error alguno !! en tu código el rs.close probablemente tenga problemas cuando no encuentre ningún registro y eso debido a que al no encontrar nada no abrió ningún cursor (lease resultado) por lo tanto no tendrá nada que cerrar.
__________________ En esta vida todo es posible ... excepto vencer a la muerte . |
| |||
Re: Como Insertar Datos??? Hola!!!...pues sigo teniendo problemas...me encontré un código que me pareció muy bueno pero lo he tratado de probar y me marca un error...les pongo el código para ver si me pueden orientar...gracias!! 1. Este código muestra un listado de lo que se encuentra en la BD, ademas de los links dependiendo si se requieren insertar, modificar o borrar datos:
Código:
<%@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=MGUE; database=Ventas; UID=sa;Password=sa;" 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 %> 2. Este es el código que permite insertar datos:
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=MGUEVARA;Database=Rssql;UID=sa;Password=sa;" ' 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) then response.Write("update") else response.Write("insert") %>" /> <input type="submit" name="Submit" value="Enviar" /></td> </tr> </table> </form> </body> </html> En la página de inicio no hay problema, me muestra el contenido en mi BD y los links, pero al querer ir a la página donde se insertan los datos me aparece el siguiente error: ADODB.Recordset (0x800A0CC1) No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido. /Ventas/detalle.asp, línea 57 y la línea 57 es la siguiente:
Código:
Cuál es el error??<td><input type="text" name="rut" value="<% if isObject(rs) then response.Write(rs.fields("rut").value) %>" /></td> ![]() |
| |||
Re: Como Insertar Datos??? Que tal mary*. Del código que nos muestras, en la primera parte haces referencia a un campo ruf, por ejemplo:
Código:
Y en la segunda parte de código, haces referencia a un campo llamado rut, por ejemplo( el de la línea 57):rs.fields("ruf").value
Código:
El error que nos mencionas, es cuando el campo no existe en el recordset, como es el caso.rs.fields("rut").value Revisa donde uses el campo rut, y nos comentas. Saludos y suerte!! daniel. |
| |||
![]() Hola daniel00!!!..fijate que ya revisé lo que me comentas y efectivamente había ese error, ya cambié todos los rut de mi segundo código a ruf...pero aun así me sigue marcando el mismo error!!!...por que?? ![]() ![]() |
| |||
Re: Como Insertar Datos??? Hola mary*. Si el error es el mismo, pues tienes que hacer lo mismo que yo hice, buscar cual es el campo que en el recordset no existe. Te lo marca en la misma línea? Saludos y suerte!! P.D. al menos nos hubieras dicho en que línea te marca el error. |
| ||||
Re: Como Insertar Datos??? mary* por lo regular ese error es debido a que mandas llamar a un campo que no enlistaste dentro de la consulta y la opcion mas remota... podria ser que hayas mandado llamar un campo con diferente nombre en los post anteriores decias del RUF RUT... verifica el nombre bueno solo son consejos... suerte ![]()
__________________ "Eres parte del problema, parte de la solucion o parte del paisaje" Un Saludo desde Desierto de Altar, Sonora, MX. Shiryu_libra |
| |||
Re: Como Insertar Datos??? Hola a todos!!! Bueno pues intenté otro código...es más simple pero creo que ya logré algo...ya después lo iré haciendo más complejo...solo que tengo un problema... Muestra el formulario, lo llenas y envias los datos, lo cual ya hace...y ademas del boton de enviar y reestablecer le puse un boton que me envia a otra pagina para consultar lo que tengo en mi tabla...solamente que cada que oprimo ese boton del link efectivamente me envia a la pagina y me muestra los datos pero también me agrega nuevos datos en blanco...creo qu esto lo puedo evitar condicionando q para que lo envie el dato no debe ser "null"...pero no se como hacer esto...o alguna otra sugerencia??...espero me puedan ayudar!!!
Código:
<% 'ESTOS REQUEST.FORM SON LOS NOMBRES DE LOS CAMPOS DE FORM DE LA PAGINA ANTERIOR if (Request.querystring("cia")) and (Request.querystring("vendedor")) and (Request.querystring("descrip")) and isdate(Request.Form("fecha_v")) and (Request.querystring("contacto")) and (Request.querystring("tel")) and (Request.querystring("comentario")) then Response.Redirect "Captura.asp" end if vcia= (Request.Form("cia")) vvend= (Request.Form("vendedor")) vdesc= (Request.Form("descrip")) vfechv= (Request.Form("fecha_v")) vcont= (Request.Form("contacto")) vtel= (Request.Form("tel")) vcom= (Request.Form("comentario")) 'Conección con la BD sConnStr = "Driver={SQL Server};Server=MGUE;Database=Ventas;UID=sa;Password=sa;" Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open sConnStr 'Ligamos la tabla temporal a la vista de la BD strSQL_N = "INSERT INTO CLIENTES_POR_CONT (CIA, VENDEDOR, DESCRIP, FECHA_VIST, CONTACTO, TEL, COMENTARIO) VALUES ('" & vcia & "', '" & vvend & "' , '" & vdesc & "' , '" & vfechv & "' , '" & vcont & "' , '" & vtel & "' , '" & vcom & "')" Set RS = objConn.execute(strSQL_N) %> <html> <head> <title>Captuta</title> </head> <body bgcolor="#CCFFCC"> <p align="center">VENTAS</p> <p align="center"><font face="Verdana">Clientes por Contactar : </font></p> <form method="POST" action="Captura1.asp"> <table border="1" width="100%"> <tr> <td height="35" colspan="2" bgcolor="#008000"><div align="center"><font color="#FFFFFF">Capturar Datos</font></div></td> </tr> <tr> <td>COMPAÑIA : </td> <td><p align="left"> <input type="text" name="cia" size="100"> </td> </tr> <tr> <td>VENDEDOR : </td> <td><p align="left"> <input type="text" name="vendedor" size="100"> </td> </tr> <tr> <td>DESCRIPCION:</td> <td><input type="text" name="descrip" size="100"></td> </tr> <tr> <td>FECHA VISITA :</td> <td><p align="left"> <input type="text" name="fecha_v" size="100"> </td> </tr> <tr> <td>CONTACTO : </td> <td><p align="left"> <input type="text" name="contacto" size="100"> </td> </tr> <tr> <td>TELEFONO :</td> <td><input type="text" name="tel" size="100"></td> </tr> <tr> <td width="27%">COMENTARIO: </td> <td width="73%"> <p align="left"> <input type="text" name="comentario" size="100"> </p></td> </tr> </table> <p> <input type="submit" value="Enviar" name="B1"> <input type="reset" value="Restablecer" name="B2"> </p> </form> <p align="center"><a href="http://127.0.0.1/Ventas/Consulta_Datos1.asp">Consultar</a></p> </body> </html> |
| ||||
Re: Como Insertar Datos??? que te parece si en ves de poner "NAME" en los campos los pones con ID?? suerte ![]()
__________________ "Eres parte del problema, parte de la solucion o parte del paisaje" Un Saludo desde Desierto de Altar, Sonora, MX. Shiryu_libra |