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 :

dissocier un champ


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 8
    Points
    8
    Par défaut dissocier un champ
    Bonjour à toutes et tous,

    Par requête je sais concatener deux champs, mais ne sais pas comment faire dans le cas inverse.

    EX du champ NomPrenom= MARQUES Jean Louis je desirerais obtenir 1 champ pour le nom et un champ pour le prenom. Sachant que les prenom composés n'ont pas de trait d'union mais un "espace".

    Merci de me renseigner, je n'ai pas trouver de reponse dans le FAQ.

    JLM

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 59
    Points : 66
    Points
    66

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour JLM,

    Moi je te conseillerai de concatener sous la forme ce qui donnerai MARQUES, Jean Louis. Et tu n'aurais que la virgule à repérer.
    Autrement tu as entre un et trois espaces possibles. Comment décider lequel est entre le nom et le prénom ?

    A+

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Merci jeffboj pour ton conseil, mais cela ne m'aide pas vraiment...

    je ne suis pas sur que cela soit adapter à ma problématique...je n'ai pas trouver de llien avec ce que je recherche.
    mais peut être me trompe je. et si c'est le cas des explications me seraient d'un grand secours...
    Si d'autres personnes savent...qu'ils n'hésitent pas..

    @+
    JLM

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Bonsoir LedZepII,

    Là j'entrevoie un peu mieux le rapport avec le conseil de jeffboj, ...

    Mais le problème est que je reçois les extractions déjà concaténées et c'est justement pour ça que j'aiimerais que vous m'aidiez à les édeconcaténer... J'aimerais utiliser les nouveaux champs ainsi créer dans mon projet de base de données

    Merci

    @+

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 59
    Points : 66
    Points
    66
    Par défaut
    Hello,
    ben tu vas repérer le premier espace, tu compte les caractères et tu dissocie ton nom et ton prénom
    comme indiquer dans la FAQ

    Jeff

  7. #7
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut
    essai ceci
    1/crées un champ "Nom" et un champ "Prenoms" dans ta table matable
    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Dim StrSQL as String, Rst as DAO.Recordset
    StrSQL="SELECT NomEtPrenoms, Nom, Prenoms FROM matable;"
    set Rst=CurrentDB.OpenrecordSet(StrSQL)
    If Rst.RecordCount=0 Then
        msgbox "Aucun enreg dans la table"
        Rst.Close
        set Rst=Nothing
        exit sub
       Else
            Rst.MoveLast
            Rst.MoveFirst
            Do Until Rst.EOF
                 Rst.Edit
                     Rst![Nom]=Split(Rst![NomEtPrenoms]," ")(0)
                     Rst![Prenoms]=Split(Rst![NomEtPrenoms]," ")(1)
                 Rst.UpDate
                Rst.MoveNext
            Loop 
           Rst.Close
           set Rst=Nothing
    End If
    J'espere que ça marchera
    @+

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Bonsoir Keita,

    j'essaie de copier ton code dans un module mais lorsque je la lance elle bugue...
    Comment dois je l'enregistrer et or mis le nom de ma table et les champs nomEtprenom y at'il autre chose à faire...

    @+
    JLM

  9. #9
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    mets le code derriere un bouton de commande de ton formulaire
    et dis moi la ligne que le debbuger souligne
    @+
    EDIT
    Pour utiliser le code dans un module, fais comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function DissocierNomEtPrenoms()
     
    ' Copier/Coller le code precedent ici
     
    End Function
    Pour executer La fonction, Presse F5
    @+

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Re,

    Je n'ai pas de formulaire je n'ai qu'une table ...."tblAnnuaire" et le champ "AnnNomPren"...

  11. #11
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    voilà ta requete:

    SELECT Left([np],InStr([np]," ")-1) AS nom, Right([np],Len([np])-InStr([np]," ")) AS prenom
    FROM Table2;

    table2 contient le champ np (nom et prénom concaténé)

    la requete fourni le champ nom et prenom par recherche de l'espace dans le champ.

    !!!! y a pas de controles !!!!
    1-il faut que pour que cela marche qu'il trouve 1 espace!
    sinon gare au -1...
    2-pas génial quand t'as deux, voir + d'espace...

    mais t'as des solus en refiltrant tes champs avant soit par requete soit par vba, voir intégrer ces filtres conditionnelle dans la requete...
    mais bon tu dois patogé si t'a déjà pas trouvé cette requete...

    bon courage!
    ps: conseil, pense à ne pas utilisé le libellé "nom" comme nom de champ car on fini tj part s'y perdre avec plusieur requete.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    re

    Option compare database se met en inversion video et ...Message erreur : "Erreur de compilation: Instructionincorrecte dans une procédure...

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Bonsoir Vodiem.....

    merci je vais tester.

    Oui c'est vrai je patoge mais qui n'a pas patoger en débutant sur ce fabuleux outil qu'est access...

    @+
    JLM

  14. #14
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    dans ce cas Ajoute 2 champs: Nom et prenoms à la table tblAnnuaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Function DissocierNomEtPrenoms()
    Dim StrSQL as String, Rst as DAO.Recordset
    StrSQL="SELECT AnnNomPren, Nom, Prenoms FROM tblAnnuaire;"
    set Rst=CurrentDB.OpenrecordSet(StrSQL)
    If Rst.RecordCount=0 Then
        msgbox "Aucun enreg dans la table"
        Rst.Close
        set Rst=Nothing
        exit sub
       Else
            Rst.MoveLast
            Rst.MoveFirst
            Do Until Rst.EOF
                 Rst.Edit
                     Rst![Nom]=Split(Rst![AnnNomPren]," ")(0)
                     Rst![Prenoms]=Split(Rst![AnnNomPren]," ")(1)
                 Rst.UpDate
                Rst.MoveNext
            Loop
           Rst.Close
           set Rst=Nothing
            msgbox "Opération terminée"
    End If
    End Function
    Pour executer la fonction la fonction appui sur F5

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Maintenant c'est ", Rst As DAO.Recordset" qui s'inverse...

    MAis rien ne se passe en lançant par F5 j'obtiens ce message quand je lance par VBE et j'ai essayé table ouverte et table fermée c'est pareil

    Pour info j'ai que access 2002

    @+

  16. #16
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    tu as une bibliotheque qui te manque: Microsoft DAO 3.6 Object Library
    Dans la fenetre VBE --> OPutils-->References--> tu le coches et OK

  17. #17
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    as tu essayé la requete que je t'ai mis?

    autrement pour tes erreurs pour le code de keita, c'est peut etre tout simplement que tu n'as pas référencés dans outils : microsoft dao?

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Bonjour Keita Vodiem

    Voilà c'est fait mais ....la ligne Rst![Nom] = Split(Rst![AnnNomPren], " ")(0) avec erreur 94 utilisation incorrecte de null.


    Vodiem ta requete effectivement fonctionnerait parfaitement si tous les champs etaient alimentes par un noom prenom unique ...si champ est vide = #erreur et si nom ou (et )prenom est compose ça ne veux plus rien dire..tu avais raisons,

    Sésolé si je ne repond que ce matin mais visiblement il y a des soucis sur le reseaux qui est tres lent

    @+
    JLM

  19. #19
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut JLM
    Je ne reprends que la boucle ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Do Until Rst.EOF
        if Not IsNull(Rst![AnnNomPren]) Then
              Rst.Edit
                   Rst![Nom]=Split(Rst![AnnNomPren]," ")(0)
                   Rst![Prenoms]=Split(Rst![AnnNomPren]," ")(1)
              Rst.UpDate
        End if
        Rst.MoveNext
    Loop
    NB:Entre les doubles quotes il y a un espace; si par hazard il y a 2 espaces entre le nom et le prenoms dans ta table, il faudrait en mettre autant comme separateur dans la fonction split.

  20. #20
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Attention, ta solus Keita reconnait que deux mots séparés par un espace, et tronque ce qui suit (il est possible d'y remedier)
    En gros:
    sois tu adopte une solus bricolage (à court terme), tu récupère ce qui est classic et par extraction tu retraite ce qui ne l'ai pas, sois tu opte pour une solus automatisation plus complète et tu passes par vb où Keita donne une élégante solus épuré.
    mais pense dans ce cas qu'il faut tenir compte:
    -champ nom&prénom non vide ou non null
    -existance d'au moins un espace (caractère de séparation) entre nom, prénom
    -des espaces successifs
    -des doublons dans les nom&prénom
    tenir compte des cas particuliers:
    si c'est un particulier:
    -il peut avoir un prénom composé: jean paul, patrick poivre d'arvor, jean paul 2
    -il peut avoir plusieurs prénoms: patrick michel
    -il peut avoir plusieurs mot pour le nom:
    un bon ex: do van joelle monique (nom de ma mère)
    do van=nom
    joelle=prénom (usuel)
    monique=deuxième prénom (jamais usité)
    remarque encore là que le prénom usité n'est pas forcément le dernier...
    pire : et si c'est une entreprise?:
    -il y aura généralement qu'1 mot, mais beaucoup utilise plusieurs: la redoute, mc do
    sans compter des fois:
    -un titre, des abréviations : SA, SARL, Maître, Prof, Docteur,Melle...
    -des erreurs de saisie !!!
    -des apostrophes: poivre d'avor=poivre d' avror
    [...] j'oublie surement encore d'autre cas
    en VB y a du boulot pour gérer correctement tout cela.
    donc a toi de voir, mais si tu n'arrives pas a obtenir autrement tes données, à mon avis t'aura toujours une vérification humaine à faire.
    des fois cela vaut pas le coup de perdre trop son temps comme dans le cas de mailing de prospect: c'est pas une adresse erroné qui justifie des heures perdu de travail qui des fois non pas de résultat.

Discussions similaires

  1. TALEND 3.2.0 dissocier champ adresse
    Par munity dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 10/03/2010, 10h46
  2. Dissocier le contenu d'un champ
    Par MaryR dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 30/01/2009, 19h44
  3. [ADO] Constantes des types de champ
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/09/2002, 11h08
  4. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 11h48
  5. taille max du nom d'un champ
    Par hna dans le forum Paradox
    Réponses: 2
    Dernier message: 28/07/2002, 02h40

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