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 :

renvoi d'un code en fonction de la valeur de la variable.


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut renvoi d'un code en fonction de la valeur de la variable.
    Bonjour,

    pour affecter un cout transport en fonnction du poid d'une commande, il me faut attribuer un code pour chaque tranche du transporteur. ex : si le poid est entre 0 et 500 g, code A, si'l est entre 501 et 1000 gr, code B etc... je voudrais l'inclure dans ma requete, mais je ne vois pas bien comment faire.

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Plusieurs solutions :

    1. Utilisation de iif (acceptable si le nombre d’occurrences n'est pas contraignante)

    ici : http://www.developpez.net/forums/d45...when-requetes/

    2. Création d'un code VBA utilisable dans ta requête (tu pourras ainsi utiliser dans cette fonction le select case)

    ici :

    http://www.developpez.net/forums/d11...-l-expression/

    3. Reprendre ton modèle et affecter dans une table un identifiant, le code, le poids mini et poids maxi. La saisie d'une article sur ton formulaire te permettra ainsi d'associer le code directement dans la fiche colis (par une requête SQL).

    Tu rajouteras ainsi (via ton code l'identifiant) et une jonction te permettra aisément de ressortir le code. Cette technique plus contraignante à la base a la particularité d'être plus facilement maintenable. Si demain les conditions d'affectation des codes changent, il suffit simplement de modifier les valeurs dans la table (le point 1 t'oblige à reprendre ta requête, le point 2 ton module)

    Voilà des pistes à explorer

    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Peut-être une idée dans ce tutoriel Comment rechercher une valeur dans une table qui contient des paliers.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    J'ai regarde le tuto mais ca ne me convient pas trop, je prefer une fonction vba, je crois que c'et plus clair.

    voici ce que j'ai fait et qui marche. c'est une premiere etape. j'appelle la fonction dans ma requette et j'y insere en automatique la variable poid.

    Function codetransport(poid As String) As String
    codetransport = Switch(poid < 50, "A", poid < 100, "B", poid < 250, "C")
    End Function

    mais, il me faudrait maintenant integrer une seconde variable puis une troisieme que sont les variable pays et express. mon probleme est que je ne sais pas transmettre mes variable pays et express dans la fonction.

    la fonction devrait alor etre du genre

    Function codetransport(poid As String) As String

    if var-pays = "FR" then
    codetransport = Switch(poid < 50, "A", poid < 100, "B", poid < 250, "C")
    if var-pays = "zone 1" then
    codetransport = Switch(poid < 50, "D", poid < 100, "E", poid < 250, "F")

    End Function

  5. #5
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    strouve

    plutot comme cela

    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
    25
    26
    27
    Function codetransport(poid As String, VarPays As String) As String
     
    Select Case VarPays
        Case "FR"
            Select Case Val(poid)
                Case Is < 50
                    codetransport = "A"
                Case Is < 100
                    codetransport = "B"
                Case Is < 250
                    codetransport = "C"
                Case Else
                    codetransport = "?"
            End Select
        Case "zone 1"
        Select Case Val(poid)
            Case Is < 50
                codetransport = "D"
            Case Is < 100
                codetransport = "E"
            Case Is < 250
                codetransport = "F"
            Case Else
                codetransport = "?"
        End Select
    End Select
    End Function
    un case else permet de gérer le cas non prévu !

    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour strouve, Claude, Jean-Marie,

    Si je peux me permettre un commentaire la solution:
    3. Reprendre ton modèle et affecter dans une table un identifiant, le code, le poids mini et poids maxi. La saisie d'une article sur ton formulaire te permettra ainsi d'associer le code directement dans la fiche colis (par une requête SQL).
    Est beaucoup plus maniable et évolutive. Codé en dur toutes les possibilités est très restrictif et demande des changements dans l'application à la moindre modification. Supposons un nouveau client dans une nouvelle zone ou pays???

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  7. #7
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Robert, strouve

    Parfaitement ce qui nous renvoie sur le tuto de Claude ou l'utilisation d'une requête incluant un critère sur le poids.

    Jm
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  8. #8
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci pour cela, pour ce qui est de la table en attaché, c'est bien le but.
    je cré une requete qui me renvoie le code A,B,C etc en fonction du poid. et je lie ce code a ma liste d'expedition,A,B,C pour chaque tranche de poid mini, poid max, tarif ht et zone. et je lie cette derniere avec une autre table pour les taxes gazoil (evolutive chaque mois), tva(evolutive on sait plus trop), frais emballage et carton et un taux en pourcenatge pour les petites augmentations . Ce qui me fait deux tables a mettre a jour et via un formulaire un acces assez simple.

    ca devrait pas etre mal.


    merci a tous.

  9. #9
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    strouve,

    Nous n'avions pas parlé du Gasoil mais oui l'idée est bien là !

    Du fait un utilisateur pourra maintenant alimenter et maintenir cette table sans faire appel à un spécialiste Access

    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/04/2013, 16h28
  2. Réponses: 7
    Dernier message: 20/02/2012, 09h01
  3. Réponses: 13
    Dernier message: 07/11/2011, 15h41
  4. [AC-2007] Comment exécuter un code en fonction d'une valeur?
    Par tomga dans le forum VBA Access
    Réponses: 9
    Dernier message: 10/09/2009, 14h59

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