VBA SQL Access Erreur de syntaxe
Dernière réponse : dans Programmation
Bonjou,
Je voudrai savoir si vous pouviez me dire d'ou provient l'erreur alors que j'ai recopier exactement ma requete SQL généré par Access et en VBA il me met une erreur (erreur dans la compilation)
Merci d'avance
Je voudrai savoir si vous pouviez me dire d'ou provient l'erreur alors que j'ai recopier exactement ma requete SQL généré par Access et en VBA il me met une erreur (erreur dans la compilation)
SQL = "INSERT INTO CA ( année, france ) SELECT " 2007 " AS Année, Temp.F1 FROM Temp"
Merci d'avance
Autres pages sur : vba sql access erreur syntaxe
Lassé par la pub ? Créez un compte
Avant que ce ne soit du SQL, c'est du VB.
Regarde ce que voit VB, qui lui n'interprête pas le SQL :
Tu ne trouves pas qu'il y a comme un problème ?
Regarde ce que voit VB, qui lui n'interprête pas le SQL :
SQL = "INSERT INTO CA ( année, france ) SELECT " 2007 " AS Année, Temp.F1 FROM Temp"
SQL = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 2007 "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SQL = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 2007 "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Tu ne trouves pas qu'il y a comme un problème ?
j'ai lu l'aide de Access et ils disent rien sur le fait de faire un export Access vers Excel sans rien effacer et pour le mettre a un endroit précis sur la feuille mais de toute maniere mon code SQL ne fonctionne pas du tout alors qu'il fonctionne bien sans Access
voila mon code
voila mon code
Sub Commande0_Click()
'Déclaration des variables
Dim l As Long
Dim Chiffre As String
Dim SQL As String
'Recherche a l'intérieur du fichier chiffre d'affaire de la cellule a importer
Chiffre = "D:\Test\Essai.xls"
l = Ligne()
DoCmd.DeleteObject acTable, "Temp"
DoCmd.TransferSpreadsheet acImport, , "Temp", "D:\Eric\dossier_projets\TDB\Chiffres-Affaires\a-Activité paiement porteurs CA an2007.xls", 0, "K" & l & ":K" & l
DoCmd.OpenQuery "Req_CA"
SQL = "INSERT INTO CA ( année, [Paiement france] ) SELECT [2007] AS Année, Temp.F1FROM Temp;"
MsgBox SQL
End Sub
j'ai trouvé la réponse ""2007"" au lieu de [2007]
et j'ai oublié de taperl a commande
J'ai un porbleme de syntaxe j'aimerais exporter ma table Access cers un tableau Excel est ce bien commet cela??
Il requiet un argument nom de Table
et j'ai oublié de taperl a commande
CurrentDb.Execute SQL
J'ai un porbleme de syntaxe j'aimerais exporter ma table Access cers un tableau Excel est ce bien commet cela??
DoCmd.TransferSpreadsheet acExport, , CA, TDB
Il requiet un argument nom de Table
Quand tu dois donner un argument de type string ou variant correspondant au nom d'une table ou autre il faut des guillemets...
Puis avec TD tout court ca fonctionnera pas.
Regarde l'aide de la fonction
NomFichier Variant facultatif. Expression chaîne qui représente le nom et le chemin du fichier de feuille de calcul dont vous voulez importer les données, dans lequel vous voulez exporter des données ou auquel vous voulez attacher des données.
DoCmd.TransferSpreadsheet acExport, , "CA", "TD"
Puis avec TD tout court ca fonctionnera pas.
Regarde l'aide de la fonction
NomFichier Variant facultatif. Expression chaîne qui représente le nom et le chemin du fichier de feuille de calcul dont vous voulez importer les données, dans lequel vous voulez exporter des données ou auquel vous voulez attacher des données.
As-tu mis l'Option Explicit ?
Interdit de demander ce que c'est avant d'avoir lu la doc.
Interdit de répondre "NON CAR JE M'EN FOUS" (ou n'importe quelle autre raison)
En plus, on te l'a déjà dit. Soit CA est une variable, et elle doit contenir le nom de la table, soit c'est le nom de la table, et elle doit être entre guillemets.
Interdit de demander ce que c'est avant d'avoir lu la doc.
Interdit de répondre "NON CAR JE M'EN FOUS" (ou n'importe quelle autre raison)
En plus, on te l'a déjà dit. Soit CA est une variable, et elle doit contenir le nom de la table, soit c'est le nom de la table, et elle doit être entre guillemets.
Effectivement transferSpreadSheet est une fonction basique d'import export, il ne faut pas s'attendre à mes miracles.
Maintenant on a parlé des méthodes pour ouvrir Excel et travaillé directement dessus depuis Access dans un autre topic avec cette méthode c'est très simple de faire ce que tu recherches.
Maintenant on a parlé des méthodes pour ouvrir Excel et travaillé directement dessus depuis Access dans un autre topic avec cette méthode c'est très simple de faire ce que tu recherches.
Hoegarden31» Je lis TOUS les sujets parce que je suis modérateur. Donc je lirai ton autre sujet. et si je jugerai ma contribution opportune, je n'hésiterais pas.
darksploilt» Ah bon, c'est impossible. Et à quoi sert le sixième paramètre de la fonction TransferSpreadsheet.
VOUS ALLEZ ME LIRE CES P*****S DE MANUELS AVANT DE POSER UNE QUESTION OU DONNER UNE REPONSE![[:zeb] [:zeb]]()
(Ce n'est pas bon pour mon karma de m'énerver comme ça
)
darksploilt» Ah bon, c'est impossible. Et à quoi sert le sixième paramètre de la fonction TransferSpreadsheet.
VOUS ALLEZ ME LIRE CES P*****S DE MANUELS AVANT DE POSER UNE QUESTION OU DONNER UNE REPONSE
![[:zeb] [:zeb]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/51/a1/zeb.gif)
(Ce n'est pas bon pour mon karma de m'énerver comme ça
)
zeb J'ai lu ce manuel!!! le sixieme argument est valable seulement pour une importation (c'est écris noir sur blanc a moins qu'on est pas le même) moi c'est une exportation que je veux faire Acces vers Excel. et le dernier n'est pas spécifié a quoi il sert. Après j'ai lu sur d'autre forum ou tuto que ce n'est pas possible avec cette fonction donc c'est pour cela que je demande une méthode.
La méthode se trouve dans ce sujet...
http://www.presence-pc.com/forum/ppc/Programmation/importer-cellule-excel-access-sujet-4724-1.htm
http://www.presence-pc.com/forum/ppc/Programmation/importer-cellule-excel-access-sujet-4724-1.htm
Citation :
zeb J'ai lu ce manuel!!! le sixieme argument est valable seulement pour une importation (c'est écris noir sur blanc a moins qu'on est pas le même) moi c'est une exportation que je veux faire Acces vers Excel. et le dernier n'est pas spécifié a quoi il sert. Après j'ai lu sur d'autre forum ou tuto que ce n'est pas possible avec cette fonction donc c'est pour cela que je demande une méthode.
Je l'ai lu il y a longtemps, et quand je poste du boulot, je ne l'ai pas à disposition.PIS ON N'A PAS MSACCESS NOUS AU BOULOT. ON A UNE VRAIE BASE DE DONNEES
[<-- mauvaise foi détectée]Bon, un bon point, vous l'avez lu
Dixit MSAccess:
Citation :
Étendue La plage de données à importer ou à laquelle s'attacher. Laissez cet argument à blanc pour importer ou vous attacher à la feuille de calcul tout entière. Vous pouvez saisir le nom d'une plage dans la feuille de calcul ou bien spécifier la plage de cellules à importer ou à laquelle s'attacher, comme par exemple A1:E25 (remarquez que la syntaxe A1..E25 ne fonctionne pas dans Access 97 ou ultérieur). Si vous importez de ou que vous vous attachez à une feuille de calcul d'Excel version 5.0 ou ultérieure, vous pouvez préfixer la plage avec le nom du classeur et un point d'exclamation, comme par exemple Budget!A1:C7. Remarque Quand vous exportez vers une feuille de données, vous devez laisser cet argument à blanc. Si vous saisissez une plage, l'exportation va échouer.
Citation :
Oui pour une importation moi je fais une exportation ce qui est différent c'est mon sujet lol. et j'ai essayé en plus donc voila mais passons j'ai détourné le problèmeJe pense pas que tu es lu la bonne partie sinon tu as compris de travers.
La méthode avec CreateObject permet de manipuler directement un fichier Excel et de le remplir manuellement derrière, dans ce cas import ou export ca n'a aucune valeur puisque tu peux faire tout ce que tu veux (créer des classeurs, les remplirs, en ouvrir...)
if ucase(valeur) = "TOTAL" then ' bien
if valeur = "total" or valeur = "TOTAL" then 'mal
Pour l'automation l'exemple que je donne donne les bases. Une fois que tu as instancié la variable AppExcel tu maitrise Excel comme si tu faisais une macro directement sous excel. Donc sert toi des conseils Excel de ce cher Zeb.
Par exemple :
Il faut referencer Excel dans Access (outils/reference dans VBA)
Dim appExcel as excel.application
Dim wbfile as workbook
Set AppExcel = CreateObject("Excel.Application" )
If Not AppExcel Is Nothing Then
Set wbFile = AppExcel.Workbooks.Open("c:\toto.xls", False, True) 'Ouverture d'un classeur
if not wbfile is nothing then
' Traitement voulu...
wbfile.sheets("A remplir").activate
with wbfile.sheets("A remplir")
.range("A1") = "Titre"
.range("C1") = "Nom"
' etc....
end with
' Fermeture des élements
wbfile.close
AppExcel.Application.Quit
Set appexcel = nothing
end if
end if
C'est qu'un exemple evidemment tu peux faire des boucles, ouvrir un recordset sur ta table afin de tout remplir...
Merci pour ton exemple j'ai déja fait un code utilisant l'automation pour manipuler Excel mais je ne suis pas un pro des macros Excel.
oki c'était pour
Et j'aimerais importer une cellule access (ca c'est bon) mais pour la mettre dans une table déja existante Access
voila mon code:
l est une variable contenant un chiffre
Je voulais savoir s'il y avait pas une méthode une méthode plus propre
oki c'était pour
pardon
tant que valeur différent de "Total" ou "TOTAL"
Et j'aimerais importer une cellule access (ca c'est bon) mais pour la mettre dans une table déja existante Access
voila mon code:
DoCmd.DeleteObject acTable, "Temp"
DoCmd.TransferSpreadsheet acImport, , "Temp", filename, 0, "K" & l & ":K" & l
SQL3 = "INSERT INTO T_stats_global_regroup ( année, montant, type ) SELECT ""2007"" AS Année, Temp.F1, ""CA_2007"" AS type FROM Temp;"
l est une variable contenant un chiffre
Je voulais savoir s'il y avait pas une méthode une méthode plus propre
Si tu as dans ce classeur que cette cellule à récupérer cette méthode marche très bien. Ton SQL est pas très joli
D'ailleur les points virgules en fin de requete sont inutiles sous VBA Access (pour mon plus grand bonheur)
SQL3 = "INSERT INTO T_stats_global_regroup ( année, montant, type ) SELECT '2007' AS Année, F1, 'CA_2007' AS type FROM Temp"
D'ailleur les points virgules en fin de requete sont inutiles sous VBA Access (pour mon plus grand bonheur)
Lassé par la pub ? Créez un compte
- Contenus similaires :