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

insertar datos en un tabla

Estas en el tema de insertar datos en un tabla en el foro de ASP Clásico en Foros del Web. Alguien me podria facilitar un código para q los datos expresados en un formulario se trasladen a una base de datos en access , muchas ...

  #1 (permalink)  
Antiguo 11/06/2003, 08:35
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
insertar datos en un tabla

Alguien me podria facilitar un código para q los datos expresados en un formulario se trasladen a una base de datos en access , muchas gracias
  #2 (permalink)  
Antiguo 11/06/2003, 09:14
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 3 meses
Puntos: 1
http://faqsdelweb.com/index.php?num=...id=15&q_id=309
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #3 (permalink)  
Antiguo 11/06/2003, 09:50
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
Maestro muchas gracias por ese enlace, lo he hecho tal como pone el ejemplo y me sale este error alguien sabría como se puede solucionar ? Muchas gracias

Tipo de error:
ADODB.Recordset (0x800A0CB3)
El Recordset actual no admite actualizaciones. Puede ser una limitación del proveedor o del tipo de bloqueo seleccionado.
/busqueda/recibe.asp, línea 15

y la linea 15 se corresponde con

rs.addnew
  #4 (permalink)  
Antiguo 11/06/2003, 10:52
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 3 meses
Puntos: 1
¿Tienes permiso de escritura en esa carpeta, donde esta la base de datos?
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #5 (permalink)  
Antiguo 11/06/2003, 14:03
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
Si maestro, ya he probado lo de dando permisos de escritura y aun asi me sigue saliendo el mismo error, no se que podra ser, no obstante muchas gracias
  #6 (permalink)  
Antiguo 11/06/2003, 17:12
 
Fecha de Ingreso: junio-2003
Mensajes: 5
Antigüedad: 21 años, 11 meses
Puntos: 0
Error al agregar un registro

Hola!!

Quisiera saber si alguien me puede ayudar, estoy tratando de agregar un nuevo registo en la base de datos con el codigo que venia en el link de abajo

http://faqsdelweb.com/index.php?num..._id=15&q_id=309

pero me marca el error HTTP 500 Error interno en el servidor
  #7 (permalink)  
Antiguo 11/06/2003, 17:27
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
comax03 verifica la direccion del cursor del recordset que empleas, lee esto si crees que te puede interesar:

http://www.aspfacil.com/articulos/040401.asp

yaya, el error intero de HTTP500 es muy general, por lo que se agradece que digas si te falla en alguna linea, pues de lo contrario deberías colocar alguna linea de código.


Saludos.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #8 (permalink)  
Antiguo 11/06/2003, 17:59
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
He leido el post que me has dado Fr@n pero no logro encontrar una solución , te pongo el código para ver si eres capaz de decirme algo, muchas gracias

<%
set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("tubase.mdb")&";"
SQL="SELECT * FROM tabla"
rs.Open SQL, oConn
rs.addnew
rs("campo1")=request("campo_formulario1")
rs("campo2")=request("campo_formulario2")
rs.update
rs.close
oConn.close
%>
  #9 (permalink)  
Antiguo 11/06/2003, 19:14
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 3 meses
Puntos: 1
¿Has comprobado que tu base y tus tablas se llaman asi ?, ese script lo conozco puesto en FAQSDELWEB deberas adaptarlo al nombre de tu base y tus tablas y campos.

Ademas deberas tener dos textbox en tu formulario de la pagina anterior con esos nombres, ¿los tienes?
rs("campo1")=request("campo_formulario1")
rs("campo2")=request("campo_formulario2")

Si te da error al insertar/actualizar solo puede ser permisos de escritura de la base o carpeta o el cerrojo del recordset, el codigo esta funcionando sino te daria un error 500 o uno de compilacion.
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net

Última edición por maestro; 11/06/2003 a las 19:17
  #10 (permalink)  
Antiguo 11/06/2003, 19:19
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
Estoy con Maestro, comprueba los campos que tienes en tu BD y te recomiendo coloques un cerrojo apropiado al recordset, po ejemplo:

rs.Open SQL, oConn, 1, 3

Saludos a tod@s
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #11 (permalink)  
Antiguo 11/06/2003, 20:05
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
HTTP 500.100. Error interno del servidor: error de ASP
Servicios de Internet Information Server

--------------------------------------------------------------------------------

Información técnica (para personal de soporte técnico)

Tipo de error:
Microsoft JET Database Engine (0x80040E09)
No se puede actualizar. Base de datos u objeto de sólo lectura.
/busqueda/recibe.asp, línea 15

He puesto el cerrojo q me recomendasteis y he puesto permisos de escritura en la carpeta y tabla, tb he comprobado q no me haya confundido en los registros de la página de envio .

Y nada... mañana sigo intentando , gracias de nuevo
  #12 (permalink)  
Antiguo 11/06/2003, 20:54
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
insisto que debe ser algo de lo que se ha mencionado, permisos de escritura... o cerrojo.

En fín, no se porque otra cosa pudiera fallar.

Saludos.
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #13 (permalink)  
Antiguo 12/06/2003, 05:00
Avatar de Subotai  
Fecha de Ingreso: mayo-2003
Ubicación: Irúnforge
Mensajes: 198
Antigüedad: 22 años
Puntos: 1
has provado si con el metodo execute te devuelve el mismo error? si es asi puedes olvidarte de que sea problema del recordset o algo asi, si con metodo diferentes (aunque no tanto), devuelve el mismo error tiene que ser problema de permisos de la bd o algo relacionado...

prueba esto

set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("tubase.mdb")&";"
oConn.Execute "insert into tutabla(camppo1,campo2,campo3,....) VALUES('valor_campo1','valor_campo2','valor_campo3 ',.... )" oConn.Close
set oConn= nothing

No se que mas te puedo decir....
suerte!!!
  #14 (permalink)  
Antiguo 12/06/2003, 05:05
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
Muchas gracias al fin esta solucionado, tenian razón era cuestión de permisos de escritura, por cierto con el xp un verdadero rompecabezas !!!

Ahora me surge otro problema con el código arriba mencionado para que me funcione la insercción en la base de access el usuario me debe de rellenar todos los campos, como podría hacer para que si deja algun campo en blanco, me deje el hueco en el campo de la base de datos pero se pudiera enviar el formulario de igual forma ?

Muchas gracias de antemano por la paciencia q tienen conmigo

Por si me he explicado mal el tipo de error q me sale es este


El campo 'tabla.campo13' no puede ser una cadena de longitud cero.

El código es el mismo q aparece en las faq manda.htm recibe.asp

Gracies
  #15 (permalink)  
Antiguo 12/06/2003, 05:06
Avatar de Subotai  
Fecha de Ingreso: mayo-2003
Ubicación: Irúnforge
Mensajes: 198
Antigüedad: 22 años
Puntos: 1
Que velocidad!! jejejejeje
pues una manera muy facil es con el metodo execute pasando los valores de todos los campos del formulario, si dejara algun campo sin rellenar la variable no tendria na de na, asi ke mientras los campos vacios no correspondan con campos de tu tabla que no admitan nulos todo ira sobre ruedas

set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("tubase.mdb")&";"
oConn.Execute "insert into tutabla(camppo1,campo2,campo3,....) VALUES('"&variable_campo1&"','"&variable_campo2&"' ,'"&variable_campo3&"',.... )"
oConn.Close
set oConn= nothing

espero ke te sirva de algo
agur

Última edición por Subotai; 12/06/2003 a las 05:37
  #16 (permalink)  
Antiguo 12/06/2003, 05:24
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
Llamandose la base de datos base.mbd y la tabla, tabla como podría acoplar el código que me dices ? Toy en los inicios del ASP
comprendame pleaseeeeeeeee y muchas gracias



Manda.htm

<form method="post" action="recibe.asp">
<input type="text" name="campo_formulario1" size="20">
<input type="text" name="campo_formulario2" size="20">
<input type="submit" value="Enviar" name="eviar">
<input type="reset" value="Restablecer" name="reestablecer">
</form>



Recibe.asp

<%
set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("tubase.mdb")&";"
SQL="SELECT * FROM tabla"
rs.Open SQL, oConn, 1, 3
rs.addnew
rs("campo1")=request("campo_formulario1")
rs("campo2")=request("campo_formulario2")
rs.update
rs.close
oConn.close
%>
  #17 (permalink)  
Antiguo 12/06/2003, 05:37
Avatar de Subotai  
Fecha de Ingreso: mayo-2003
Ubicación: Irúnforge
Mensajes: 198
Antigüedad: 22 años
Puntos: 1
Pues si ya te lo puse en el anterior mensaje , que pasa que hoy estamos vagos? jejejej pues no pasa na ke como yo yo tambien estoy en mis inicios de asp se lo que se sufre
hoy por ti mañana por mi jejeje
ahi e va


Manda.htm

<form method="post" action="recibe.asp">
<input type="text" name="campo_formulario1" size="20">
<input type="text" name="campo_formulario2" size="20">
<input type="submit" value="Enviar" name="eviar">
<input type="reset" value="Restablecer" name="reestablecer">
</form>



Recibe.asp
<%
Dim oConn
Dim variable_campo1, variable_campo2, variable_campo3

%>
<body>
<%
variable_campo1=Request.Form("variable_campo1")
variable_campo2=Request.Form("variable_campo2")
variable_campo3=Request.Form("variable_campo3")

set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("tubase.mdb")&";"
oConn.Execute "insert into tutabla(campo1,campo2,campo3,....) VALUES('"&variable_campo1&"','"&variable_campo2&"' ,'"&variable_campo3&"',.... )"
oConn.Close
set oConn= nothing
%>
</body>

incluso puedes eliminiar lo de las variables y utilizar solamente
los datos que recibes por el request.Form, a gusto de cada uno
ahora te tiene ke funcionar fijo si no...uyuyuyyuy...
enga agur!!!
  #18 (permalink)  
Antiguo 12/06/2003, 05:40
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
Cuando en la página de "RECIBE.ASP" recibes las variables, de este modo (REQUEST.FORM) y lo asignas a variables para aclararnos mejor:

Dim Variable1, Variable2

variable1 = Request.Form("campo1")
variable2 = Request.Form("campo2")

Puedes hacer un condicional como este para verificar si contiene o no contenido, juesto después de haber grabado las variables:

If Len(variable1) = 0 then variable1 = "vacio"
If Len(variable2) = 0 then variable2 = "vacio"

De esta manera, si el usuario no escribe nada en un campo, en la BD se grabará "vacio" para así aclararte tu.


Espero que lo hayas entendido, pues sólo te faltaría meter las variables a la tabla:

rs.addnew
rs("campo1") = variable1
rs("campo2") = variable2
rs.update
rs.close
oConn.close



Un saludo!
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #19 (permalink)  
Antiguo 12/06/2003, 05:54
Avatar de Subotai  
Fecha de Ingreso: mayo-2003
Ubicación: Irúnforge
Mensajes: 198
Antigüedad: 22 años
Puntos: 1
Aaaaaaammmmmmmmm ahora entiendo mejor yo esto no lo habia leido!!!
Cita:
El campo 'tabla.campo13' no puede ser una cadena de longitud cero.
Entonces hazlo mejor como dice Fr@Nc3$c0
bueno comax03, no te quejaras de ayuda he..... jejejeje
pues sin mas preambulos hasta otra!!
agur!!
  #20 (permalink)  
Antiguo 12/06/2003, 08:03
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
Me vais a llamar pesado pero no es mi culpar grrr

<%
Dim Variable1, Variable2
variable1 = Request.Form("campo1")
variable2 = Request.Form("campo2")
If Len(variable1) = 0 then variable1 = "vacio"
If Len(variable2) = 0 then variable2 = "vacio"

set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("tubase.mdb")&";"
SQL="SELECT * FROM tabla"
rs.Open SQL, oConn, 1, 3
rs.addnew
rs("campo1") = variable1
rs("campo2") = variable2
rs.update
rs.close
oConn.close
%>

Este es el código q tengo ahora y si se me envía el formulario si hay campos en blanco, lo q ocurre ahora es q lo q se rellena lo pasa por alto y pone a todo vacio, diosssssss alguna solución ? y muchas gracias de veras

Eyyyyyyyyyy perdonarme ya esta solucionado, estoy apijotado

joer muchas gracias de veras, un saludo, y un abrazo si me

permiten, GRACIASSSSSSSS
  #21 (permalink)  
Antiguo 12/06/2003, 08:05
Avatar de Subotai  
Fecha de Ingreso: mayo-2003
Ubicación: Irúnforge
Mensajes: 198
Antigüedad: 22 años
Puntos: 1
  #22 (permalink)  
Antiguo 12/06/2003, 08:24
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 3 meses
Puntos: 1
Puedes usar un script de JAVASCRIPT para validar si los cuadros han sido rellenados.
Tambien puedes comprbar con ASP que los datos fueron ecritos y en caso contrario redirigir a la pagina del formulario.

<%
if request.form("campo1")="" or request.form("campo2")="" then
response.redirect("manda.htm")
else

set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("tubase.mdb")&";"
SQL="SELECT * FROM tabla"
rs.Open SQL, oConn, 1, 3
rs.addnew
rs("campo1") = variable1
rs("campo2") = variable2
rs.update
rs.close
oConn.close
end if
%>
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #23 (permalink)  
Antiguo 12/06/2003, 08:57
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
Me ratifico en lo q dije antes siempre con este código me pone todos los campos vacio aun cuando lo relleno, es decir en la tabla de access rellene o no el formulario en todos los campos me pone "vacio" saben q error estoy cometiendo ? muchas gracias


<%
Dim Variable1, Variable2
variable1 = Request.Form("campo1")
variable2 = Request.Form("campo2")
If Len(variable1) = 0 then variable1 = "vacio"
If Len(variable2) = 0 then variable2 = "vacio"

set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("tubase.mdb")&";"
SQL="SELECT * FROM tabla"
rs.Open SQL, oConn, 1, 3
rs.addnew
rs("campo1") = variable1
rs("campo2") = variable2
rs.update
rs.close
oConn.close
%>
  #24 (permalink)  
Antiguo 12/06/2003, 09:07
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 3 meses
Puntos: 1
¿Has cambiado en el formulario los nombres de los cuadors de texto?
variable1 = Request.Form("campo1")
variable2 = Request.Form("campo2")

Ahora ya no se llaman formulario1 y formulario2
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #25 (permalink)  
Antiguo 12/06/2003, 09:13
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
Muchas gracias maestro el q tiene empanada , tiene empanada q se le va hacer... ese era el fallo, no me mateis !!
  #26 (permalink)  
Antiguo 12/06/2003, 09:16
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 3 meses
Puntos: 1
Me alegro de que te funcione por fin.
¿Entonce ya se te ha pasado el enfado por el otro mensaje?
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #27 (permalink)  
Antiguo 12/06/2003, 10:18
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
Si ya está solucionado y ya se me ha pasado el enfado de ayer, te pido disculpas públicas por haberme rebotado de esa manera, un saludo
  #28 (permalink)  
Antiguo 12/06/2003, 15:37
Avatar de Fr@Nc3$c0  
Fecha de Ingreso: abril-2002
Ubicación: Barcelona (Spain)
Mensajes: 710
Antigüedad: 23 años, 1 mes
Puntos: 1
jejeje, ale todo arreglado!!

Saludos y siento el retraso, el trabajo.... absorbe!

Ciao y suerte
__________________
Francesc Mula Calleja
Hay mucho por ver todavía...
  #29 (permalink)  
Antiguo 12/06/2003, 15:47
 
Fecha de Ingreso: mayo-2003
Mensajes: 101
Antigüedad: 22 años
Puntos: 0
Gracias Franchesco !!!!!
  #30 (permalink)  
Antiguo 13/06/2003, 01:53
Avatar de Subotai  
Fecha de Ingreso: mayo-2003
Ubicación: Irúnforge
Mensajes: 198
Antigüedad: 22 años
Puntos: 1
Offtopic: Me encantan estos post

Asi deberian acabar todos los post con una reconciliacion entre hermanos del foro asi da gusto leer los mensajes, cuando tienen un final feliz como en las pelis de los años 60 jejeje asi sin malos rollos mucho mejor,no?
(.....uy espero que no les siente mal, y si se enfadan? uyuyuyuyu que mal rollito..... )
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 04:34.