Bonjour à tous,

J'ai un gros problème de plantage d'Access, a cause d'un formulaire !?

Ce formulaire est basé sur une table "Tbl Opérations", et contient un sous-formulaire lié par "NumOP".
J'ai créé une liste déroulante modifiable "ListeOP", qui "After update" va positionner l'enregistrement sur "NumOP" trouvé.

Dans cette liste on peut saisir un nouveau numéro et sur l'évènement "NotInList" créé un nouvel enregistrement dans "Tbl Opérations", par une requête ajout !
Et c'est après qu'intervient le soucis de plantage !
Voici mes proc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
Private Sub ListeOP_AfterUpdate()
  ValOP = Me.ListeOP.Value
  ' Rechercher l'enregistrement correspondant au contrôle.
  Dim Rs As Object
  Set Rs = Me.Form.RecordsetClone
  Rs.FindFirst "[NumOP]= '" & ValOP & "'"
  If Not Rs.EOF Then Me.Form.Bookmark = Rs.Bookmark
  Rs.Close: Set Rs = Nothing
End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub ListeOP_NotInList(NewData As String, Response As Integer)
  If MsgBox("Ce numéro d'Affaire n'existe pas" & vbCrLf _
    & "Voulez-vous le créer ?", vbQuestion + vbYesNo, "Question ?") = vbYes Then
    ' Si la réponse est oui on créé la nouvelle Affaire
    strSQL1 = "INSERT INTO [Tbl Operations] ( NumOP ) "
    strSQL2 = "SELECT '" & NewData & "' ;"
    DoCmd.SetWarnings (False): DoCmd.RunSQL (strSQL1 + strSQL2): DoCmd.SetWarnings (True)
    DoCmd.OpenForm "XFrm AjoutOP", acNormal, , "[NumOP]= '" & NewData & "'", acFormEdit, acDialog
    ' On empèche l'erreur
    Response = acDataErrAdded
    Me.ListeOP.Value = NewData
    Me.Form.Requery
  Else
    Response = acDataErrContinue
  End If
End Sub
Quand je fais : Me.Form.Requery, pour actualiser mon formulaire avec la nouvelle valeur ! CA PLANTE ! Mais vraiment sérieux !

Je ne comprends pas !

Quelqu'un à une idée !?

Cordialement.

Merci d'utiliser des titres explicites (ancien titre : Gros problème ...) | cafeine