2015-11-22 1 views
0

J'ai la logique suivante qui doit traduire en code VBA: 1. L'utilisateur sélectionne un ou plusieurs nom (s) de requête dans une zone de liste modifiable: 2. Clics de l'utilisateur sur "Afficher la table" bouton 3. Tableau sélectionné (s) est/sont ouvertsOuvrez la table en cliquant sur le nom de la requête

jusqu'à présent, j'ai le code suivant:

Private Sub cmdShowTable_Click() 
Dim valSelect1 As Variant 
Dim strValue1 As String 
Dim strValue2 As String 
For Each valSelect1 In Me.Combo29.ItemsSelected 
    DoCmd.SetWarnings (WarningsOff) 
    strValue1 = Me.Combo29.ItemData(valSelect1) 
    strValue2 = "select TableName from [List of Queries] where QueryName = " ' & strValue1 & '" " 
    DoCmd.OpenTable (strValue2) 
    Me.Combo29.Selected(valSelect1) = False 
    Next 
    DoCmd.SetWarnings (WarningsOn) 
    MsgBox "Complete!" 
end sub 

Je comprends cette erreur est à la ligne strValue2. La syntaxe et la logique ne sont probablement pas correctes car la chaîne sql est passée à l'objet mais n'est pas exécutée. Il doit être exécuté, puis sa valeur doit être transmise à la commande Docmd.Open.

Aidez-nous à les lier ensemble!

Répondre

1

Il semble que vous ne pouvez pas décider de l'ouverture des requêtes ou des tables ...

Cependant, si chaque requête est titulaire d'un nom de la table pour ouvrir, se présenter comme suit:

strValue1 = Me.Combo29.ItemData(valSelect1) 
strValue2 = DLookup("TableName", "[List of Queries]", "QueryName = '" & strValue1 & "'") 
DoCmd.OpenTable (strValue2) 

Si chaque requête contient plusieurs noms de tables, vous devrez ouvrir un jeu d'enregistrements en utilisant la requête comme source, puis faire une boucle sur les noms des tables retournées et les ouvrir.

+0

cela a fonctionné. Chaque nom de requête correspond à un nom de table. Merci pour la solution! – IGR

+0

@ Gustav - J'essaie de supprimer les données d'abord dans la table qui correspond à la requête qui va le mettre à jour en premier. Lorsque j'ai construit la base de données, j'ai utilisé par erreur Select Into au lieu de Insert In Select. Comment faire pour que les lignes suivantes fonctionnent - strValue = Me.Combo29.ItemData (valSelect) strValue3 = DLookup ("TableName", "[Liste de requêtes]", "QueryName = '" & strValue & "'") docmd .RunSQL (supprimer de '"& strValue3 &" ") DoCmd.OpenQuery (strValue). Je reçois une erreur lors de la commande docmd.Runsql – IGR

+0

Vous devez utiliser une chaîne SQL:' DoCmd.RunSQL ("Delete From'" & strValue3 & "") '. – Gustav