Bonjour à tous,
J'essaie de faire un petit quelque chose sous access mais ça ne marche pas.
J'ai 2 tables, [phone directory] et [updated phone directory], qui contiennent une ID (la PK), le nom de la personne (NAME), le département du bonhomme (DEPT), le code du pays (CODE), la racine du téléphone (ROOT) et l'extension du bonhomme (Extension).
La 1ere table est le répertoire actuel, et la 2nd est le répertoire mis à jour mensuellement.
J'ai fait quelques requêtes qui permettent de savoir qui a disparu, qui est nouveau, et qui a changé d'extension ou de département.
Toutes ces requêtes aterrissent dans un formulaire par le biais de listbox.
Pour l'instant j'essaie de me pencher sur le cas de qqn qui change d'extension. J'ai donc ma listbox qui contient les gens qui ont une nouvelle extension (genre 8844 au lieu de 9534), elle s'appelle : PhoneExtensiondiscrepancy.
Ce que je veux faire, c'est en sélectionnant qqn dans cette liste, appuyer sur un bouton dessous, qui mettrait à jour le répertoire actuel en fonction de la valeur du répertoire mis à jour, pour la personne sélectionnée.
Les valeurs de la listbox sont (par ordre de colonne) : ID, Name, Dept, Root, Extension.
voila le code que j'ai associé au bouton :
Lors de l'exécution, il me demande le nom de la personne (car je ne sais pas exactement comment le récupérer), je tape ce nom pour tester (vu que je l'ai sous les yeux), et je me retrouve avec la runtime error
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 Private Sub Command6_Click() Dim ctlList As Control, varItem As Variant, listvalue As Long, SQL As String Dim str As String ' Return Control object variable pointing to list box. Set ctlList = Me.PhoneExtensiondiscrepancy ' Enumerate through selected items. For Each varItem In ctlList.ItemsSelected ' stock value of bound column in listvalue. 'listvalue = ctlList.ItemData(varItem) str = str & Me.PhoneExtensiondiscrepancy.ItemData(varElt) Next varItem MsgBox str SQL = "UPDATE [Phone Directory] " & _ "SET [Phone Directory].extension = (SELECT [updated phone directory].extension FROM [updated phone directory] where [updated phone directory].ID =" & str & ")" & _ "WHERE [Phone Directory].Name = [updated Phone Directory].Name" DoCmd.RunSQL SQL End Sub
Vu que l'aide d'access sur cette erreur est super efficace, je ne sais pas exactement ce que je dois faire :s3073 : Operation must be an updateable query.
Il y a peut être un moyen plus efficace et plus rapide de faire ce que je veux faire, mais je n'y connais rien en VBA :s et je dois faire une base qui sera maintenue par des gens qui y connaissent encore moins que moi
Merci d'avance !
Partager