Problemas al insertar registros con ADO
Publicado por Jorge Díaz (1 intervención) el 17/08/2006 10:13:29
Tengo una duda importante en manejo de bases de datos con ADO en Visual Basic 6. Tengo un formulario para una tabla de
mi base de datos creada previamente en Access en la que existe un campo clave, de tipo Autonumerico, o sea que desde mi
aplicación no necesito entrar su valor. Pues bien el caso es que primero desde un botón "Agregar" añado una fila nueva
al Recorset (mediante AddNew) y luego, tras rellenar los textbox del resto de los campos, mediante otro boton Aceptar
doy la orden Update, pero me da un error que me dice que ese campo clave no es actualizable. NO se que puede dar el
error, en si. Si es que defino un cursor Estatico, y ubicao en el cliente, o es problema debido a Access, que por
cierto, he tenido que guardar mi base de datos en formato de Access 97, para que VB la pueda reconocer (la bd estaba
originarlmente hecha con Access 2003).
Aqui muestro los segmentos de codigo donde se estan produciendo estos errores:
Private Sub cmdAgregar_Click()
On Error Resume Next
OperReg = opAgregar
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then
ctrl.Text = ""
ctrl.Locked = False
End If
Next
txtIdTipoEmpresa.Locked = True
cmdAgregar.Visible = False
cmdModificar.Visible = False
cmdEliminar.Visible = False
cmdAceptar.Visible = True
cmdCancelar.Visible = True
cmdPrimero.Visible = False
cmdAnterior.Visible = False
cmdSiguiente.Visible = False
cmdUltimo.Visible = False
If RSTipoEmpresa.Supports(adBookmark) Then
UltFila = RSTipoEmpresa.Bookmark
End If
RSTipoEmpresa.AddNew*
If Err.Number <> 0 Then MsgBox Err.Description
End Sub
* aqui me da el error:"Operación cancelada"
Private Sub cmdAceptar_Click()
On Error Resume Next
' Actualiza los cambios en la base de datos
RSTipoEmpresa.Update**
If Err.Number <> 0 Then
If RSTipoEmpresa.EditMode = adEditAdd Then
MsgBox "No se ha podido guardar el registro. " & vbCrLf & Err.Description
End if
RSTipoEmpresa.CancelUpdate
End If
'Muestra botones de operaciones y de navegación, oculta botones Aceptar y Cancelar
cmdAgregar.Visible = True
cmdModificar.Visible = True
cmdEliminar.Visible = True
cmdAceptar.Visible = False
cmdCancelar.Visible = False
cmdPrimero.Visible = True
cmdAnterior.Visible = True
cmdSiguiente.Visible = True
cmdUltimo.Visible = True
' Bloque los Textboxs
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then
ctrl.Locked = True
End If
Next
End Sub
** Aqui me da el error:"No se ha podido actualizar "IdTipoEmpresa", el campo no es actualizable"
nota: IdTipoEmpresa es el campo clave de mi tabla
mi base de datos creada previamente en Access en la que existe un campo clave, de tipo Autonumerico, o sea que desde mi
aplicación no necesito entrar su valor. Pues bien el caso es que primero desde un botón "Agregar" añado una fila nueva
al Recorset (mediante AddNew) y luego, tras rellenar los textbox del resto de los campos, mediante otro boton Aceptar
doy la orden Update, pero me da un error que me dice que ese campo clave no es actualizable. NO se que puede dar el
error, en si. Si es que defino un cursor Estatico, y ubicao en el cliente, o es problema debido a Access, que por
cierto, he tenido que guardar mi base de datos en formato de Access 97, para que VB la pueda reconocer (la bd estaba
originarlmente hecha con Access 2003).
Aqui muestro los segmentos de codigo donde se estan produciendo estos errores:
Private Sub cmdAgregar_Click()
On Error Resume Next
OperReg = opAgregar
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then
ctrl.Text = ""
ctrl.Locked = False
End If
Next
txtIdTipoEmpresa.Locked = True
cmdAgregar.Visible = False
cmdModificar.Visible = False
cmdEliminar.Visible = False
cmdAceptar.Visible = True
cmdCancelar.Visible = True
cmdPrimero.Visible = False
cmdAnterior.Visible = False
cmdSiguiente.Visible = False
cmdUltimo.Visible = False
If RSTipoEmpresa.Supports(adBookmark) Then
UltFila = RSTipoEmpresa.Bookmark
End If
RSTipoEmpresa.AddNew*
If Err.Number <> 0 Then MsgBox Err.Description
End Sub
* aqui me da el error:"Operación cancelada"
Private Sub cmdAceptar_Click()
On Error Resume Next
' Actualiza los cambios en la base de datos
RSTipoEmpresa.Update**
If Err.Number <> 0 Then
If RSTipoEmpresa.EditMode = adEditAdd Then
MsgBox "No se ha podido guardar el registro. " & vbCrLf & Err.Description
End if
RSTipoEmpresa.CancelUpdate
End If
'Muestra botones de operaciones y de navegación, oculta botones Aceptar y Cancelar
cmdAgregar.Visible = True
cmdModificar.Visible = True
cmdEliminar.Visible = True
cmdAceptar.Visible = False
cmdCancelar.Visible = False
cmdPrimero.Visible = True
cmdAnterior.Visible = True
cmdSiguiente.Visible = True
cmdUltimo.Visible = True
' Bloque los Textboxs
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then
ctrl.Locked = True
End If
Next
End Sub
** Aqui me da el error:"No se ha podido actualizar "IdTipoEmpresa", el campo no es actualizable"
nota: IdTipoEmpresa es el campo clave de mi tabla
Valora esta pregunta


0