[ACCESS]Problème requête avec variables
Cameleon33
-
Cameleon33 -
Cameleon33 -
Bonjour,
J'ai crée une requête que j'ai inséré dans un événement dans un formulaire. En gros j'ai 1 liste et une zone de texte dans lesquelles on choisit/met des valeurs et ensuite on appuie sur un tit bouton et il exécute le code suivant :
Le problème est qu'il me retourne le message suivant :
"Une action ExécuterSQL nécessite un argument consistant en une instruction SQL... et là je comprends plus...
Merci
Cam'
J'ai crée une requête que j'ai inséré dans un événement dans un formulaire. En gros j'ai 1 liste et une zone de texte dans lesquelles on choisit/met des valeurs et ensuite on appuie sur un tit bouton et il exécute le code suivant :
Dim stDocName As String
Dim test As Integer
Dim test2 As Integer
test = CStr(Combo2.Value)
MsgBox test
test2 = CStr(Text6.Value)
stDocName = "SELECT DISTINCT NOMENCLATURE.Quantite*" & test2 & " AS QuantiteTotale, PRODUIT.NomProd, NOMENCLATURE.Quantite*" & test2 & "*PRODUIT.CoutProd AS CoutTotal, PRODUIT.StockProd-NOMENCLATURE.Quantite*" & test2 & " AS StockFinal, PRODUIT.SSProd, IIf(PRODUIT.StockProd-NOMENCLATURE.Quantite*" & test2 & " <PRODUIT.SSProd,1,0) AS Commande, IIf(PRODUIT.SSProd-PRODUIT.StockProd+NOMENCLATURE.Quantite*" & test2 & ">0,PRODUIT.SSProd-PRODUIT.StockProd+NOMENCLATURE.Quantite*" & test2 & ",0) AS QuantiteACommander, PRODUIT.LotEconomique " & _
"FROM PRODUIT, NOMENCLATURE " & _
"WHERE ((PRODUIT.IdProd=NOMENCLATURE.IdEnfant) AND ((NOMENCLATURE.IdEnfant) In (SELECT DISTINCT NOMENCLATURE.IdEnfant FROM NOMENCLATURE, PRODUIT WHERE PRODUIT.IdProd = " & test & " AND PRODUIT.IdProd = NOMENCLATURE.IdParent;)));"
DoCmd.RunSQL (stDocName)
Le problème est qu'il me retourne le message suivant :
"Une action ExécuterSQL nécessite un argument consistant en une instruction SQL... et là je comprends plus...
Merci
Cam'
A voir également:
- [ACCESS]Problème requête avec variables
- Access appdata - Guide
- Acer quick access - Forum logiciel systeme
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
- Requête sql pix - Forum Python
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
5 réponses
C'est que la syntaxe de ton SQL n'est pas bonne. Le " après Quantité* ferme le premier " et donc Access ne peut pas évaluer la suite.
Pardon, je tilte tard, c'est surtout que tu ne peux pas "lancer" un SELECT avec RunSQL (Qui EXECUTE les requêtes actions.
C'est possible que tu enregistres le SELECT comme une requête? Tu pourrais le lancer avec un DoCmd.OpenQuery, qui lui, fonctionne parfaitement.
C'est possible que tu enregistres le SELECT comme une requête? Tu pourrais le lancer avec un DoCmd.OpenQuery, qui lui, fonctionne parfaitement.
Le problème est que j'ai déjà essayé de cette manière... j'ai crée une requête, j'y ai collé le code ci-desus et j'ai lié le formulaire avec OpenQuery.. mais ca ne marche pas... je pense qu'il n'aime pas la syntaxe avec les variables... y a un moyen de lui faire passer la pillule?
Merci
Cam'
Merci
Cam'
bonjour,
Tu peux créer une requête avec la méthode CreateQueryDef.
J'explique, d'abord tu crée une requête manuellement, peut importe ce que tu mets dedans, l'important c'est qu'elle existe, on l'appellera Requête1
Voici le code pour créer une requête:
Salut.
Tu peux créer une requête avec la méthode CreateQueryDef.
J'explique, d'abord tu crée une requête manuellement, peut importe ce que tu mets dedans, l'important c'est qu'elle existe, on l'appellera Requête1
Voici le code pour créer une requête:
Dim dbs As Database, qdf As QueryDef, stDocName As String
Set dbs = CurrentDb
stDocName = "SELECT DISTINCT NOMENCLATURE.Quantite*" & test2 & " AS QuantiteTotale, PRODUIT.NomProd, NOMENCLATURE.Quantite*" & test2 & "*PRODUIT.CoutProd AS CoutTotal, PRODUIT.StockProd-NOMENCLATURE.Quantite*" & test2 & " AS StockFinal, PRODUIT.SSProd, IIf(PRODUIT.StockProd-NOMENCLATURE.Quantite*" & test2 & " <PRODUIT.SSProd,1,0) AS Commande, IIf(PRODUIT.SSProd-PRODUIT.StockProd+NOMENCLATURE.Quantite*" & test2 & ">0,PRODUIT.SSProd-PRODUIT.StockProd+NOMENCLATURE.Quantite*" & test2 & ",0) AS QuantiteACommander, PRODUIT.LotEconomique " & _
"FROM PRODUIT, NOMENCLATURE " & _
"WHERE ((PRODUIT.IdProd=NOMENCLATURE.IdEnfant) AND ((NOMENCLATURE.IdEnfant) In (SELECT DISTINCT NOMENCLATURE.IdEnfant FROM NOMENCLATURE, PRODUIT WHERE PRODUIT.IdProd = " & test & " AND PRODUIT.IdProd = NOMENCLATURE.IdParent;)));"
dbs.QueryDefs.Delete ("Requête1") ' effacer requête existante
Set qdf = dbs.CreateQueryDef("Requête1", stDocName) ' recréer requête avec variables
DoCmd.OpenQuery "Requête1"
Salut.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je vois pas ce qu'il faut que je mette...
merci de l'aide
Cam'