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

Développement SQL Server Discussion :

[SQL2K][TSQL][VBA]Message de sortie en fonction du résultat de la requete


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 29
    Points : 21
    Points
    21
    Par défaut [SQL2K][TSQL][VBA]Message de sortie en fonction du résultat de la requete
    Bonjour,
    Voulant faire une selection de lignes dans plusieurs tableau avec une condition j'ai ecrit ce
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    IF ( (SELECT count(*) FROM tbl_Projet WHERE PtrIdClient = 96) = (SELECT count(*) FROM tbl_Projet WHERE PtrIdClient = 96 AND oEtatProjet = 0))
    BEGIN
    SELECT * FROM tbl_Elevation WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE *PtrIdClient = 96)
    SELECT * FROM tbl_Elevation_Annexes WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE *PtrIdClient = 96)
    SELECT * FROM tbl_Elevation_Details WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE *PtrIdClient = 96)
    SELECT * FROM tbl_Elevation_Element WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE *PtrIdClient = 96)
    SELECT * FROM tbl_Elevation_Exemplaire WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE *PtrIdClient = 96)
    SELECT * FROM tbl_Elevation_InfoSAI WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE *PtrIdClient = 96)
    SELECT * FROM tbl_Elevation_Prix WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE *PtrIdClient = 96)
    SELECT * FROM tbl_Elevation_PtBois WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE *PtrIdClient = 96)
    SELECT * FROM tbl_Elevation_Traverse WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE *PtrIdClient = 96)
    SELECT * FROM tbl_Clients WHERE IdClient = 96 
    END
    Le truc c'est que j'aimerai afficher un message via VBA pour savoir si la condition était remplie ou si elle ne l'était pas ( en rajoutant un ELSE dans le code) mais je ne sais pas comment faire, j'ai voulue essayer avec RETURN et voir si il y avait possibilité de différencier les valeurs du RETURN dans VBA mais cela bloque déjà dans SQL car ce n'est pas possible d'utiliser un return dans une condition IS/ELSE .
    Si quelqu'un a une idée de comment faire je suis preneur

    En vous remerciant d'avance

    Arthur

  2. #2
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    Bonjour,
    Pourrais-tu un peu mieux décrire ce que tu souhaites ? Et le cadre de ce que tu fais ?
    Franchement j'ai beau relire ton message, ce n'est pas compréhensible !
    C'est une appli VBA qui attaque une base de données SQL Server en appelant une procédure stockée ?
    Et puis ?

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Vous pouvez simplement vérifier si la procédure renvoie des recordsets ou pas...

    Notez également, qu'il est tout à fait possible de mettre un RETURN dans un bloc ELSE, vous avez dû mal vous y prendre.

    Enfin, je vous recommande d'apprendre les jointures et d'éviter les SELECT * les performances seraient bien meilleures...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Bonjours,
    excusé moi du délais de réponse.

    comment devrai je placer le return ?
    Les SELECT * sont destiné à devenir des DELETE *

    Le programme devra consisté à supprimé tout les liens d'un clients sélectionner si et SEULEMENT si il n'a jamais fait de commande (oEtatProjet=0 pour aucune commande) et bien sur le return me servirai a connaître la "réponse" , si il a exécuter le if ou le else

    Merci d'avance pour vos réponses, en espérant que vous passiez de bonnes fetes
    Cordialement
    Arthur

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Suite a mon precedent message, n'y a t'il pas moyen d'utiliser un PRINT ?
    j'essaie mais comment je débute vraiment sur le transact je pense que je le place mal car je n'ai aucun message du au PRINT, peut on me montrer des exemples ou me l'ajouter directement dans le code ?
    Merci d'avance.
    Arthur.

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Vous pouvez bien utiliser RETURN :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    IF ...
    BEGIN
        DELETE ...;
        DELETE ...;
        RETURN 0;
    END
    RETURN 1;
    Si la condition est remplie, la procédure renverra 0, sinon elle renverra 1

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par UnlimitedEden Voir le message
    Le programme devra consisté à supprimé tout les liens d'un clients sélectionner si et SEULEMENT si il n'a jamais fait de commande (oEtatProjet=0 pour aucune commande)
    Bonjour,

    Sauf que dans la requête que vous proposez, il n'y a aucun filtre sur une colonne "oEtatProjet"

    Laquelle de vos tables est celle des commandes ? Dans quelle table se trouve la colonne "oEtatProjet" ?

    Quoi qu'il en soit, d'après ce que je comprends de votre besoin, il semble qu'une requete utilisant NOT EXISTS serait une solution préférable à celle que vous envisagez :
    vérifiez qu'il n'existe pas de commande pour laquelle "oEtatProjet" = 'O'

    EDIT : désolé j'avais mal lu votre requête , en relisant j'ai trouvé votre test sur la colonne oEtatProjet=0.
    Du coup ça confirme ce que je soupçonnais, vous pouvez simplifier ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    IF NOT EXISTS 
         (select 1 
          FROM tbl_Projet 
          WHERE PtrIdClient = 96
            AND oEtatProjet = 0)
    BEGIN 
       DELETE FROM tbl_Elevation ...

Discussions similaires

  1. [MySQL] afficher une requete en fonction de résultats d'autres requetes
    Par mayers dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/07/2007, 10h42
  2. [VBA-E] bouton dynamique avec fonction
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 38
    Dernier message: 06/02/2006, 12h43
  3. [debug VBA]Message erreur 2499 seulement en mode debug
    Par manujuggler dans le forum Access
    Réponses: 4
    Dernier message: 05/01/2006, 22h17
  4. [VBA]comptage de lignes en fonction du contenu des cellules
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/12/2005, 11h38
  5. [VBA] Message de sécurité ?
    Par liop49 dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 15/10/2005, 11h04

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