
error error no se puede anexar los registros-infracciones de claves
Publicado por victor alfonso (21 intervenciones) el 24/02/2023 23:31:31
Muy buenas tardes cordial saludo, agradecido de antemano por este espacio para resolver problemas de programación para aquellas personas que no tenemos muchos conocimientos al respecto.
estoy intentando guardar registros en una tabla en Access, utilizando una sentencia SQL, insert into.
ahora bien cuando el código se ejecuta sale un error que indica que el sistema es decid la DB que se esta creando no puede anexar los registros a la tabla.
lo que necesito es que al momento de ejecutar otro código y guardar los registros en otra tabla tbSemestre1, en ese momento se ejecute otro código (el que esta posteado aquí) que guarde parte de esos datos del registro en la tabla tbNotas.
aclaración: no conviene realizar una consulta de anexar-tabla porque esta lo que hace es que copia lo que esta en una tabla y lo pasa a la otra, pero lo que en realidad quiero lograr es que en la tabla tbNotas pueda guardar el registro para el mismo estudiante varias vecesy que en un campo idMateriaModulo me le asigne el valor de del campo que se encuentra en el formulario de envio en el campo cmbmateriaModulo1 y al segundo registro cuando lo guarde asigne el valor en el campo idMAteriaModulo pero del segundo registro que seria del mismo estudiante del campo del formulario cmbmateriaModulo2.
espero hacerme entender.
comparto el código utilizado el sub Private Sub asignarMateriaNotas()
Private Sub asignarMateriaNotas()
Dim SQL As String
Dim SQL2 As String
Dim SQL3 As String
Dim SQL4 As String
Dim SQL5 As String
Dim SQL6 As String
'If Not IsNull(Me.cmbmateriaModulo1) Then
If (IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante.Value))) Then
SQL = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo1)"
DoCmd.RunSQL SQL
MsgBox "ya monto el primero en notas"
End If
'End If
'If Not IsNull(Me.cmbmateriaModulo2) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante.Value))) Then
SQL2 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante.Value, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo2)"
DoCmd.RunSQL SQL2
MsgBox "ya monto el segundo en notas"
End If
'End If
'If Not IsNull(Me.cmbmateriaModulo3) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante))) Then
SQL3 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo3);"
DoCmd.RunSQL SQL3
MsgBox "ya monto el tercero en notas"
End If
'End If
' If Not IsNull(Me.cmbmateriaModulo4) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante))) Then
SQL4 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo4);"
DoCmd.RunSQL SQL4
MsgBox "ya monto el cuarto en notas"
End If
'End If
' If Not IsNull(Me.cmbmateriaModulo5) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante))) Then
SQL5 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo5);"
DoCmd.RunSQL SQL5
MsgBox "ya monto el quinto en notas"
End If
'End If
' If Not IsNull(Me.cmbmateriaModulo6) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante))) Then
SQL6 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo6);"
DoCmd.RunSQL SQL6
MsgBox "ya monto el sexto en notas"
End If
'End If
End Sub
Peticion; Si esto se puede simplificar a un bucle y que me permita guardar varias veces el registro del mismo estudiante pero teniendo en cuenta que el segundo registro guardaria en la columna idMateriaModulo en la tabla tbNotas el valor del segundo elemento cmbmateriaModulo2. en el formulario de envío y así sucesivamente de acuerdo a la cantidad de módulos por ejemplo, es decir que si hay seis módulos en el formulario de envío deben guardarse 6 registros al mismo estudiante pero con diferentes módulos.
adjunto imagenes del error y diseño de las tablas




estoy intentando guardar registros en una tabla en Access, utilizando una sentencia SQL, insert into.
ahora bien cuando el código se ejecuta sale un error que indica que el sistema es decid la DB que se esta creando no puede anexar los registros a la tabla.
lo que necesito es que al momento de ejecutar otro código y guardar los registros en otra tabla tbSemestre1, en ese momento se ejecute otro código (el que esta posteado aquí) que guarde parte de esos datos del registro en la tabla tbNotas.
aclaración: no conviene realizar una consulta de anexar-tabla porque esta lo que hace es que copia lo que esta en una tabla y lo pasa a la otra, pero lo que en realidad quiero lograr es que en la tabla tbNotas pueda guardar el registro para el mismo estudiante varias vecesy que en un campo idMateriaModulo me le asigne el valor de del campo que se encuentra en el formulario de envio en el campo cmbmateriaModulo1 y al segundo registro cuando lo guarde asigne el valor en el campo idMAteriaModulo pero del segundo registro que seria del mismo estudiante del campo del formulario cmbmateriaModulo2.
espero hacerme entender.
comparto el código utilizado el sub Private Sub asignarMateriaNotas()
Private Sub asignarMateriaNotas()
Dim SQL As String
Dim SQL2 As String
Dim SQL3 As String
Dim SQL4 As String
Dim SQL5 As String
Dim SQL6 As String
'If Not IsNull(Me.cmbmateriaModulo1) Then
If (IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante.Value))) Then
SQL = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo1)"
DoCmd.RunSQL SQL
MsgBox "ya monto el primero en notas"
End If
'End If
'If Not IsNull(Me.cmbmateriaModulo2) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante.Value))) Then
SQL2 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante.Value, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo2)"
DoCmd.RunSQL SQL2
MsgBox "ya monto el segundo en notas"
End If
'End If
'If Not IsNull(Me.cmbmateriaModulo3) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante))) Then
SQL3 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo3);"
DoCmd.RunSQL SQL3
MsgBox "ya monto el tercero en notas"
End If
'End If
' If Not IsNull(Me.cmbmateriaModulo4) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante))) Then
SQL4 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo4);"
DoCmd.RunSQL SQL4
MsgBox "ya monto el cuarto en notas"
End If
'End If
' If Not IsNull(Me.cmbmateriaModulo5) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante))) Then
SQL5 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo5);"
DoCmd.RunSQL SQL5
MsgBox "ya monto el quinto en notas"
End If
'End If
' If Not IsNull(Me.cmbmateriaModulo6) Then
If (Not IsNull(DLookup("idEstudiante", "tbNotas", "idEstudiante = " & Me.cmbidentificacionEstudiante))) Then
SQL6 = "INSERT INTO tbNotas(idEstudiante, idNivelSemestre, idCalendario, idPrograma, idMateriaModulo)" _
& "VALUES(cmbidentificacionEstudiante, nombreSemestre, idCalendario, cmbidPrograma, cmbmateriaModulo6);"
DoCmd.RunSQL SQL6
MsgBox "ya monto el sexto en notas"
End If
'End If
End Sub
Peticion; Si esto se puede simplificar a un bucle y que me permita guardar varias veces el registro del mismo estudiante pero teniendo en cuenta que el segundo registro guardaria en la columna idMateriaModulo en la tabla tbNotas el valor del segundo elemento cmbmateriaModulo2. en el formulario de envío y así sucesivamente de acuerdo a la cantidad de módulos por ejemplo, es decir que si hay seis módulos en el formulario de envío deben guardarse 6 registros al mismo estudiante pero con diferentes módulos.
adjunto imagenes del error y diseño de las tablas




Valora esta pregunta


0