Erreur " un index ou une clé principale ne peut pas contenir....

Fermé
bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016 - Modifié par bithack le 27/04/2015 à 09:12
Bonjour,
Voila actuellement je travail sur un petit programme en VBA sous Access. Débutant dans la programmation VBA, ne trouvant pas mon erreur sur la toile je m'en remet à vos mains d'experts.
Mon code a pour but de faire sortir une date par rapport a la date du système et les classer en trois groupe run1, run2 et run3. j'ai donc fais des boucles permettant de comparer les différentes dates.
j'ai deux erreurs :
La première est la suivante lorsque que la comparaison est bonne, il rentre dans la boucle pour inscrire dans la table et me met l'erreur suivante : "un index ou une clé principale ne peut pas contenir une valeur null. " pourtant j'ai une clef primaire dans ma table et qui n'est pas celle des dates.

La deuxième erreur est du code, dans ma table calendrier j'ai trois champs un run1, un run2 et un run3. Dans mon code ils se nomment rs1, rs2 et rs3.
Le probleme c'est qu'ils reste que sur la premiere ligne de mes trois champs mais ne passe pas au suivant. je n'ai pas de solution..

Voici mon code :
Sub typeR()
Dim Jour As String
Dim db As DAO.Database
Dim rsdateres As DAO.Recordset
Dim sSQL0 As String
Dim rs1 As DAO.Recordset
Dim sSQL1 As String
Dim rs2 As DAO.Recordset
Dim sSQL2 As String
Dim rs3 As DAO.Recordset
Dim sSQL3 As String
Dim rs4 As DAO.Recordset
Dim sSQL4 As String


Jour = date
MsgBox Jour


Set db = CurrentDb

sSQL0 = "SELECT date_resil FROM Dossier "
Set rsdateres = db.OpenRecordset(sSQL0, dbOpenDynaset, dbSeeChanges, dbPessimistic)

sSQL1 = "select Run1 FROM calendrier "
Set rs1 = db.OpenRecordset(sSQL1, dbOpenDynaset, dbSeeChanges, dbPessimistic)

sSQL2 = "select Run2 FROM calendrier "
Set rs2 = db.OpenRecordset(sSQL2, dbOpenDynaset, dbSeeChanges, dbPessimistic)

sSQL3 = "select Run3 FROM calendrier "
Set rs3 = db.OpenRecordset(sSQL3, dbOpenDynaset, dbSeeChanges, dbPessimistic)

sSQL4 = "select run from Dossier"
Set rs4 = db.OpenRecordset(sSQL4, dbOpenDynaset, dbSeeChanges, dbPessimistic)
rsdateres.MoveFirst

rsdateres.MoveFirst
Do Until rsdateres.EOF

If rsdateres!date_resil < Jour And rsdateres!date_resil < rs1!run1 Then
With rs4
.AddNew
rs4.Fields("run") = run1
rs4.Update
End With


Else
If rsdateres!date_resil < Jour And rsdateres!date_resil < rs2!run2 And rsdateres!date_resil > rs1!run1 Then
With rs4
.AddNew
rs4.Fields("run") = run1
rs4.Update
End With

Else
If rsdateres!date_resil < Jour And rsdateres!date_resil < rs3!run3 And rsdateres!date_resil > rs2!run2 Then
With rs4
.AddNew
rs4.Fields("run") = run1
rs4.Update
End With

Else
If rsdateres!date_resil < Jour And rsdateres!date_resil > rs3!run3 Then
With rs4
.AddNew
rs4.Fields("run") = run1
rs4.Update
End With




End If
End If
End If
End If
rsdateres.MoveNext
Loop

rsdateres.Close ' Fermeture du Recordset
'MsgBox


'l = rst.RecordCount
End Sub


Merci de votre aide précieuse



A voir également: