Bonjour à tous,
J'ai un formulaire qui correspond à une fiche de suivi d'atelier.
L'utilisateur choisit un item dans une liste, qui doit parl a suite actualiser plusieurs champs de ce même formulaire.
Je souhaiterai que l'utilisateur puisse modifier les valeurs des zones de texte en cas de chamgement de dernière minute, donc je dois oublier les sources controles je pense sinon il pourra mettre le bordel dans ma base de données !
J'ai donc essayé de juste remplir les zones de texte avec des requêtes SQL.
J'ai trouvé ce code sur internet :
Je l'ai donc mis en fonction puisque je dois l'appeler pour plusieurs champs et voilà ce que cela donne pour le moment :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 'variable : Dim requete As Recordset Dim sql As String Dim resultat As Currency 'code d'exécution de la requête : sql = " SELECT champ1, champ2, ... FROM table WHERE ... ;" Set requete = CurrentDb.OpenRecordset(sql) 'première ligne de résultat : requete.MoveFirst resultat = requete("champ1")
J'appelle cette fonction del a manière suivante :
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 Function valeurQuantite(champ As String, table As String) As Integer 'variable : Dim requete As Recordset Dim sql As String Dim resultat As Currency If table = "composant" Then 'code d'exécution de la requête : sql = "SELECT Recette_Composant.quantite FROM (Recette INNER JOIN (Client INNER JOIN Recette_Client ON Client.id_client = Recette_Client.id_client) ON Recette.id_recette = Recette_Client.id_recette) INNER JOIN (Composant INNER JOIN Recette_Composant ON Composant.id_composant = Recette_Composant.id_composant) ON Recette.id_recette = Recette_Composant.id_recette WHERE Composant.libelle='" & champ & "' AND Client.short_item = " & Me.ListeShortItem.Column(1) & ";" Set requete = CurrentDb.OpenRecordset(sql) 'première ligne de résultat : requete.MoveFirst resultat = requete("quantite") End If If table = "recette" Then 'code d'exécution de la requête : sql = "SELECT Recette." & champ & " FROM Recette INNER JOIN (Client INNER JOIN Recette_Client ON Client.id_client = Recette_Client.id_client) ON Recette.id_recette = Recette_Client.id_recette WHERE Client.short_item = " & Me.ListeShortItem.Column(1) & ";" Set requete = CurrentDb.OpenRecordset(sql) 'première ligne de résultat : requete.MoveFirst resultat = requete(champ) End If valeurQuantite = resultat End Function
Le problème que je rencotnre est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Me.P05 = valeurQuantite("sucre", "composant") Me.P21 = valeurQuantite("beurre_raffinage", "recette")
Ce code affiche bien la bonne valeur dans le premier champ texte mais lorsqu'il passe au deuxième j'ai une erreur sur leet je ne sais pas pourquoi ni comment la résoudre
Code : Sélectionner tout - Visualiser dans une fenêtre à part requete.MoveFirst
Merci d'avance pour votre aide et si vous avez besoin dep lus d'informations n'hésitez pas![]()
Partager