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 :

Code SQL pour un "SI"


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Par défaut Code SQL pour un "SI"
    Bonjour,

    context:j'ai un état qui génère un listing et affiche des montants,ce listing vient d'une seul requête mise à jour par des requetes externes avec un autre logiciel.

    Je voudrais effectuer l'opération suivante:
    Si le champ "montant1" élement de ma requête = 0 (table1)alors prendre le champs "montant2" également élement de ma requête mais venant d'une autre table(table2).

    J'aurais aimé savoir quel aurais été le code sql (jointure?) pour access et où le taper(nouvelle requête, critère...)?

    Merci d'avance.

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 102
    Par défaut
    salut,
    je te suggère de faire deux requêtes distinctes, où tu effectues une condition en VBA, pour choisir laquelle tu utilises..
    Pour le si en SQL je ne connais pas..

  3. #3
    Membre éclairé Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Par défaut
    Il existe la fonction Iif .......

    Regarde l'aide Access sur cette fonction

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    tu aurais pu continuer le précédent message :
    http://www.developpez.net/forums/sho...d.php?t=166843

    ça évite de demander des précisions déjà données, et de donner des réponses déjà données

    facile de faire une requête sur deux tables, tu mets tes deux tables, tu "tires" une jointure entre deux champs, et tu vois ce que ça donne

    sans plus de précision et sans montrer ce que tu as tenté de faire ça ressemble à un "up" en attendant qu'on t'écrive la requête...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Par défaut
    Dsl pour le post inutilement rajouté.

    J'ai oublier de préciser quelques chose d'assez important.Pour faire une jointure : deux tables sont liées ensemble dans l'onglet:'RELATIONS' mais ici , les tables qui m'interessent sont des tables externes donc impossible à liées dans mon cas.

    Je ne peux donc modifier ou creer que des requêtes mais le Sql me pose problème car je ne sais pas réellement quelle est la syntaxe.

    merci

  6. #6
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    tu peux faire une jointure dans une requête même si aucune relation n'est définie dans la fenêtre des relations

    et si tu ne connais pas le SQL tu fais ça en mode graphique sans problème
    la formule que je t'ai donnée dans l'autre message (ben oui ça complique les choses d'ouvir un deuxième message) est à placer à la place du nom de champ.

    Pour les jointures dans les requêtes :
    http://mhubiche.developpez.com/Access/tutoJointures/

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Par défaut
    Merci arkham

    je me permet de te demander une dernière question:
    J'ai écrit la jointure mais j'ai une erreur de syntaxe,est ce que cela pourrais venir des parenthèses du champs ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valorisation transaction (valeur absolue)

    Expression:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MontantFinal:IIF([dbo_Transaction_Stock].valorisation transaction (valeur absolue)<>0;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (suite)
    [dbo_Transaction_Stock].valorisation transaction (valeur absolue);[dbo_OrdresOD_OR].[ValeurMvt])
    TABLES:
    _dbo_Transaction_Stock
    _dbo_OrdresOD_OR

    Attributs:
    _valorisation transaction (valeur absolue)
    _ValeurMvt

  8. #8
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    c'est un nom de champ ça?
    valorisation transaction (valeur absolue)
    ça ressemble plutôt à une description
    évite les noms de champs à rallonge, avec des espaces, des caractères spéciaux et autre fantaisie
    les propriétés description et légende sont là pour ça, le nom de champ doit être simple sinon tu es embêté tout le temps avec ce genre d'erreur, et en plus tu risques de ne plus avoir assez de place pour écrire ta requête.

    ceci dit mets le nom de ce champ entre crochet.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Par défaut
    merci arkham j'ai suivis tes conseils ,

    Je ne peux pas changer le nom des champs car ce sont des noms d'attributs externe(table externe)liés à un autre logiciel de gestion.


    Mon état affiche un libellé, un code, une famille... + Le MONTANT.
    Cet état est generé grace à une requête où j'ai inseré grace à ton aide ce bout de sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montant: VraiFaux([JMaJSortie].[montant]<>0;[JMaJSortie].[montant];[T_Montant].[Montant])
    Ce champs "montant"(au dessus)est selectionné par l'état.

    Je souhaites que dans mon état(qui est un listing) toute les lignes apparaissent.C'est à dire que pour le moment seul les lignes avec les montants de la table T_montant s'affiche alors que certain sont <> 0 et donc devrais apparaitre.

    [précision: La liaison T_montant et JMaJSortie se fait avec le champs "Code" ce champs code n'est renseigné que pour les codes où je sais que les montants dans JmaJSortie("JMaJSortie.[montant]")égale à 0.]

    En retournant le problème dans tout les sens je ne comprend pas pourquoi les autres lignes <>0 n' apparaissent pas. Merci de Votre aide

  10. #10
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    slt,

    peut-être le type de jointure à changer

    les jointures sont bien expliquées dans le tutos
    change la jointure pour prendre tous les enregistrements de JMaJSortie si j'ai bien compris

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Par défaut
    JE TE REMERCIE POUR TOUT arkham,

    J'aurais juste une dernière question avant de mettre le [Résolu] (tant convoité )
    J'ai un petit formulaire d'ajout qui ajoute plusieurs champs dans une table,sauf que l'utilisateur n'est pas obliger de remplir tous les champs.Donc peu m'importe si des champs dans la table sont vide.
    Le problème est que Access m'affiche une erreur car il ajoute des champs vide et creer un conflit avec la clé primaire aparement.

    Aurais tu une petite astuce pour eviter cela?(ou ne pas afficher l'erreur)

    ps: Dsl de poster sa ici si sa n'as pas sa place

    Un Grand Merci

  12. #12
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Slt,

    avec les fonctions Nz et/ou IsError tu devrais pouvoir t'en sortir

    il y a déjà eu ce genre de question sur le forum

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Par défaut
    Oo oh oui! en effet j'ai pas fais attention.Allez je cloture cette discussion et te dit : "MERCI"

    @+

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

Discussions similaires

  1. Extraire le code sql pour documentation
    Par guidav dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/06/2006, 13h11
  2. Création BD Access Code SQL pour relation 1-1 ?
    Par colorid dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/10/2005, 17h42

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