error 3021 en tiempo de ejecución

llanes
27 de Febrero del 2004
Hola como están sigo con el mismo error a la hora de agregar un registro a la base de datos.

sucede que hago la conexion a la base de datos manualmente por código y entonces este es el código que utilizo

Option Explicit

Private cnn As ADODB.Connection
Private WithEvents rst As ADODB.Recordset

Private Sub Form_Load()

'Crear los objetos

Dim ruta As String
Dim strBarra As String

cmdCancelar.Visible = False
cmdUpdate.Visible = False
Text1(0).Enabled = False
Text1(1).Enabled = False
cmdCancelar.Visible = False
cmdAdd.Visible = True
cmdMover(0).Enabled = True
cmdMover(1).Enabled = True
cmdMover(2).Enabled = True
cmdMover(3).Enabled = True
cmdRPTCocinero.Enabled = True
cmdSalir.Enabled = True
cmdDelete.Enabled = True
cmdEdit.Visible = True

strBarra = Right(App.Path, 1)

If strBarra = "" Then

ruta = "DIJO """ + App.Path + "ESCANDALLO(Ia).mdb"
Else

ruta = App.Path + "ESCANDALLO(Ia).mdb"
End If

Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
'
'
'Crear la conexion manualmente

' Usar "Provider=Microsoft.Jet.OLEDB.3.51;" para bases de Access 97
' Usar "Provider=Microsoft.Jet.OLEDB.4.0;" para bases de Access 2000




With cnn
.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.3.51;" & _
"Data Source=" & ruta & ";"
.Open
End With
' Indicarle de que tabla vamos a leer los datos
rst.Open "SELECT * FROM cocinero", cnn, adOpenDynamic, adLockOptimistic
'
' Asignar los nombres de los campos a las etiquetas

cmdMover_Click 0

End Sub

Private Sub rst_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, _
ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)

' Cada vez que el registro actual cambie,
' se producirá este evento (igual que con el DataControl)

With rst

'----------------------------------------------------------------------
' Nota aclaratoria del 18/Dic/2003:
' Cuando en un Recordset no hay datos, tanto BOF como EOF devuelven True
'----------------------------------------------------------------------

If .EOF And .BOF Then
lblData.Caption = "No hay ningún registro activo"
.MoveFirst

ElseIf .EOF Then
cmdMover(2).Enabled = False


ElseIf .BOF Then
cmdMover(3).Enabled = False

Else

Text1(0) = .Fields("codcocin").Value

' Por si el dato es nulo, añadirle una cadena vacia

Text1(1) = .Fields("nombre") & ""

End If

End With

End Sub

Private Sub cmdMover_Click(Index As Integer)
' Mover según el botón pulsado
'On Error Resume Next
'
With rst

If Index = 0 Then ' Primero
.MoveFirst
cmdMover(2).Enabled = True

ElseIf Index = 1 Then ' Anterior
.MoveLast
cmdMover(3).Enabled = True

ElseIf Index = 2 Then ' Siguiente
.MoveNext
cmdMover(3).Enabled = True

ElseIf Index = 3 Then ' Último
.MovePrevious
cmdMover(2).Enabled = True
End If
'
If .BOF Then
.MoveFirst
lblData.Caption = "Es el principio de la base de datos"
ElseIf .EOF Then
.MovePrevious
lblData.Caption = "Es el final de la base de datos"
End If
End With
'
Err = 0
End Sub

Private Sub cmdAdd_Click()

On Error GoTo adderr

addnew:
rst.addnew

Exit Sub
adderr:
GoTo addnew
End Sub


la conexion es manualmente

saludos
llanes

Juan Diego
27 de Febrero del 2004
Hola llanes, no es por ofenderte, pero no se que te pasa que cuando sales de un error te metes en otro, no se si no estás en racha o algo pero tienes muy mala suerte

saludos