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

Requêtes et SQL. Discussion :

Requête extraction de caractères sur condition


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Requête extraction de caractères sur condition
    Bonjour,
    Je suis de niveau débutant.
    Voici mon problème : Après importation dans ma base access d'un fichier de données d'environ 2000 lignes provenant d'un logiciel comptable en transformé .xls, je récupère parmis tous les champs, un "champ libre" (libellé) comprenant des informations diverses dont, sur 1026 lignes, des infos importantes de type "nom1/nom2/N° Facture".

    Je souhaite récupérer nom2 dans ma base. Les 3 données sont de grandeur variables.

    J'ai essayé la fonction Split dans une requête, conseillée par Philippe JOCHMANS sur le forum. Super !.... et j'en profite pour le féliciter pour ses explications limpides. :-)

    La fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Function Extract(strTexte As String, bytPos As Byte) As String
     
    'déclaration de variable
    Dim tabextract As Variant
    tabextract = Split(strTexte, "/")
    Extract = tabextract(bytPos)
     
    End Function
    ...Nickel pour les données avec xxxxx/zzzzz/111111.

    Malheureusement ce fameux champ comporte aussi des suites de caractères différents, parfois sans "/", parfois avec 1 seul "/".
    Le résultat est que la requête renvoie bien toutes les lignes mais seulement 71 lignes sont renseignées du Nom2.
    Visiblement, à la première ligne qu'elle rencontre sans les 2 "/", elle envoie des messages d'erreurs et arrete le process !!! ???

    Si je supprime dans la table source toutes les lignes qui ne sont pas en "nom1/nom2/N° Facture", soit 1026 lignes, la requête fonctionne et mon champ est bien renseigné de nom2 sur les 1026 lignes.


    Ma question : Y aurait-il un moyen d'exécuter cette requête avec pour condition que pour chaque ligne, le champ "Libellé" contienne bien les 2 "/" ?
    Si oui, elle copie la donnée nom2 vers le champ idoine, Si non, elle ne fait rien et passe à la ligne suivante sans rien copier

    exemple :
    champ Libellé : OMD/SARA LE/300017125 ==> Champ nom2: SARA LE
    champ Libellé : MEDIABRA/MARIONN/10055719 ===> Champ nom2: MARIONN
    champ Libellé : A.N. au 010109 A.N. au 010108 at ho ===> rien dans le champ nom2
    champ Libellé : clt dtx lb communication ===> rien dans le champ nom2

    et de ce fait, je retouverais mes 2000 lignes dont 1026 lignes renseignées des nom2, ce qui serait super !

    Merci d'avance pour votre temps et vos conseils
    Bien amicalement

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 630
    Points : 34 337
    Points
    34 337
    Par défaut
    salut,
    il faut gerer le cas de figure dans ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function Extract(strTexte As String, bytPos As Byte) As String
     
    'déclaration de variable
    Dim tabextract As Variant
    tabextract = Split(strTexte, "/")
    If bytPos>Ubound(tabextract) Then
    Extract = ""
    Else
    Extract = tabextract(bytPos)
    End If
    End Function
    et tu ajoutes dans ta requete une clause sur le retour de la fonction

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE Tonintituledechampretourne <>""

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    jpcheck,

    merci infiniment pour ta réponse rapide, ça marche parfaitement bien et c'est exactement ce que je voulais.

    Je vais pouvoir finaliser mon appli et la mettre en charge. Super !!!

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

Discussions similaires

  1. Extraction de caractère avec conditions
    Par nikolas92400 dans le forum SQL
    Réponses: 8
    Dernier message: 28/10/2013, 15h12
  2. [AC-2007] Extraction chaîne caractère depuis requête paramètre
    Par Alucardbert dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 18/12/2009, 13h55
  3. Somme sur conditions imbriquée dans une requête
    Par aleximan dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/01/2008, 18h05
  4. pb requête sur condition année
    Par the_youpi dans le forum SQL
    Réponses: 3
    Dernier message: 06/11/2007, 19h11
  5. [Requête]extraction de caractères d'enregistrements d'un champ
    Par BORDEAUX4 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 28/03/2007, 13h18

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