Bonjour à tous,
J'ai un comportement étrange dans ce code
Si le check_commande est <>0 tout va bien, mais si le check_index_OK<>0 il me met aucun enregistrement en cours quand il passe sur le Exit Sub
Ci dessous mon code
Voila le code de check_index_OK, rien de compliqué
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Sub Form_BeforeUpdate(Cancel As Integer) ''''''''''''''''''''''''''''''''''''''''' ' vérif champ a obligatoires ''''''''''''''''''''''''''''''''''''''''' If check_commande() <> 0 Then Cancel = True Exit Sub '=> on sort et tout va bien End If ''''''''''''''''''''''''''''''''''''''''' ' verif index unicité ''''''''''''''''''''''''''''''''''''''''' Conditions = Array( _ Array("Num_Cmde", Me.Num_Cmde, "TXT"), _ Array("Date_Cmde", Me.Date_Cmde, "DATE")) check_Index = check_index_OK("Pk_Commande", "T_Commandes", Me.Pk_Commande, Conditions) If check_Index <> 0 Then MsgBox "Le doublet : N° de commande - DATE saisi exite déjà" & vbCr & vbCr & "Modifiez un de ces 2 champs pour pouvoir sauver" _ , vbExclamation, "Sauvegarde impossible" Cancel = True Exit Sub '=> Message Aucun enregistrement en cours Else ' tout est OK If Me.Dirty Then If MsgBox(" Sauver les modifications de l'entête de la Commande?", vbYesNo + vbQuestion, "Save Changes") = vbNo Then Me.Undo Exit Sub End If End If End If
Note : build_chaine_where me construit la chaine qui va bien pour faire le DLookup et ça marche car il me trouve bien ce que je veux.
Une idée ?
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
17
18
19 Function check_index_OK(p_key_name, p_table_name, p_key_current, p_conditions) chaine_where = build_chaine_where(p_conditions) chkDoublon = DLookup("[" & p_key_name & "]", p_table_name, chaine_where) If Not IsNull(chkDoublon) Then If p_key_current = chkDoublon Then 'c'est le même record non modifie check_index_OK = 0 Else check_index_OK = 1 End If Else check_index_OK = 0 End If End Function
Je sèche ,
Je sui sur que le PB vient de
car si je remplace
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part check_Index = check_index_OK("Pk_Commande", "T_Commandes", Me.Pk_Commande, Conditions)
je n'ai pas le pb sur le exit
Code : Sélectionner tout - Visualiser dans une fenêtre à part check_Index =1
Mille mercis ,
François
Partager