darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013
-
22 mai 2007 à 11:12
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
22 mai 2007 à 23:12
Bonjour j'ai essayé ce code mais il m'affiche un msgbox avec écrit trop peu de paramètre 9 attendu je sais pas si le code est bon mais il s'exécute
Private Sub Commande13_Click()
On Error GoTo Err_Commande13_Click
Set db = CurrentDb
Dim m As String
Dim a As String
Dim name As String
m = Me!mois
a = Me!année
DoCmd.SetWarnings False
'Affectation du lieu de récupération des fichiers
Dim NomDir As String
NomDir = "D:\Test"
'On atteint le répertoire concerné où se trouvent les fichiers
ChDir (NomDir)
Dim XL As Excel.Application
Dim nomClasseur1 As String
Set XL = CreateObject("Excel.Application")
nomClasseur1 = "Essai" & a & m & ".xls"
DoCmd.TransferSpreadsheet acImport, , "TableTest" & a & m, "D:\Test" & nomClasseur1, 0
name = "TableTest" & a & m
Dim dbCourante As DAO.Database
Dim rstRequete As DAO.Recordset
Dim strOPPO As String
'Définir la base de travail comme la base actuelle
Set dbCourante = CurrentDb
'Définir la requête
Sql = "SELECT " & name & ".OPPO, " & name & ".MPE, " & name & ".MPF, " & name & ".MRE, " & name & ".MRF, " & name & ".M__, '2005_T3' AS année FROM " & name & " WHERE getTable.CBQD='total' And " & name & ".MOIS='total' And " & name & ".CMOP='total';"
'Exécuter la requête définie par SQL
Set rstRequete = dbCourante.OpenRecordset(Sql)
'Récupérer la valeur OPPO pour l'enregistrement de la requête pour la placer dans une variable (pour un usage futur)
strOPPO = rstRequete!OPPO
'Se déconnecter de la requête et de la base
Set rstRequete = Nothing
Set dbCourante = Nothing
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 22 mai 2007 à 12:17
Dans ceci, enlève les & name &
Comme tu fais la requête sur une seule table, définir le nom de cette table n'est pas nécessaire et tu verras beaucoup mieux ce que tu écris
Sql = "SELECT OPPO, MPE, MPF, MRE, MRF, M__, '2005_T3' AS année FROM " & name
& " WHERE getTable.CBQD ='total' And MOIS= 'total' And CMOP ='total';"
M__, '2005_T3'
Ça, je ne sais pas ce que c'est (???)
Ici 'total' équivaut au mot "total"
Je pense que tu veux y mettre la valeur d'une variable, doncWHERE getTable.CBQD" <gras>& total & " And MOIS</gras> "& total & " And CMOP= "& total
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 22 mai 2007 à 12:19
Oups... j'ai été un peu trop vite...
Bien sûr, les variables Total doivent en principe être 3 variables distinctes et non pas la même, j'imagine. Est-ce que CBQD, MOIS et CMOP doivent avoir la même valeur ? J'en doute...
darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013 22 mai 2007 à 13:28
Bah en fait c ma table qui est variable, Total est une valeur
Pour indiquer la ligne je ne peux pas parceque il me l'indique pas il me met juste que j'ai pas assez de parametre. J'ai fais un copier coller du code SQL généré par Acces pour les champs par contre je viens de voir qu'il ya eu un bug lors de mon copier coller du code c'est le deuxieme SQL k'il faut prendre en compte le prmeier est a retirer sinon voila le code taper
Private Sub Commande13_Click()
On Error GoTo Err_Commande13_Click
Set db = CurrentDb
Dim m As String
Dim a As String
Dim name As String
m = Me!mois
a = Me!année
DoCmd.SetWarnings False
'Affectation du lieu de récupération des fichiers
Dim NomDir As String
NomDir = "D:\Test"
'On atteint le répertoire concerné où se trouvent les fichiers
ChDir (NomDir)
Dim XL As Excel.Application
Dim nomClasseur1 As String
Set XL = CreateObject("Excel.Application")
nomClasseur1 = "Essai& a & m & ".xls"
DoCmd.TransferSpreadsheet acImport, , "TableTest" & a & m, "D:\Test" & nomClasseur1, 0
name = "TableTest" & a & m
Dim dbCourante As DAO.Database
'Définir la base de travail comme la base actuelle
Set dbCourante = CurrentDb
'Définir la requête
Sql = " INSERT INTO TableTest ( année, OPPO, MPE, MPF, MRE, MRF, M__ ) SELECT '2005_T3', " & name & ".OPPO, " & name & ".MPE, " & name & ".MPF, " & name & ".MRE, " & name & ".MRF, " & name & ".M__ FROM " & name & " WHERE " & name & ".CBQD='total' And " & name & ".MOIS='total' And " & name & ".CMOP='total';"
'Exécuter la requête
dbCourante.Execute (Sql)
Set dbCourante = Nothing
Exit_Commande13_Click:
Exit Sub
Err_Commande13_Click:
MsgBox Err.Description
Resume Exit_Commande13_Click
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013 22 mai 2007 à 14:14
bah j'en sais rien en fait j'ai pris une table fixe sous access j'ai fait les commande que je voulais j'ai essayé de rentrer dans une ligne et j'aime meme oublier d'ajouter une collone année ou je la renseigne moi meme dans mon code je viens de m'en rendre compte. Mais les champs a insérer sont déja dans une table donc logikement j'ai rien a renseigné
darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013 22 mai 2007 à 14:21
PFPF2005_T3 est une table présente dans Access
ma premiere idée est de faire
nom de la requete Req2005_T3
SELECT PJPF2005_T3.OPPO, PJPF2005_T3.MPE, PJPF2005_T3.MPF, PJPF2005_T3.MRE, PJPF2005_T3.MRF, PJPF2005_T3.M__, "2005_T3" AS année
FROM PJPF2005_T3
WHERE (((PJPF2005_T3.CBQD)="total") AND ((PJPF2005_T3.MOIS)="total") AND ((PJPF2005_T3.CMOP)="total"));
et ensuite
INSERT INTO Test ( année, OPPO, MPE, MPF, MRE, MRF, M__ )
SELECT Req2005_T3.année, Req2005_T3.OPPO, Req2005_T3.MPE, Req2005_T3.MPF, Req2005_T3.MRE, Req2005_T3.MRF, Req2005_T3.M__
FROM Req2005_T3;
total étant une valeur
Req2005_T3 une requete selection
darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013 22 mai 2007 à 14:22
ma logique est de faire ca: mais en VBA afin d'intégrer une table variable
PFPF2005_T3 est une table présente dans Access
ma premiere idée est de faire
nom de la requete Req2005_T3
SELECT PJPF2005_T3.OPPO, PJPF2005_T3.MPE, PJPF2005_T3.MPF, PJPF2005_T3.MRE, PJPF2005_T3.MRF, PJPF2005_T3.M__, "2005_T3" AS année
FROM PJPF2005_T3
WHERE (((PJPF2005_T3.CBQD)="total") AND ((PJPF2005_T3.MOIS)="total") AND ((PJPF2005_T3.CMOP)="total"));
et ensuite
INSERT INTO Test ( année, OPPO, MPE, MPF, MRE, MRF, M__ )
SELECT Req2005_T3.année, Req2005_T3.OPPO, Req2005_T3.MPE, Req2005_T3.MPF, Req2005_T3.MRE, Req2005_T3.MRF, Req2005_T3.M__
FROM Req2005_T3;
total étant une valeur
Req2005_T3 une requete selection
<!-- / message -->,
----
<!-- BEGIN TEMPLATE: postbit_onlinestatus -->
<!-- END TEMPLATE: postbit_onlinestatus -->,
<!-- controls -->
<!-- netah bouton envoyer MP -->
darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013 22 mai 2007 à 14:22
ma logique est de faire ca: mais en VBA afin d'intégrer une table variable
PFPF2005_T3 est une table présente dans Access
ma premiere idée est de faire
nom de la requete Req2005_T3
SELECT PJPF2005_T3.OPPO, PJPF2005_T3.MPE, PJPF2005_T3.MPF, PJPF2005_T3.MRE, PJPF2005_T3.MRF, PJPF2005_T3.M__, "2005_T3" AS année
FROM PJPF2005_T3
WHERE (((PJPF2005_T3.CBQD)="total") AND ((PJPF2005_T3.MOIS)="total") AND ((PJPF2005_T3.CMOP)="total"));
et ensuite
INSERT INTO Test ( année, OPPO, MPE, MPF, MRE, MRF, M__ )
SELECT Req2005_T3.année, Req2005_T3.OPPO, Req2005_T3.MPE, Req2005_T3.MPF, Req2005_T3.MRE, Req2005_T3.MRF, Req2005_T3.M__
FROM Req2005_T3;
total étant une valeur
Req2005_T3 une requete selection
<!-- / message -->,
----
<!-- BEGIN TEMPLATE: postbit_onlinestatus -->
<!-- END TEMPLATE: postbit_onlinestatus -->,
<!-- controls -->
<!-- netah bouton envoyer MP -->
darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013 22 mai 2007 à 14:39
oui mais c'est pas des champs que je veux ajouter a la main cela provient d'une table de plus c Access qui me l'a généré pour tout ce qui est champs etc... pour une table fixe elle marche très bien mais je veux une table qui soit ue variable c'est la mon probleme et en VBA car j'ai des macro et d'autre chose ki se font avant et c'est la mon souci en fait
darkspoilt
Messages postés254Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention10 octobre 2013 22 mai 2007 à 14:49
c'est
dbCourante.Execute (Sql) qui ne marche pas et j'ai trouvé pkoi car il me manque ma colonne année que je veux remplir moi meme ma syntaxe et ca je vois pas comment faire
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 22 mai 2007 à 23:12
Tu dis total est une valeur...
C'est donc une variable ? de type texte, numérique, ... ?
Ou bien c'est la valeur telle quelle ? Est-ce que CBQD="total" ?
WHERE (((PJPF2005_T3.CBQD)="total") AND ((PJPF2005_T3.MOIS)="total") AND ((PJPF2005_T3.CMOP)="total"))
Sans être absolument certain, je changerais la manière dont tu mets "total"
quelque chose comme
".......WHERE (((PJPF2005_T3.CBQD)=" & total & ") AND ((PJPF2005_T3.MOIS)=" & total & ") AND ((PJPF2005_T3.CMOP)=" & total))
embêtant les apostrophes et les parenthèses en dehors de l'IDE ...
Si c'est vraiment le mot Total, il faut y mettre des apostrophes et non des guillemets.
Si Total est une variable texte, il faut aussi y mettre des apostrophes, mais séparer le mot total avec des &
Si c'est une valeur numérique, aucun guillemet et aucune apostrophe, mais séparer avec des &