Problème de format dans une requête

Fermé
renan.michel - 19 févr. 2013 à 10:55
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 - 25 févr. 2013 à 19:23
Bonjour,

J'ai un soucis dans l'utilisation d'une requête, ça serait vraiment gentil que quelqu'un regarde mon problème deux secondes, ça doit être assez évident avec un peu d'expérience mais n'en ayant pas...
En fait je commence par lier un fichier texte avec ma table Extraction, et un des champs que je récupère ainsi est "Volume m3", un exemple du format d'écriture est: "3.45". Je résous déja le problème du point en le définissant comme le symbole décimal sans que cela gêne les autres champs. Puis j'ai essayé de choisir le format comme réel simple et double. Puis j'ai une requête qui utilise cette colonne sous la forme: [NbContainers]: [Volume m3]/54
Mais lorsque j'exécute, au lieu de se servir du champ, mon programme me demande la valeur du paramètre "Volume m3", comme s'il ne connaissait pas ce champs.
Ca serait vraiment sympa que quelqu'un regarde s'il trouve une solution facielement. Merci d'avance et bonne journée à tous

A voir également:

7 réponses

Bonsoir,
Impossible de répondre sans voir.
Merci d'envoyer la requête, en SQL éventuellement si elle n'est pas trop compliquée.
A plus tard
0
Bonjour,

La partie de ma requête qui m'intéresse donne en SQL:

SELECT Extraction.[Volume m3], [Volume m3]/54 AS NbContainers
FROM Extraction;

Voilà, bonne journée
0
Bonjour,
Il me semble qu'il manque un "Extraction" dans l'expression.
Ce devrait plutôt être :
SELECT Extraction.[Volume m3], Extraction.[Volume m3]/54 AS NbContainers FROM Extraction

J'ai l'impression que vous écrivez directement en SQL; pourquoi pas, mais passer en mode "création", c'est pas mal non plus, c'est tout de même plus simple. Et ça pourrait vous aider à vérifier la syntaxe.
Bonne suite

PS: Pensez à ce que je vous ai dit à propos des noms sans espace. Vous risquez de graves désagréments.
http://www.commentcamarche.net/forum/affich-26623299-fichiers-corrompus-erreurs-lecture-seule-sur-access
0
ReBonjour,
Merci de votre réponse. Tout d'abord j'ai bien pris en compte ce que vous m'avez dit sur les espaces dans les noms, je n'en mets pas dans les noms que je crée mais hélas ceux que je reçois en sont truffés et je ne vois pas comment changer ça. En ce qui concerne mon rpoblème, je ne crée pas ma requête en SQL (je ne maitrise pas ce language) c'est une traduction directe de ma requête en SQL par access. Mais je vais essayer votre solution. Merci encore et bonne suite à vous.
0
Le silence de la journée m'incite à croire que l'erreur était bien celle que j'avais imaginée. ???
Pour ce qui est des conseils que je peux donner, j'espère que vous comprenez que ce n'est que pour votre intérêt. Parce que le mien, ???
0
Bonjour,
Je vous prie de m'excuser pour hier mais un soucis apparu en fin de matinée m'a empêché de tester ce code et m'a occupé tout l'après-midi, je viens de le faire et ça ne fonctionne toujours pas, mais de toute façon je dois changer de méthode. Et hier j'espère que mon ton ou ce que j'ai pu dire ne vous a pas froissé ce n'était pas le but bien au contraire. Je voulais simplement vous rassurer sur le fait que je prends en compte ce que vous me dites et que vos remarques ne restent pas lettre morte. Je vous suis extrêmement reconnaissant du temps que vous passer sur le site à tenter de résoudre les soucis d'autres personnes, sans chercher autre chose qu'à nous aider.
Sur ce je vous souhaite une bonne journée
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
21 févr. 2013 à 10:33
Salut,

le champ [volume m3] t'est-il proposé lors de la création de la requête ?
Si la réponse est oui, alors il y un truc que je ne comprends pas...
0
Bonjour Blux,
Je me permets de te mettre ce lien, tu as raté un épisode,

http://www.commentcamarche.net/forum/affich-27145152-probleme-de-syntaxe-dans-une-requete-sur-access
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
21 févr. 2013 à 11:13
J'ai bien lu.
Et donc, pour moi, s'il fait générer sa requête par l'assistant (ce qu'il semble dire), alors il n'a droit qu'à la liste des champs de la table. Et si sa requête possède le champ [volume m3], il n'y a aucune raison qu'access pense que c'est un champ de type paramètre.
Le nom de table à rajouter n'est pas obligatoire dans le cas d'une requête mono-table, il est indispensable dans le cas d'une requête multi-tables mais seulement si des champs sont en commun entre les tables.
0
Bonjour Blux,
Je me sers bien de l'assistant de création et d'une seule table dans laquelle il y a le champ Volume m3, je double clique dessus puis je marque dans la deuxième colonne: NbContainers: [Volume m3]/54
Et lors de l'exécution il le prend comme paramètre. En ce qui concerne le format tessel75 j'ai fait mon importation avec comme séparateur décimale la virgule et le point et je suis tombé sur le même soucis à chaque fois.
Bonne journée
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
21 févr. 2013 à 12:31
J'ai fais un test chez moi avec le générateur de requêtes, ça marche parfaitement :

SELECT Table1.[Volume m3], [Volume m3]/54 AS NbContainers
FROM Table1;

C'est pour ça que je dis qu'il y a un truc qui cloche...

Ta table n'aurait-elle pas un autre champ avec un nom approchant (mais genre avec un blanc en plus) ?

Comment a été créée la table, quels sont ses champs et comment est-elle remplie ?
0
J'ai tapé mot pour mot la même chose (en adaptant les noms évidemment), j'ai bien vérifié que le champ était le seul portant ce nom. Mais je peux difficilement retranscrire tous les champs, il y en a 130. Cette table provient de l'importation d'un fichier texte, cette colonne a comme format numérique et réel simple et les valeurs ont la forme suivante: par ex: 1,89
Donc pour moi les opérations ne devraient pas poser de problème (je suis en acces version française). Mais si vous ne voyez pas laissez tomber, c'est vrai que sans pouvoir voir l'ordinateur c'est difficile.
0
Bonjour à tous les 2,
J'ai repris la question au début. Et je me demande si l'idée de prendre le "." comme marqueur décimal est très judicieux. Mieux vaut faire simple: laisser Access faire ses calculs dans l'unité choisie au départ dans les options de format de travail, puis éventuellement changer le format de présentation des résultats mais seulement à la fin, surtout pas en plein milieu.
Bonne suite
0

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

Posez votre question
Bonjour à tous les 2,
Comme Blux je suis qq peu intrigué parce que vous sembliez avoir résolu (provisoirement?) votre problème de la question précédente pour le calcul de "[NbContainers]", ce qui laisse supposer que Access interprétait correctement "[Volume m3]" comme un champ de format numérique.

Maintenant, je me pose aussi des questions parce que vous dites : "Cette table provient de l'importation d'un fichier texte", de quel type de fichier s'agit-il? Est-il certain que toutes les données numériques ont bien été converties en numérique et qq une ne seraient-elles pas restées alphabétiques ou ambiguës pour Access?

Par ailleurs, n'avez-vous pas des requêtes en cascade? Je sais me faire souvent prendre à ce piège où je pense régler le problème de la 2ème ou 3ème requête et d'oublier les précédentes.

Un autre piège fréquent est celui de certaines variables ou paramètres. Vous écrivez : "Mais lorsque j'exécute, au lieu de se servir du champ, mon programme me demande la valeur du paramètre "[Volume m3]", comme s'il ne connaissait pas ce champs. "
Alors je me demande si ce n'est pas le champ qu'il ignore, mais le format du champ, moyennant quoi vous devriez aller regarder non seulement les conversions (mal à propos?) en format anglais des nombres décimaux, si vous les avez maintenus, mais aussi le format des paramètres. Et pour ce faire vous ouvrez le ruban Requête/Créer/Paramètres pour définir le format de la variable "[Volume m3]. Ou si je me souviens en Access2000, l'icône était dans la boite "Requêtes"
Essayez? Et dites-nous le résultat.
Mes encouragements
0
Bonjour tessel75 et Blux,
Ca m'aura pris une bonne partie de la matinée, et je ne suis pas certain de comprendre comment ça c'est passé mais j'ai enfin réussi à faire mon opération. Pour cela je suis passé en système décimal français. Puis je me suis mis en mode création où j'ai effectué la même fonction que d'habitude qui ne fonctionnait pas, je l'ai ensuite passée en mode SQL où j'ai fait un copié collé de Extraction.[Volume m3]; car je savais que la sélection fonctionnait après l'avoir testée seule; dans mon Round, l'expression parraissait inchangée (à part le Extraction. en plus mais j'avais déja essayé avec cette syntaxe et ça ne fonctionnait pas) mais elle fonctionnait cette fois-ci: SELECT Extraction.[Volume m3], Round(Extraction.[Volume m3]/54,3) AS NbCont
FROM Extraction;
Je ne saurais expliqué ce qui c'est passé, et j'espère avoir été clair mais comme je n'ai pas bien compris ce qu'il se passait je ne peux en dire plus. L'important c'est que ça fonctionne par miracle maintenant. Merci beaucoup à tous les deux et si vous avez des questions pour essayer de comprendre ce qu'il c'est passé j'y répondrai bien évidemment.
Sur ce je vous souhaite une bonne journée et merci encore.
0
Bonjour,
D'abord on ne peut qu'être satisfait que votre requête fonctionne comme vous souhaitez.
Mais, puisque vous nous proposez de te poser une ou 2 questions, j'en profite.
1) Qu'est ce que cette fonction "Round" dont vous parlez plusieurs fois, et qui arrive tout à coup? Est-ce la même, ou approchant, de la fonction "ARRONDI()" de Excel, appliquée au résultat "NbContainers" que vous calculiez précédemment.
2) Je peux très bien comprendre que l'informatique ait ses mystères, mais tout de même, vous semblez dire que votre requête s'est rétablie après que vous avez remis le format des données au format européen, avec des virgules marquant la décimale. Cela laisse entendre que Access n'a pas trop apprécié ce genre de manipulation en cours de traitement. Bonne leçon à retenir!!
3) Je demandais hier, de quel fichier "texte" tiriez vos données; vous n'avez pas répondu.
En espérant vous lire, Bonne suite.
0
Bonjour Tessel75,
Comme vous l'avez supposé la fonction round sert à arrondir. Il est vrai que le fait de prendre le système décimal européen semble avoir aidé, mais ce qui me reste incompréhensible c'est que j'avais essayé ça la veille et que ça n'avait pas fonctionné. J'avais surement dû mal le faire, ça me parait être la meilleure explication, je retiens en effet la leçon.
En ce qui concerne le fichier texte je suis désolé j'ai bien oublié d'y répondre, je ne suis pas actuellement sur l'ordinateur sur lequel je travaille, le fichier est sur mon bureau, il doit avoir un nom comme:
C:\Users\Michel\Bureau\FichierTexte.txt
Si vous voulez plus d'informations là-dessus demandez les moi et je vous les donnerai lundi.
Je vous souhaite un bon week-end
0
Bonjour,
Je vous remercie pour votre réponse.
Pour ce qui concerne le fichier je suis un peu étonné. En fait ma demande était initialement de pure curiosité, mais à la réflexion je me dis qu'elle pourrait m'être utile.
Environ chaque mois je fais des extractions sur un logiciel assez ancien, lesquelles extractions sortent en .pdf sans possibilité d'avoir autre chose, et donc impossible à importer sur la base Access sur laquelle je travaille. Je dois donc convertir ces tableaux en Excel pour les rendre lisibles et importables. Pour certains d'entre eux j'ai mis au point un code VBA qui casse cette présentation .pdf et me rend mes tableaux en Excel, mais pour les autres cela se révèle beaucoup plus compliqué et je n'y suis pas encore parvenu.
C'est la raison pour laquelle je lève le sourcil quand vous me parler de format .txt car ce pourrait éventuellement être la solution si l'importation se faisait sans difficulté.
Alors mes questions seraient:
La charge des données dont vous avez parlé est-elle ponctuelle ou plus ou moins répétée régulièrement?
Comment s'opère-t-elle ? Par référence directe au fichier concerné, ou bien après importation séquentielle des données dans les tables prévues pour les recevoir?
Et, comment s'opère la référence des champs des requêtes si ce n'est aux champs des tables Access?
Enfin, comment opérez-vous l'importation des tableaux de données du format .txt vers Access.?
Je vous remercierai bien pour ces quelques éclaircissements.
Bien à vous et bon week-end.
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
23 févr. 2013 à 17:37
Si tu veux plus d'infos sur l'importation de données texte dans access, il y en a ici...
0
Merci Blux et Renan!
Je ne manquerai pas de regarder cette fonction "DoCmd.TransfertText()" dont j'ignorais jusqu'à l'existence.
Je poserai une "nouvelle question" en cas de problème.
Au travail, je suis sur Access2003 et je ne sais pas si elle est disponible.
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
25 févr. 2013 à 19:23
Pas de souci pour la compatibilité ascendante...
0