Access pb de requete

darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013 - 23 mai 2007 à 10:08
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 24 mai 2007 à 15:41
Bonjour,
J'ai un ptit souci ma requete SQL J'ai une erreur de syntaxe dans ma classe FROM et je ne vois pas pourquoi. Si quelqu'un peut m'aider je le remercie d'avance


<ol>
<li>Private Sub Commande13_Click()
</li>
<li>    On Error GoTo Err_Commande13_Click
</li>
<li>
</li>
<li>    Dim m As String
</li>
<li>    Dim a As String
</li>
<li>    Dim nomTable As String
</li>
<li>    Dim nomClasseur As String
</li>
<li>    Dim SQL As String
</li>
<li>    Dim d As String
</li>
<li>     
</li>
<li>    m = Me!mois
</li>
<li>    a = Me!année
</li>
<li>    d = a & m
</li>
<li>   
</li>
<li>    DoCmd.SetWarnings False
</li>
<li>
</li>
<li nd="32">    nomClasseur = "D:\Eric\dossier_projets\TDB\PJPF\PJPF2007-" & a & m & ".xls"
</li>
<li>    nomTable = "TableTest" & a & m
</li>
<li>
</li>
<li nd="33">    DoCmd.TransferSpreadsheet acImport, , nomTable, nomClasseur, 0
</li>
<li>
</li>
<li>    'Définir la requête
</li>
<li>
</li>
<li nd="34">SQL = "INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, année) " & _
</li>
<li nd="35">    "SELECT OPPO, MPE, MPF, MRE, MRF, M__, " & d & " AS année " & _
</li>
<li>    "FROM" & name & _
</li>
<li nd="36">    "WHERE CBQD=""total"" AND MOIS=""total"" AND CMOP=""total"";"
</li>
<li>
</li>
<li>    'Exécuter la requête
</li>
<li>    CurrentDb.Execute SQL
</li>
<li>   
</li>
<li>Exit_Commande13_Click:
</li>
<li>    Exit Sub
</li>
<li>Err_Commande13_Click:
</li>
<li>    MsgBox Err.Description
</li>
<li>    Resume Exit_Commande13_Click
</li>
<li>End Sub</li>
</ol>

27 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 mai 2007 à 10:20
Salut,

Essaye cela :

<ol><li nd="34">Sql = "INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, année) " & _
    "SELECT OPPO, MPE, MPF, MRE, MRF, M__, " & d & " AS année " & _
    "FROM " & Name & "" & _
    "WHERE CBQD=""total"" AND MOIS=""total"" AND CMOP=""total"";"</li></ol>

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 mai 2007 à 10:40
Salut,
Peu être qu'en passant par un recordset, tu ne peux pas faire ceci.
Il te faut peu être faire une SELECT ET SEULEMENT APReS un INSERT INTO .... VALUES ....

@+: Ju£i?n
Pensez: Réponse acceptée
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
23 mai 2007 à 12:45
Comme indiqué par Darksidious, il faut penser à mettre un espace après le mot FROM sinon VB va concaténer FROM et le nom de la table.

Christophe
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
23 mai 2007 à 13:45
Merci ce code s'écécute mais plusieur fois je retrouve les meme données et je ne sais pas pourquoi voila le code complet et je ne sais pas s'ou ca vient
merci d'avance


Private Sub Commande13_Click()
    On Error GoTo Err_Commande13_Click
  
    Dim m As String
    Dim a As String
    Dim nomTable As String
    Dim nomClasseur As String
    Dim SQL As String
    Dim d As String
      
    m = Me!mois
    a = Me!année
    d = a & m
   
    DoCmd.SetWarnings False


    nomClasseur = "D:\Eric\dossier_projets\TDB\PJPF\PJPF2007-" & a & m & ".xls"
    nomTable = "TableTest" & a & m
  
    DoCmd.TransferSpreadsheet acImport, , nomTable, nomClasseur, -1


    'd = "2006_T3"
    'nomTable = "PJPF2006_T3"
   
    'Définir la requête
SQL = "INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, [année]) " & _
    "SELECT OPPO, MPE, MPF, MRE, MRF, M__, """ & d & """ AS [année] " & _
    "FROM " & nomTable & _
    " WHERE CBQD='total' AND MOIS='total' AND CMOP='total';"


    'Exécuter la requête
    CurrentDb.Execute SQL




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
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
23 mai 2007 à 14:00
Tu fais un INSERT INTO aussi je me demande si tu n'as pas lancé ton code plusieurs fois; tout bêtement.

Si pas, est-ce que les données en double se trouvent déjà dans ta table de base ?   Si oui, soit il faut cleaner cette table-là soit faire une requête type SELECT DISTINCT

Christophe
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
23 mai 2007 à 14:33
J'ai trouvé le probleme cela se passe lros de mon import soit il faudrait que je vérifie l'existance de ma table soit j'écrase mon ancienne table mais je ne connais pas les méthode pour faire cela
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
23 mai 2007 à 14:43
Supprimer ton ancienne table : une façon parmis d'autre; en SQL,  "DROP TABLE [" & nomTable & "]"

Christophe
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 15:43
Salut,
étant donné que les champs des deux tables o,t le même alias, il doit savoir
de quels champ il s' agit :
Dans la partie SELECT ou tu énumère les champs à ajouter tu  prcèder
le nom du champ par le nom de la table (  & nomTable &  "'![LeChp])
Tu t' es compliqué la tache en mettant le nom de la table dans une variable.

<hr />® l l i n g , l' agité du bocal : 
   Etre une heure, une heure seulement..Rien qu' une heure,
   Vert, vert, vert et beau à la foooooooooooooooooooooooois. 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 15:48
Sql = "INSERT INTO Test ( OPPO, MPE, MPF, MRE, MRF, M__, année) " & _
    "SELECT ['" & Name & "']![OPPO, MPE], ['" & Name & "']![MPE]...etc
    "FROM " & Name & "" & _

<hr /> 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 15:50
Pardon
'" & Name & "']![OPPO],
Copier/Coller raté !

<hr />. 
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
23 mai 2007 à 15:57
est ce que c'est possible de voir s'il est existe au préalable?? quel est la méthode??
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 16:05
et avant de faire une nouvelle insertion tu fais
"DELETE * FROM " & nomTable & _
    " WHERE CBQD='total' AND MOIS='total' AND CMOP='total';"

<hr />. 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 16:14
NON NON ! c' est

"DELETE * FROM test" & _
    " WHERE CBQD='total' AND MOIS='total' AND CMOP='total';"
je vais me coucher

<hr />. 
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
23 mai 2007 à 16:17
oui mais si la table est éffectuer la premiere fois test ne comtien rien encore pour le moment ca va surment planter non??
0
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
23 mai 2007 à 16:22
Salut,
non il n'y aura pas d'erreur si la table est vide. C'est juste qu'il ne trouvera rien et donc il n'effacera rien. C'est comme si tu fesais un Select et qu'il ne te retourne rien, il n'y a pas d'erreur pour autant.

 pseudoOM
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 16:22
Pas du tout !
s' il ne trouve rien , c' est donc rie à supprimer...
il ne va rien faire et tu ne t' en aperceveras même pas.

<hr /> 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 16:24
Salut pseudo
post croisé !
le "pas du tout" est adressé à dark.
.

<hr />. 
0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
23 mai 2007 à 16:36
Sinon je peux pas juste vérifier l'existence de la table et éviter l'import si elle existe c'est pas plu simple??
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 16:42
alors au préalable tu fais :
"SELECT * FROM test" & _
    " WHERE CBQD='total' AND MOIS='total' AND CMOP='total';"

S' il te renvoie queques chose, c' es donc que ls enregistrements en question existent déjà,Sion tu procèdes à l' insertion

0
darkspoilt Messages postés 254 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 10 octobre 2013
23 mai 2007 à 16:56
En VBA c'est possible?? car la je devrais avoir recour a un recordset or j'aimerais évité.
0
Rejoignez-nous