IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Fonctions ACCESS 2007 mid et instr inopérantes - problème de Référénces ? [AC-2007]


Sujet :

Access

  1. #1
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Par défaut Fonctions ACCESS 2007 mid et instr inopérantes - problème de Référénces ?
    Bonjour à tous,

    Je ne parviens pas à faire fonctionner des solutions que j'ai consultées sur d'autres discussions (cf ci dessous)
    Objectif : partager en deux champs distincts dans une requête Access 2007 un champ texte séparé par le caractère &.
    Les solutions ci dessous devraient fonctionner sans problème. Access ne valide pas la formule (à partir du générateur d'expression) : la ligne 'champ' redevient vide.
    Mes autres tentatives personnelles en direct sql se sont soldées par des erreurs diverses..
    La fonction mid (et instrev) n'est pas dans la liste des fonctions du générateur d'expressions. il faudrait utiliser la fonction Danschaine peut être, ou instrev ?

    J'ai également essayé de voir s'il ya un problème de référence (outils dans les modules, mais je suis pas en vba, mais sur une requête)

    Donc si vous avez une piste, je suis preneur..merci d'avance !

    (PS : J'ai dans la foulée essayé d'activer des références acrobat afin de permettre l'ouverture de fichier pdf à partir des liens html dans mon formulaire,- champ de la table liée au formulaire-, mais ça ne marche pas non plus !! Ceci est un autre point..)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monNom = mid(("BMA\jdupont",Instr("BMA\jdupont","\")+1)
    Et ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mid(txt, InStr(2, txt, "/") + 1, InStr(InStr(2, txt, "/") + 1, txt, "/") - InStr(2, txt, "/") - 1)
    => avec remplacement de txt par mon champ de table entre crochets
    NB : une simple fonction gauche fonctionne en revanche..

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Bonjour,
    Aucun problème de référence la dedans, juste un problème de syntaxe fantaisiste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mid( ("BMA\jdupont",Instr("BMA\jdupont","\") +1)
    Mid c'est comme ça (F1) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mid(Valeur,depart,longueur)
    Parenthèses en trop ! Si tu as du mal avec les parenthèses mets des espaces avant.

    Mid et DansChaine c'est la même chose, le premier peut être utilisé en VBA et dans l'interface, alors que la seconde que dans l'interface et en version française de surcroit.

    Pour extraire la fin à partir du \
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    right(valeur,len(valeur)-instr(valeur,"\"))
    Quant à la dernière expression je ne veux même pas la regarder...

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 9
    Par défaut Séparer une chaine de caractères en deux dans Access
    Bonsoir,
    Merci beaucoup Loufab .
    Ça m’a poussé à décortiquer les fonctions pour les comprendre. Mais savoir la correspondance français anglais et la syntaxe fait gagner du temps. Toujours pas compris les subtilités virgules et points virgules, et sql/Vba, mais il faudrait que je pense à suivre une formation minimum un jour, je gagnerais du temps.

    Voici pour les nuls (comme moi) plus de détails sur cette fonction simple mais qui demande du temps quand on débute :

    D’abord Comme indiqué par Loufab:

    1- Partie à droite du séparateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Droite([nom du champ];NbCar([nom du champ])-DansChaîne([nom du champ];"&"))

    Danschaine ( InStr en anglais) : détermine la position dans la chaîne du séparateur indiqué « & » . appelons le A
    Nbcar (len en anglais) : calcule le nb de caractère de la chaine de caractères totale, soit N
    Droite : extrait les (N- A) caractères de la chaîne à partir de la droite

    2- Partie à gauche du séparateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Gauche([nom du champ];(DansChaîne(1;[ nom du champ];"&")-1))
    Le – 1 permet d’enlever le séparateur (ici &, d’ailleurs pas bien choisi je pense d’ailleurs ? )
    Le 1 en première position de danschaine sert à prendre le premier séparateur trouvé, en l'occurrence dans mon cas, le détail n'est pas utile on peut enlever le 1;
    NB : ne pas oublier de sélectionner dans la ligne opération de la requête "Expression" et non pas regroupement.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Virgule vs. point-virgule.

    Tout simple :

    En VBA et en SQL on utilise la virgule y compris dans le générateur de requête en mode SQL.

    Le point-virgule c'est pour tout les restes y compris dans le générateur de requête en mode Création.

    Parfait ! tu adoptes les bonnes méthodes de progression.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/07/2009, 21h05
  2. import via la fonction access 2007
    Par hugoclo dans le forum IHM
    Réponses: 1
    Dernier message: 26/02/2008, 19h45
  3. [Access 2007] Objet OLE, problème d'insertion
    Par Grangy dans le forum IHM
    Réponses: 1
    Dernier message: 24/08/2007, 10h00
  4. Réponses: 2
    Dernier message: 06/03/2007, 12h32
  5. Problème requêtes SQL sur Access 2007
    Par Moroccan dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/02/2007, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo