Probleme d'exécution

darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013 - 22 mai 2007 à 11:12
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 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


Dim Var As String




'Sql = "INSERT INTO TableTest ( année, OPPO, MPE, MPF, MRE, MRF, M__ ) SELECT  " & strOPPO & ".année, " & strOPPO & ".OPPO, " & strOPPO & ".MPE," & strOPPO & ".MPF," & strOPPO & ".MRE," & strOPPO & ".MRF," & strOPPO & ".M__ FROM " & strOPPO & ";"
'DoCmd.RunSQL Sql




   
Exit_Commande13_Click:
    Exit Sub


Err_Commande13_Click:
    MsgBox Err.Description
    Resume Exit_Commande13_Click
End Sub

13 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mai 2007 à 11:44
Salut,
C'est bien d'avoir donné le code, mais sur quelle ligne obtiens tu cette erreur?????

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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

MPi
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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...

MPi
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mai 2007 à 13:49
Tu veux dire que c'est la syntaxe du INSERT qui foire??????
Peu être que tu ne renseigne pas tout les champs à inserer.

Je ne vois pas du tout comment on peut avancer.

@+: Ju£i?n
Pensez: Réponse acceptée
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 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é
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 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

<!-- / message -->,

----

<!-- BEGIN TEMPLATE: postbit_onlinestatus -->

<!-- END TEMPLATE: postbit_onlinestatus --> ,
<!-- controls -->
<!-- netah bouton envoyer MP -->
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 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 -->
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 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 -->
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mai 2007 à 14:32
Salut
Syntaxe d'une requete d'ajout.....

INSERT INTO NomTable (champ1, champ2, etc...) VALUES (ValChamps1, ValChamp2, etc)

@+: Ju£i?n
Pensez: Réponse acceptée
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 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
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 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
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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 &

MPi
0
Rejoignez-nous