Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

problemas al insertar registro

Estas en el tema de problemas al insertar registro en el foro de Visual Basic clásico en Foros del Web. hola amigos mi problema es que tengo una conexion a una bd, la conexion me funciona bien pero cuando quiero insertar un registro a la ...
  #1 (permalink)  
Antiguo 02/09/2008, 18:27
 
Fecha de Ingreso: mayo-2003
Ubicación: Concepción
Mensajes: 80
Antigüedad: 21 años
Puntos: 0
problemas al insertar registro

hola amigos
mi problema es que tengo una conexion a una bd, la conexion me funciona bien pero cuando quiero insertar un registro a la base de datos. me arroja el sigte error: el recordset actual no admite actualizaciones, puede ser una limitacion del proveedor o del tipo de bloqueo seleccionado el codigo es el siguiente:

Public bd As Connection
Public grabar As Recordset

Private Sub Form_Load()
If App.PrevInstance Then Exit Sub: End ' Solo ejecutar la App una vez
Set bd = New Connection
bd.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sisporc.mdb" & ";"
bd.Open
end sub


Private Sub Commguardar_Click()

Set grabar = bd.Execute("SELECT * FROM datos_alumnos")

With grabar
.AddNew
.Fields("Rut") = RUT_PER
.Fields("cod_ensayo") = Text1
.Fields("nombre") = Text2
.Fields("ensayo") = Combo1
.Fields("horario") = Combo2
.Fields("fecha") = MaskEdBox1
.Update
End With


end sub

uso acces 2000 2003
nose si la sintaxis esta correcta

desde ya gracias
__________________
deep
  #2 (permalink)  
Antiguo 02/09/2008, 19:27
 
Fecha de Ingreso: junio-2008
Mensajes: 2
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: problemas al insertar registro

Estimado Deep:

El inconveniente es que al crear el recordset a partir de la consulta que ejecutas desde la instrucción execute del objeto connection, por defecto ADO crea un cursor de de solo lectura y solo avance es decir adforwardonly y readonly.

Puedes solucionarlo de 2 maneras:

1. Creando el cursor así:

set grabar= new recordset
grabar.open "SELECT * FROM datos_alumnos",bd,adOpenDynamic,adLockOptimistic

Este recordset si es actualizable

y luego si las intrucciones para insertar un nuevo registro tal como las tienes
with grabar
.addnew
etc

2. Puedes prescindir del recordset, de esta forma ahorras memoria y aumentas velocida por que si lo piensas para que consultas todos los registro de tu tabla si lo que vas a hacer es insertar?

Entonces la solución seria la siguiente:

db.execute "INSERT INTO DATOS_ALUMNOS (rut,cod_ensayo,nombre,ensayo,horario,fecha) values (" RUT_PER & ",'" & text1.text & "','" & text2.text & "','" & combo1.text & "','" & combo2.text & "','" & maskedbox1 & "')"

y listo no necesitas el recordset para nada

Asumí que el primer campo era numerico y el resto era texto pero... solo tu lo sabes.

suerte, besos Yese.
  #3 (permalink)  
Antiguo 03/09/2008, 10:13
 
Fecha de Ingreso: mayo-2003
Ubicación: Concepción
Mensajes: 80
Antigüedad: 21 años
Puntos: 0
Respuesta: problemas al insertar registro

Cita:
Iniciado por yesebalanta Ver Mensaje
Estimado Deep:

El inconveniente es que al crear el recordset a partir de la consulta que ejecutas desde la instrucción execute del objeto connection, por defecto ADO crea un cursor de de solo lectura y solo avance es decir adforwardonly y readonly.

Puedes solucionarlo de 2 maneras:

1. Creando el cursor así:

set grabar= new recordset
grabar.open "SELECT * FROM datos_alumnos",bd,adOpenDynamic,adLockOptimistic

Este recordset si es actualizable

y luego si las intrucciones para insertar un nuevo registro tal como las tienes
with grabar
.addnew
etc

2. Puedes prescindir del recordset, de esta forma ahorras memoria y aumentas velocida por que si lo piensas para que consultas todos los registro de tu tabla si lo que vas a hacer es insertar?

Entonces la solución seria la siguiente:

db.execute "INSERT INTO DATOS_ALUMNOS (rut,cod_ensayo,nombre,ensayo,horario,fecha) values (" RUT_PER & ",'" & text1.text & "','" & text2.text & "','" & combo1.text & "','" & combo2.text & "','" & maskedbox1 & "')"

y listo no necesitas el recordset para nada

Asumí que el primer campo era numerico y el resto era texto pero... solo tu lo sabes.

suerte, besos Yese.
gracias yese
con el primer ejemplo me funciona bien
pero el segundo me dice que se espera un objeto
pero en fin muchas garcias

depp besos igual
__________________
deep
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 18:12.