Bonjour à tous
Je suis actuellement étudiant et je cherche une solution pour renseigner des champs automatiquement après avoir saisi un premier (champ).
Dans mon formulaire, j'ai un champ "Code_Barre" et je voudrais que quand je remplis celui-ci, deux autres champs se remplissent automatiquement ("Référence" et "PK"). Je ne peux pas les mettre tous les trois dans la table liée au formulaire sinon j'ai une redondance.
A la base, j'ai une table qui regroupe ces trois champs (ce qui devrait me simplifier les choses,je pense).
Cependant, le fromulaire en cause n'utilise que Le code barre, une quantité et un numéro de production (SuiviProdID)unique.
C'est pourquoi j'essaie de faire une requête SQL (j'epère que c'est la bonne solution). J'ai vu dans un exemple qu'un utilisateur passait par un module pour faire sa requête. J'ai essayé mais ça ne marche pas.
Dans le module (BDDSuivi) j'ai mis ceci:
Code sql : 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
34
35
36 '*Fonction qui retourne la référence et le PK en fonction du code barre***' 'Paramètres d entrée : Code Barre' 'Paramètre de sortie : Reférence produit' ' : PK' Public Function RTRef_CodeBarre(code_barre As String, Optional PK As Byte) As Long On Error GoTo Err 'Ouverture de la BDD' Set p_Db = CurrentDb 'Création de la requête' p_Requete = "SELECT référence,PK FROM CB=> REF + PK WHERE Code Barre = " & code_barre & "" 'Exécute la requête' Set p_MaRequete = p_Db.OpenRecordset(p_Requete) 'Recupère les résultats' RTRef_CodeBarre = p_MaRequete("référence") PK = p_MaRequete("PK") 'Ferme le recordset' p_MaRequete.Close 'Ferme la BDD' p_Db.Close Exit_Err: Exit Function Err: MsgBox "Une erreur suivante s'est produite !" Resume Exit_Err End Function
Puis dans ma procédure évenementielle, j'ai mis ceci:
Code sql : 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 '####Gestion des infos concernant le Code Barre choisi#####' Private Sub Code_Barre_AfterUpdate() On Error GoTo Err 'Attribution de format aux valeurs' Dim code_barre As String Dim référence As Long Dim PK As Byte 'Récupère la référence et le Pk du code Barre correspondant' référence = BDDSuivi.RTRef_CodeBarre(Trim(Me.code_barre.Value), PK) Exit_Err: Exit Sub Err: MsgBox "Une erreur est survenue!" Resume Exit_Err End Sub
Cette solution me met une erreur
J'ai également essayé sans passer par le Module:
Code sql : 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 Private Sub Code_Barre_AfterUpdate() On Error GoTo Err Dim code_barre As String 'Requete' SELECT [CB=> REF + PK].[Code Barre], [CB=> REF + PK].référence, [CB=> REF + PK].PK FROM [CB=> REF + PK] WHERE [CB=> REF + PK].[Code Barre] = "& Code_barre &" 'Récupération des données' Reference_formulaire = [CB=> REF + PK].référence PK_Formulaire= [CB=> REF + PK].PK Exit_Err: Exit Sub Err: MsgBox "Une erreur s'est produite, Désolé" Resume Exit_Err End Sub
Sur cette dernière méthode, il me met qu'il y a une erreur sur la ligne :SELECT [CB=>REF + PK].[Code Barre].......
Il me l'affiche en rouge et il me met : "erreur de compilation. Attendu: Case"
Voila, le point où j'en suis
J'espère que je vous ai bien expliqué mon bloquage avec mes mots de débutant.
Bonne soirée à tous
Et Merci d'avance
Antoine
Partager