[ACCESS] left ou Mid dans un état = #erreur

Résolu/Fermé
durahsel Messages postés 66 Date d'inscription samedi 12 août 2006 Statut Membre Dernière intervention 2 mars 2010 - 5 déc. 2007 à 14:12
durahsel Messages postés 66 Date d'inscription samedi 12 août 2006 Statut Membre Dernière intervention 2 mars 2010 - 12 déc. 2007 à 17:03
Bonjour,

J'ai cherche à pouvoir coller des caractères d'un champ dans un état et pour cela je souhaite extraire les caractères un par un.

J'ai essayé les fonctions Mid et left :

ex dans mon formulaire :
=Gauche([code_dech];1)

mais sur mon état lors de l'aperçu j'ai un "#Erreur", pareil pour la fonction Mid
=Mid([code_dech];1;1)

Pq une telle erreur ?

Merci

Durahsel

9 réponses

phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
6 déc. 2007 à 17:12
très probablement code_dech est vide ou NULL. Les fonctions n'aiment pas ça.

=Gauche(ISNULL([code_dech], " ");1)
=Mid(ISNULL([code_dech], " ");1;1)
0
hervelot Messages postés 535 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 20 mars 2008 123
6 déc. 2007 à 17:23
Bonjour,

Essai les fonctions avec des virgules et pas des points virgules
0
durahsel Messages postés 66 Date d'inscription samedi 12 août 2006 Statut Membre Dernière intervention 2 mars 2010 11
12 déc. 2007 à 13:13
désolé mais aucune de vos deux solutions ne fonctionne.

Dans les 2 cas (ISNULL et virgule à la place de "; ") j'obtiens une erreur de syntaxe .

pas d'autres idées ?
0
Bonjour

Ce sont bien des point virgule qu'il faut.

N'aurais-tu pas donné le même nom au champ de ton état qu'à celui de la table sur laquelle il est basé ? Si le code qui contient =Gauche([code_dech];1) s'appelle code_dech, il y a une référence circulaire

Pour faire ce que phil232 voulait faire, isnull ne suffit pas, il aurait fallu :
=Gauche(IIF(ISNULL([code_dech]); " ";[code_dech]);1)
=Mid(IIF(ISNULL([code_dech]); " ";[code_dech]);1;1)
0
durahsel Messages postés 66 Date d'inscription samedi 12 août 2006 Statut Membre Dernière intervention 2 mars 2010 11
12 déc. 2007 à 13:55
Bonjour,

non, ma table ne s'appelle pas comme mon champ (et inversement ...).

J'ai reesayé avec =Gauche(IIF(ISNULL([code_dech]); " ";[code_dech]);1) mais toujours "#erreur"

Je précise que le nom de ma zone de texte c'est "code_dech" = celui de mon champ.

J'ai rentré la fonction =Gauche(IIF(ISNULL([code_dech]); " ";[code_dech]);1) dans source contrôle.

?
0

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

Posez votre question
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
12 déc. 2007 à 13:50
et puis : il faut des virgules dans VBA, par contre dans Access (cad les requêtes et les champs calculés) il faut bien les point-virgules
0
essaie donc de remplacer le nom du champ par une chaine.si il ya toujours erreur c'est que ça vient de la formule , et dans ce cas ça ne peut etre que la virgule ou le point virgule selon que le nom de la fonction est en englais ou en français et selon que tu es en access ou en VBA
donc pour ce faire il faut combiner les noms de fonctions et les virgules et points- virgule
0
ma table ne s'appelle pas comme mon champ (et inversement ...).
je n'ai pas voulu parler de ça mais du champ de ton état qui s'appelerait code_dech.
Dans ton esprit ce code_dech serait une colonne d'une table, mais pour access, il s'agirait du champ lui-même d'où la référence circulaire.

Je suggère ça parce que c'est ce qui m'est arrivé quand j'ai voulu reproduire ton problème.
Il m'a suffi de changer le nom du champ dans l'état (et de retaper la formule) pour que tout rentre dans l'ordre
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
12 déc. 2007 à 14:45
de tout façon un programmeur digne l'appellerait au moins "txtCode_Dech" ou encore mieux le nom en anglais. après 20 ans mon expérience est que dans IT seul l'anglais marche correctement, que ce soit la version d'un programme, le langage de programmation et la dénomination de quoi que ce soit.

Foreign languages SUCK!
0
hervelot Messages postés 535 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 20 mars 2008 123
12 déc. 2007 à 14:58
te serais-t-il possible d'envoyer l'etat et la table liée afin d'analyser ton pb car je n'arrive pas à recréer ton erreur

ce que je peux te dire. Les valeurs nulles ne génèrent as à cette erreur, ce n'est pas une erreur de syntaxe
0
durahsel Messages postés 66 Date d'inscription samedi 12 août 2006 Statut Membre Dernière intervention 2 mars 2010 11
12 déc. 2007 à 17:03
merci à tous vous avez un peu tous fianelment résolu mon problème.

J'ai en effet perdu mes bon réflexes que j'avais appris pendant mes quelques cours de prog (je ne suis pas informaticien de formation mais bon ...) où il fallait toujours mettre un petit tri-sigle différent avant le nom. J'ai donc mis un "txt" devant mon nom d'étiquette et ça roule !

Il y avait redondance entre mon nom de champ, et mon nom d'étiquette txt. ce n'etait pas dutout une histoire de virgule ...

Merci à tous
0