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

Como insertar datos

Estas en el tema de Como insertar datos en el foro de ASP Clásico en Foros del Web. Tengo el siguiente error Tipo de error: Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][Controlador ODBC Microsoft Access] La operación debe usar una consulta ...
  #1 (permalink)  
Antiguo 09/01/2003, 07:48
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 6 meses
Puntos: 1
Como insertar datos

Tengo el siguiente error Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Controlador ODBC Microsoft Access] La operación debe usar una consulta actualizable.
Creo que se debe al permiso escritura?, s i es asi como puedo resorverlo, yo uso IIs de XP

Gracias miguel
  #2 (permalink)  
Antiguo 09/01/2003, 08:08
Avatar de DanielRey
Usuario no validado
 
Fecha de Ingreso: enero-2001
Ubicación: Mendoza
Mensajes: 630
Antigüedad: 23 años, 4 meses
Puntos: 1
Hola numerito

Cuando hacés una consulta sobre la base de datos, se realiza un "bloqueo compartido", es decir, el o los registros que son objeto de la consulta pueden ser consultados por otros usuarios al mismo tiempo, pero no modificados.

Cuando hay un bloqueo compartido pueden realizarse más bloqueos compartidos pero no bloqueos exclusivos.

Cuando lo que querés hacer es una modificación (Agregar, borrar o modificar) el tipo de bloqueo que se debe realizar es un "bloqueo exclusivo".

De este modo, en un ambiente de red, el sistema se asegura que ningún usuario acceda a un dato que está siendo modificado.

Al abrir un cursor, si no se especifica otra cosa, el sistema realiza un bloqueo compartido, esto significa que NO se pueden modificar los datos.

Lo que tenés que hacer si querés modificarlos es un bloqueo exclusivo. ¿y como se hace?
Ejemplo:
Dim Conn
Dim Rs
Dim curDir
curDir = Server.MapPath("/Cronos/base/cronos.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set Rs = Server.CreateObject("ADODB.Recordset")
Set Rs.ActiveConnection = Conn
Rs.Source = "Select * FROM Proceso Where 1=2"
Rs.CursorType = adOpenStatic
Rs.LockType = adLockOptimistic

Rs.Open
Rs.Addnew
Rs("proceso_id").Value = Request.Form("proceso_id")
Rs("usuario_id").Value = Request.Form("usuario_id")
Rs.Update
Rs.Close
Set Conn = Nothing
Set Rs = Nothing
Set curDir = Nothing

Sin embargo, es más aconsejable, para Altas, Bajas y Modificaciones utilizar el método Execute en lugar de usar cursores (recordest)

¿Y esto otro como se hace?
Ejemplo:
Alta:
Conn.Execute "Insert into tabla (campo1, campo2, ... ) values (valorNumérico, 'ValorTexto', ... )"

Baja:
Conn.Execute "Delete from tabla where condicion "

Modificación:
Conn.Execute "Update tabla set campo1 = ValorNum, campo2 = 'ValorText' , ... where condicion "

Suerte
  #3 (permalink)  
Antiguo 09/01/2003, 09:21
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 6 meses
Puntos: 1
Gracias por contestar daniel rey.....

Pero no entiendo lo que me diste, ya que soy nuevo en asp, e logrado hacer consulta a traves de un formulario a una bd de acces y lo que quiero es ahora isertar cedula, nombre y apellido a mi bd, los ejemplos que e encontrado son muy bueno pero me sigue arrojando esl mismo error: Tipo de error:
Microsoft JET Database Engine (0x80004005)
La operación debe usar una consulta actualizable.
/asp/procesar.asp, línea 9
Creo que mi servidor no tiene permiso de escritura, POR FAVOR LO QUE QUIERO ES SABER COMO PUEDO ACTIVARLO, UTLISO IIS 5.0 EN XP,,,,AYUDA POR FAVOR PORQUE ESTE LENGUAJE ME GUSTA MUCHO

MIGUEL.....QUE ALGUIEM ME AYUDE
  #4 (permalink)  
Antiguo 09/01/2003, 09:35
Avatar de DanielRey
Usuario no validado
 
Fecha de Ingreso: enero-2001
Ubicación: Mendoza
Mensajes: 630
Antigüedad: 23 años, 4 meses
Puntos: 1
No creo que sea problema de permisos, si no del tipo de cursor que estás utilizando: La operación debe usar una consulta actualizable.

Supongamos que tu tabla se llama Persona y que recibís desde un fromulario "cedula", "nombre" y "apellido", que a su vez son tres campos de tu tabla.

No utilicés un Recordset, poné:
Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

Conn.Execute "insert into Persona (nombre, apellido, cedula) values ( ' " & Request.Form("nombre") & " ' , ' " & Request.Form("apellido") & " ' , ' " & Request.Form("cedula") & " ' ) "
  #5 (permalink)  
Antiguo 09/01/2003, 12:11
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 6 meses
Puntos: 1
Gracias danierey.....

Sabes tenia razon, pero tambien era lo que yo decia, ya que a mi carpeta le cambie a compartido y me funciono, por supuesto siguiendo tus idicaciones tambien...

mil gracias, pronto colocare otra pregunta, por que esto me gusta y tengo en mente un proyecto para mi trabajo....
  #6 (permalink)  
Antiguo 09/01/2003, 12:30
Avatar de DanielRey
Usuario no validado
 
Fecha de Ingreso: enero-2001
Ubicación: Mendoza
Mensajes: 630
Antigüedad: 23 años, 4 meses
Puntos: 1
No es necesario que la base de datos esté en una carpeta compartida, y de hecho es recomendable que NO esté en una carpeta compartida, porque si lo haces así, corres el riesgo de que algún usuario "manipule" los datos.
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 15:40.