OVH Cloud OVH Cloud

Nom de fichier avec espaces dans un RunCmd.RunSQL

20 réponses
Avatar
Maurice KRAIT
Bonjour,

J'utilise ACCESS 97.
Je veux effacer tous les enregistrements d'une table nommée :
Table FGF Résultat Synchro
Ce nom comporte des caractères espaces, aussi j'entoure le nom de la
table par des apostrophes. Il me semble que c'est la syntaxe pour les
requêtes SQL, ce qui donne ceci :

DoCmd.RunSQL "Delete * FROM 'Table FGF Résultat Synchro';"

Je reçois le message d'erreur suivant : "Erreur de syntaxe dans la
requête. La clause de la requête est incomplète"

Si je change le nom de la table en supprimant les espaces inclus dans le

nom et les apostrophes entourant le nom de la table, ça fonctionne !
DoCmd.RunSQL "Delete * FROM TableFGFRésultatSynchro;"

Malheureusement, le concepteur de la base a défini le nom de la table
avec des espaces inclus et je ne peux modifier les noms.
Quelqu'un aurait-il une solution ?
Si oui, merci d'avance

Maurice

10 réponses

1 2
Avatar
Maurice KRAIT

Salut,

"Anor"
Celle-ci fonctionne (testée) :

DoCmd.RunSQL "Delete * From [" & NomTab & "] ;"


Et celles-ci également...

DoCmd.RunSQL "Delete * From " & strNomTable


Cette solution est refusée par suite d'erreur de syntaxe, ce qui me
paraît normal, le point(virgule final n'étant pas généré.



DoCmd.RunSQL "Delete * From " & strNomTable & ";"


Cette solution marche que pour les noms de fichiers ne comportant pas
d'espace

La solution d'Anor (voit ci-dessus dans le même fil) est la plus
générale.

Merci quand même.



(les simples cotes étaient superflues...)

;-))

--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------



Avatar
Anor
Bonjour Maurice

Maurice KRAIT :

| La solution d'Anor (voit ci-dessus dans le même fil) est la plus
| générale.

tu peux le dire une deuxième fois ?
ça devrait faire plaisir à Raymond quand on regarde sa première proposition ;-)))

--
à+
Arnaud
--------------------------------------------------
*Avant toute chose* : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------
Avatar
Raymond [mvp]
Bonjour Arnaud.

Galilée non plus n'a pas été cru tout de suite ! ! ! ! aïe mes chevilles !

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Anor" <http://memoaccess.free.fr/anor/email.htm> a écrit dans le message de
news:
Bonjour Maurice

Maurice KRAIT :

| La solution d'Anor (voit ci-dessus dans le même fil) est la plus
| générale.

tu peux le dire une deuxième fois ?
ça devrait faire plaisir à Raymond quand on regarde sa première
proposition ;-)))


--
à+
Arnaud


Avatar
3stone
Salut,

"Maurice KRAIT"
DoCmd.RunSQL "Delete * From " & strNomTable


Cette solution est refusée par suite d'erreur de syntaxe, ce qui me
paraît normal, le point(virgule final n'étant pas généré.



Pas besoin de point virgule...




DoCmd.RunSQL "Delete * From " & strNomTable & ";"


Cette solution marche que pour les noms de fichiers ne comportant pas
d'espace



Et QUI utilise déjà des noms de tables avec des espaces ???



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------


Avatar
Maurice KRAIT

Salut,

"Maurice KRAIT"
DoCmd.RunSQL "Delete * From " & strNomTable


Cette solution est refusée par suite d'erreur de syntaxe, ce qui me
paraît normal, le point(virgule final n'étant pas généré.


Pas besoin de point virgule...


DoCmd.RunSQL "Delete * From " & strNomTable & ";"


Cette solution marche que pour les noms de fichiers ne comportant pas
d'espace


Et QUI utilise déjà des noms de tables avec des espaces ???


Je ne comprends pas bien le sens de cette remarque. Est-ce interdit ?
En fait, je travaille sur une base de données que je n'ai pas créée;
personellement, j'évite les noms avec des espaces, justementpour éviter ces
problèmes, mais là, je n'aipas eu le choix; le concepteur de la base a créé
de tels noms et il n'est plus questions de les modifier, il y aurait tropà
changer et surtout à retester.

Maurice

--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------




Avatar
3stone
Bonsoir Maurice ;-)

"Maurice KRAIT"
Et QUI utilise déjà des noms de tables avec des espaces ???


Je ne comprends pas bien le sens de cette remarque. Est-ce interdit ?


Si on ne cherche *pas* par tous les moyens à se compliquer la vie :
- sourtout pas d'espace dans le nom de table (certaine système ne l'accepte d'ailleurs pas)
- pas d'espace dans le nom des champs
- pas de caractères "non communs" dans les noms de champs
(en fait l'alphabet non accentué suffit amplement)

tblClients ou T_Clients est très parlant et simplifie la suite,
tout comme: NumeroClient, CodeClient, AdresseClient pour les champs


En fait, je travaille sur une base de données que je n'ai pas créée;
personellement, j'évite les noms avec des espaces, justementpour éviter ces
problèmes, mais là, je n'aipas eu le choix; le concepteur de la base a créé
de tels noms et il n'est plus questions de les modifier, il y aurait tropà
changer et surtout à retester.


Bien sûr... dans ce cas, on hérite des inconvénients... ;-(

Mais, il y à une façon de limiter au maximum ces désagréments !

En utilisant des alias...
Select [Mes clients].LeNom, [Mes clients].Prenom From [Mes clients]

devient dans ce cas
Select c.LeNom, c.Prenom From [Mes clients] AS c

et même
Select LeNom, Prenom From [Mes clients] AS c
lorsqu'une seule table intervient dans la requête...
Après, c.Prenom réfère bien à [Mes clients].Prenom


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------


Avatar
Maurice KRAIT

Bonsoir Maurice ;-)

"Maurice KRAIT"
Et QUI utilise déjà des noms de tables avec des espaces ???


Je ne comprends pas bien le sens de cette remarque. Est-ce interdit ?


Si on ne cherche *pas* par tous les moyens à se compliquer la vie :
- sourtout pas d'espace dans le nom de table (certaine système ne l'accepte d'ailleurs pas)
- pas d'espace dans le nom des champs
- pas de caractères "non communs" dans les noms de champs
(en fait l'alphabet non accentué suffit amplement)

tblClients ou T_Clients est très parlant et simplifie la suite,
tout comme: NumeroClient, CodeClient, AdresseClient pour les champs

En fait, je travaille sur une base de données que je n'ai pas créée;
personellement, j'évite les noms avec des espaces, justementpour éviter ces
problèmes, mais là, je n'aipas eu le choix; le concepteur de la base a créé
de tels noms et il n'est plus questions de les modifier, il y aurait tropà
changer et surtout à retester.


Bien sûr... dans ce cas, on hérite des inconvénients... ;-(

Mais, il y à une façon de limiter au maximum ces désagréments !

En utilisant des alias...
Select [Mes clients].LeNom, [Mes clients].Prenom From [Mes clients]

devient dans ce cas
Select c.LeNom, c.Prenom From [Mes clients] AS c

et même
Select LeNom, Prenom From [Mes clients] AS c
lorsqu'une seule table intervient dans la requête...
Après, c.Prenom réfère bien à [Mes clients].Prenom

--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------


Je ne connais rien aux alias; est-ce que celà ne s'applique qu'aux instructions SQL ? Y at'il
un moyen plus général d'utiliser un alias pour toute référence à une table, que ce soit dans
des requêtes en format ACCESS, dans des macros et dans des programmes Visual Basic ACCESS ?

Merci pour vos informations.

Maurice



Avatar
3stone
Bonjour Maurice,

"Maurice KRAIT"

Je ne connais rien aux alias; est-ce que celà ne s'applique qu'aux instructions SQL ? Y at'il
un moyen plus général d'utiliser un alias pour toute référence à une table, que ce soit dans
des requêtes en format ACCESS, dans des macros et dans des programmes Visual Basic ACCESS ?



Bon ! Tu as bien une base qui te sert aux tests qui traîne par là ?

Crée une requête avec quelques champs et sauve la sous un nom impossible du genre
"Requête qui donne les résultats annuels au concours de lancer de pigeon"

( heu... d'argile hein, les pigeons ! ;-)))

Disons que la table se nomme "Resultats"
Et les champs : NoPigeon, NomPigeon, VolPigeon

Tu sélectionne cela dans la requête...
et, toujours en mode création de la requête, tu sélectionne la table,
ensuite, appelle les propriétés.

Dans la fenêtre... la première ligne est : Pseudonyme....... Pigeon
donc le nom de ta table.
Et bien, tu peut modifier le nom de cette table, par exemple : RA
( RA pour résultats annuel )

Ferme la fenêtre des propriétés et regarde ta grille... tu vois :

NoPigeon de la table... RA
NomPigeon de la table... RA
VolPigeon de la table... RA

Passe maintenant en affichage SQL
(menu: Affichage > Mode SQL, ou par le bouton
"Affichage" de la barre de menu "Création de requête )

SELECT RA.NoPigeon, RA.NomPigeon, RA.VolPigeon
FROM Resultats AS RA;

Dans le FROM, le RA représente l'Alias de la table Resultats
L'Alias est donc le Pseudonyme que l'on peut donner à la table

Lors de création de requête par le VBA, cela simplifie grandement l'écriture...

Plus clair ?


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------

Avatar
3stone
Mouais !!!!

;-(

Crée une requête avec quelques champs et sauve la sous un nom impossible du genre
"Requête qui donne les résultats annuels au concours de lancer de pigeon"
...

Disons que la table se nomme "Resultats"



Pour une meilleure compréhension, c'est la table qui faut sauver
sous une nom "pas possible" et non la requête...

Bon, heureusement que l'explication reste compréhensible ;-)



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------

Avatar
Maurice KRAIT

Mouais !!!!

;-(

Crée une requête avec quelques champs et sauve la sous un nom impossible du genre
"Requête qui donne les résultats annuels au concours de lancer de pigeon"
...

Disons que la table se nomme "Resultats"


Pour une meilleure compréhension, c'est la table qui faut sauver
sous une nom "pas possible" et non la requête...

Bon, heureusement que l'explication reste compréhensible ;-)

--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------


Merci pour l'explication, je vais essayer de m'en servir.

Maurice


1 2