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 34 35 36 37 38 39 40
| Private Sub txtChoix_AfterUpdate()
Dim dbs As Database, rst As Recordset
Set dbs = CurrentDb
'Vérifier que le champ de saisie ne soit pas vide
If (IsNull(txtChoix) Or (txtChoix = vbNullString)) Then
Me.txtChoix.SetFocus
Exit Sub
End If
'Recherche si la valeur saisie existe dans la table [T_A]
Set rst = dbs.OpenRecordset("T_A")
rst.FindFirst "[Num_A]='" & txtChoix & "'"
'Valeur inconnue...
If rst.NoMatch Then
'...alors, on affiche un message d'erreur...
MsgBox "La valeur " & txtChoix & " n'existe pas dans la table T_A de la Base_2", vbInformation, "Erreur de saisie"
'...et on repositionne le curseur sur la zone de texte pour une nouvelle saisie
Me.txtChoix.Value = ""
Me.txtChoix.SetFocus
rst.Close
Set rst = Nothing
Exit Sub
Else
'Valeur existante
'On recopie l'enregistrement correspondant dans la table T_B.....à l'aide d'une requête SQL
'Que l'on peut traduire en langage clair par ..:
'Inserer dans les champs (Num_B,Nom_B,Prenom_B)de la table T_B....
'..les champs (Num_A,Nom_A,Prenom_A) de la table T_A...
'..ayant comme critère le champ Num_A égal à la valeur saisie dans le contrôle [txtChoix]
Dim sSQL As String
sSQL = "INSERT INTO T_B(Num_B,Nom_B,Prenom_B) SELECT Num_A,Nom_A,Prenom_A FROM T_A WHERE Num_A= '" & txtChoix & "'"
'Ici, exécution de la requête
DoCmd.RunSQL sSQL
Me.txtChoix.Value = ""
End If
rst.Close
Set rst = Nothing
Exit Sub
End Sub |
Partager