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

IHM Discussion :

concaténer deux champs par requêtes et affichage dans état gérant les étiquettes selon certaine conditions [Toutes versions]


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut concaténer deux champs par requêtes et affichage dans état gérant les étiquettes selon certaine conditions
    Bonjour,
    j'ai encore un petit problème, je voudrais mettre en place des étiquettes, pour le format et la disposition c'est simple, mais j'ai un problème avec l'adresse.

    Je m'explique, je voudrais avoir une disposition comme celle ci:
    Titre Nom Prénom
    Rue N° N°Boîte
    Code postal Ville

    J'ai un problème avec N° et N°Boîte, j'aimerais avoir quand il y a un N° boîte qu'il m'affiche quelque chose comme 56 bte5, et quand il n'y en a pas juste 56. J'avais pensé concaténer les deux champ et mettre entre la concaténation bte, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Nom et Statut client]![] & "bte" & [Nom et Statut client]![N°Boîte]
    Mais ca laisse en continu bte qu'il y ai ou non bte.

    J'ai pensé mettre un masque de saisie mais la requête de concaténation ne récupère pas le masque.
    J'avais essayé en direct mais je ne vois pas comment limité selon le cas dans un état de ce style (j'ai créer l'état avec le générateur d'étiquette d'access, donc chaque ligne est regroupée en bloc)

    Il y a peut être des conditions à mettre dans les critères afin de dire si N°boîte est vide alors on affiche pas le bte dans le champ concaténée, ou mettre dans l'état si il n'y a pas de boîte on n'affiche que le numéro.

    J'ai trouvé une solution en passant par deux requêtes de mise à jour et en ayant ceci comme critère pour la seconde :[Nom et Statut client]![Boîte] est Null, après il me suffit de faire appel ou non a la requête en arrière plan dans mes formulaires pour mettre à jour ce champ automatiquement, mais bon si je peux passer par une méthode plus simple limitant mon nombre de requête possible (un cas simple, je pourrais étalement ne pas avoir de N° mais un N° de boîte, ce serait une erreur que j'aurais du gérer mais j'envisage un cas possible, ca me ferait une requête supplémentaire).

    Je cherche donc un moyen fonctionnel de mettre de façon dynamique dans l'étiquette, le N° et la boîte si il existe avec entre eux bte.

    J'espère avoir été suffisamment clair, merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Utilise la fonction iif(), un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(not isnull([ChampBoite]);"Bte " & [ChampBoite];""))
    ça va rendre le texte Bte + ChampBoite conditionnel.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    merci ca fonctionne correctement, j'aimerais pouvoir lancer la requête à partir du formulaire d'enregistrement, j'utilise ce code la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenQuery "requête1"
    , soit à chaque fois que je passe à un nouvel enregistrement ou juste à chaque fois que je veux afficher les étiquettes, je réfléchi à ce qui serait le mieux, probablement à chaque enregistrements afin d'éviter d'avoir une requête gérant un grand nombre de cas au lieu d'un seul enfin la n'est pas le problème.

    Je voudrais pouvoir faire en sorte que la requête se lance sans demander de message de confirmation, j'ai trouvé comment le faire définitivement, mais je voudrais juste le faire pour ce cas la, si on sait pas je peux toujours les désactiver définitivement et ensuite passer par msgbox pour les cas où je veux un message de confirmation mais bon.

    J'espère avoir été clair.

    Edit: j'ai fini par troiuver j'utilise ceci pour désactivé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.SetWarnings False
    Et ceci pour réactivé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.SetWarnings False

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    À partir du VBA tu peux executer une requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dim db as dao.database
    db.querydefs("NomQuery").execute
    db.close:set db=nothing
    Dans ce cas Access ne demande pas de confirmation et n'affiche pas de message.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    je reviens ici car la solution ne fonctionne pas si bien que je le voudrais, j'ai un enregistrement pour lequel c'est correct, mais après j'ai des valeurs comme "1 Bte" alors que je devrais juste avoir 1.

    j'ai ce code ci dans ma requète mise à jour dans ce qui doit être mis à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [] & " " & VraiFaux(Pas EstNull([N°Boîte]);"Bte " & [N°Boîte];""
    Normalement si N°Boite est vide, il est censé n'afficher que la valeur du champ N°, mais pour une raison que je ne comprend pas il ne le fait pas.
    J'avais d'abord pensé que c'était une erreur de ma part à cause du masque de saisie mais on dirait pas, je l'ai supprimé et malgré tout il me fait encore cette erreur.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Points : 55
    Points
    55
    Par défaut
    essaie d'utilier ça pour voir si çamarche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [] & " " & VraiFaux([N°Boîte] Est Null;"";"Bte " & [N°Boîte])
    Où bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ] & " " & VraiFaux([N°Boîte] Est Pas Null;"Bte " & [N°Boîte];""

  7. #7
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    Merci de la réponse,
    J'ai essayé ce que tu me proposes mais il n'y a aucun changement.

    J'ai également essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [] & " " & VraiFaux(EstNull([N°Boîte]);"Bte " & [N°Boîte])
    Et j'obtiens exactement l'inverse, tout mes champs sont juste N° sauf le champ qui ne l'était pas avant qui maintenant vaut "N° Bte ". Je ne comprend pas ce qu'il me fait pour me donner des résultats pareil.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Points : 55
    Points
    55
    Par défaut
    ça affiche quoi quand le champ N° boite est vide ?

  9. #9
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    dans le premier des enregistrements qui possèdent un champ N°Boîte vide, je n'ai que le numéro, dans tout les autres cas où c'est vide j'ai N° Bte (donc le numéro et le texte Bte sans numéro venant de N°Boîte vu qu'il est vide) et pour les quelques cas restant j'ai N° Bte N°Boîte.

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Probalement parce que tu as des blancs à la place d'un null

    Un truc du genre devrait résoudre le problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(not isnull([ChampBoite]); iif(trim([ChampBoite])<>"";"Bte " & [ChampBoite];"");"")
    Trim enlève tous les blancs à gauche et à droite d'une chaîne. Si ta chaîne ne comporte que des blancs, tu obtients une chaîne vide représentée par "".

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Points : 55
    Points
    55
    Par défaut
    Si ton champ N° boite est numérique il ne peut pas être égale à un espace. donc le trim je ne pense pas que ça va t'aider. Si ton champ est de type text, converti le en numérique et toute les valeurs égale à un espace vont devenir null.

  12. #12
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    il n'est pas numérique, je ne peux pas, ni lui, ni le champ N°, j'ai parfois des numéro de maison comme 9a, et c'est la même chose pour le N°Boîte, si je les mets en numérique, je peux oublier ces cas là.

    Merci Marot r pour ton code, j'utilise trim pour un autre problème à côté et je n'ai même pas pensé à l'utiliser ici, à force de trop se disperser on ne voit plus si facilement la solution qui s'offre à nous.

    Merci à vous deux pour l'aide que vous m'avez apporté. Passez une bonne fin de journée.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 65
    Points : 55
    Points
    55
    Par défaut
    ah okay je n'avais pas penser à ça, dans ce cas effectivement trim te sauve la vie!
    A+

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/08/2014, 11h02
  2. Concaténer deux champs dans une table
    Par Yamina62 dans le forum Modélisation
    Réponses: 4
    Dernier message: 30/09/2013, 14h11
  3. [WD10] Requête pour affichage dans un champ
    Par esprit13 dans le forum WinDev
    Réponses: 11
    Dernier message: 14/03/2011, 15h15
  4. concaténer deux champs dans un état
    Par isabelle b dans le forum IHM
    Réponses: 4
    Dernier message: 24/06/2008, 19h42
  5. Réponses: 4
    Dernier message: 10/10/2007, 15h31

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