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 :

separer un champ en 3 champs


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut separer un champ en 3 champs
    salut les professeurs,
    j'aimerais bien avoir un champ de ce type X-Y-Z avec x de 1 à 1000, Y de 1 à 12 et Z sous cette forme "2012" c'est à dire que je peux trouver ce champ comme cet exemple "1-4-2011" ou comme ça "978-12-2199" . Le resultat désiré est la requete permetant de separer suivant la forme suivante | 978 | 12 | 2199 | c'est à dire 3 champs.
    MILLE MERCI

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Est-ce qu'il y a toujours un séparateur (le - ) entre tes données et est-ce qu'il y en a toujours 3 ?

    Si c'est le cas une petite fonction en VB à mettre dans un module

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function Eclatage(strDonnees As String, bytPos As Byte)
        ' déclaration
        Dim Eclat() As String
     
        ' éclatage
        Eclat = Split(strDonnees, "-")
     
        ' récupération en fonction de la position
        Eclatage = Eclat(bytPos)
    End Function
    L'utilisation dans une requête



    Le résultat




    Philippe

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    Merci beaucoup beaucoup

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut eliminer mots "#Erreur"
    salut les professeurs
    comment éliminer le mot #Erreur qui se result dans une requete.
    le mot #Erreur apparait uniquement où les champs sont vide, jaimerai avoir un champ vide au lieu de #Erreur.
    merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Au lieu de vouloir supprimer ce mot, il faut mieux connaitre pourquoi il y a ce mot qui apparaît et donc y pallier en amont.

    Si tu parles de champs vides, c'est peut-être un calcul sur une valeur nulle, dans ce cas regardes du coté de la fonction Nz, tu as l'aide sur cette fonction, et le forum regorge de discussions sur celle-ci.

    En général et pour le bon fonctionnement d'une application il faut mieux trouver l'origine d'une erreur que de chercher à la masquer.

    Philippe

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    merci de repondre
    en faite jai un champ "A" que je l ai separer en 3 champ grace a la commande splite et grace a "Philippe JOCHMANS Rédacteur/Modérateur"
    le probleme c est quand ce champ est vide, alors j obtiens le message d erreur, pour les autres champs non vide pas de probleme.
    merci

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Tu aurais du continuer sur la même discussionn penses-y la prochaine fois.

    Remplaces la fonction par celle-ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function Eclatage(strDonnees As Variant, bytPos As Byte) As String
        ' déclaration
        Dim Eclat() As String
     
        If IsNull(strDonnees) Then
        Else
            ' éclatage
            Eclat = Split(Nz(strDonnees, 0), "-")
     
            ' récupération en fonction de la position
            Eclatage = Eclat(bytPos)
        End If
    End Function
    Philippe
    Dernière modification par Invité ; 10/04/2012 à 07h35.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    Merci,
    j'ai trouvé une autre solution d'eleminer ERREUR, il suffit d'utiliser une requete on utilisant "est pas null()".
    et votre solution toujours la bienvenue
    merci encore.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    me revoila encore casse tete

    mon nouveau problème c'est que on entrant un critere un message d'erreur est renvoyé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Livraison Requête].POS1, [Livraison Requête].POS2, [Livraison Requête].POS3
    FROM [Livraison Requête]
    WHERE ((([Livraison Requête].POS3)=[Formulaires]![Facturation]![Texte22]));
    le message d'erreur est : l'indice n'appartient pas à la sélection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Eclatage = Eclat(bytPos)
    mille merci

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    Qu'y a t il dans [Formulaires]![Facturation]![Texte22 ?

    Comment utilises-tu ta requête ? Comment la lances-tu ? Comment veux-tu afficher le résultat ?

    Remarque : il est important de nommer correctement les contrôles : http://argyronet.developpez.com/office/vba/convention/

    Philippe

  11. #11
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    merci de votre suivi
    Texte22 est un champ numérique correspond a une année donnée c'est à dire 2011, 2012, ...etc


    Nom : requete.JPG
Affichages : 157
Taille : 28,1 Ko

    Nom : requete2.JPG
Affichages : 98
Taille : 40,6 Ko

    merci encore

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Personnellement, je viens de faire un test, et je n'ai aucun soucis.

    Tu n'as pas répondu à mes question :

    Comment utilises-tu ta requête ? Comment la lances-tu ? Comment veux-tu afficher le résultat ?
    Si tu ne réponds pas, on tourne en rond.

    Philippe

  13. #13
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    je croix que les reponses sont acheminées dans la successions de la discussion en cours.



    Personnellement, je viens de faire un test, et je n'ai aucun soucis.
    pouvez vouS m'envoyer votre essai une bd access 2003 ?

    Ca sera très gentil de votre part Mr Philippe



    Comment utilises-tu ta requête ?
    requete selection

    Comment la lances-tu ?
    dans une requete creation j'appuis sur "Execter"

    Comment veux-tu afficher le résultat ?
    pour l'instant en mode feuille de données

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par adam0906 Voir le message
    Comment la lances-tu ?
    dans une requete creation j'appuis sur "Execter"
    Tu passes en paramètre les données d'un formulaire, hors si celui-ci n'est pas ouvert, cela bug, et c'est normal.

    Il faut créer un bouton sur ton formulaire (utilises l'assistant), qui pointe sur ta requête, et tu verras cela fonctionne.

    Le fait de visualiser une requête de cette manière est bon en mode conception, mais en fonctionnement normal il faut utiliser des formulaires, sous formulaires ou zone de listes pour visualiser les résultats.

    Philippe

  15. #15
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    bonjour
    excuser moi j'ai mal exprimer

    Comment la lances-tu ?
    dans une requete creation j'appuis sur "Execter"
    effectivement la requete est basé sur un fomulaire, et je suis sûr que le critère qui est dans la requete est correcte sans erreur , (je l'ai créé par l'assistant)

    voulez vous m'envoyer votre essai ?

  16. #16
    Invité
    Invité(e)
    Par défaut
    Re

    J'ai l'impression que tu ne lis pas tout ce que j'écris :

    Tu passes en paramètre les données d'un formulaire, hors si celui-ci n'est pas ouvert, cela bug, et c'est normal.
    Lorsque tu exécute ta requête est-ce que le formulaire est ouvert avec des données à l'intérieur ?

    Philippe

  17. #17
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Mais bien j’ai tous lu et je ne peux pas faire cette erreur là !

    A ce stade, je vais reformuler mon problème comme ça vous allez bien me comprendre et aussi me donner un coup de main.

    Commençons par une table qui contient les champs suivants :
    - Code Client
    - N facture
    - Date Facturation
    - Produit
    - Qte acheté ….etc

    Je souhaiterais avoir le nouveau numéro de facture qui va être affecter, ce numéro est donnée automatiquement mensuel càd qui il y a un conteur pour chaque mois :

    Exemple : pour le mois 3 /2012 en aura des factures qui commence par le n° 1 et là donc on aura le 1er numéro de facture est « 1-3-2012 » la deuxième n° de facture est 2-3-2012 et ainsi de suite 3-3-2012,…50-3-2012 jusqu'à la fin des factures.
    Pour le mois 4 (avril) on aura la 1er facture 1-4-2012, 2-4-2012,….60-4-2012.
    A n’importe quelle mois un client peut demander sa facture des précédente mois càd :

    Nous sommes en mois d’avril un client veux sa facture du mois de janvier, il va avoir un numéro comme ça : X-1-2012 avec X est un nombre qui va suivre les factures du mois de janvier.

    Un essai de la BD est joint Pour une meilleure compréhension de mes phrases

  18. #18
    Invité
    Invité(e)
    Par défaut
    Re

    Ta requête s'exécute en même temps que l'ouverture de ton formulaire, et donc le champ texte4 n'est pas rempli (même si cela apparaît visuellement).

    Dans ton cas, d'où les explications, il faut utiliser une relation père/fils dans tes formulaires, donc à lire, c'est un état, mais c'est pareil sur les formulaires

    http://jeannot45.developpez.com/arti...ationsousetat/

    Et penses à renommer tes champs, je t'ai donné le lien, en général je n'interviens pas dans les discussions, dont le nom des champs n'est pas explicite.

    Philippe

  19. #19
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    merci de votre précieux temps consacré

    je laisse la discussion ouverte, comme ça toute solution à mon problème est la bienvenue.

    je vais ouvrir une autre discussion dans l'IHM comme ça je tenterais ma chanse à une autre solution.

    merci encore

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/08/2008, 12h46
  2. separer les valeurs d'un champ
    Par louarn dans le forum Outils
    Réponses: 5
    Dernier message: 05/10/2007, 14h41
  3. Champ vide mais champ.value.length > 0 ?...
    Par linou dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/04/2005, 11h22
  4. Update d'un champ grace à 2 champs différents
    Par albert69 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/03/2005, 15h40
  5. [CR] Afficher un champs lié à un champs d'une autre table
    Par Madduck dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 17/09/2003, 11h48

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