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

MS SQL Server Discussion :

Ajout de critères dans Select utilisé par xp_sendmail


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Ajout de critères dans Select utilisé par xp_sendmail
    Dans une procédure stockée je fais un xp_sendmail qui renvoie le contenu d'une table. Ca marche avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SET @lrequete = 'SELECT * FROM MaTable'
     
    EXEC [master].[dbo].xp_sendmail @recipients = 'Destinataire', @query = @lrequete, @subject = 'Envoi mail avec fichier joint', @echo_error = 'TRUE', @attach_results = 'TRUE', @width = 250
    Mais je souhaite ajouter un critère à ma requête, et si je tape ça, ça ne marche plus, ou du moins ça me renvoie un mail vide, sans fichier joint.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET @lrequete = 'SELECT * FROM MaTable WHERE champ1 =' + @lparam1

    Je suis sûr qu'il y a un pb de syntaxe qq part mais je cherche depuis un bon moment sans succès.



    Merci

  2. #2
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    quel est le type de @lparam1 et es tu sur que ta condition est verifiee ?

    a+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Pour mon test @lparam est un varchar, j'aurais ensuite une date à passer mais on verra après ...

    (Je suis certain de ma condition)


    Merci

  4. #4
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Essayes en specifiant le nom de ta base et le proprietaire des objets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET @lrequete = 'SELECT * FROM Base.dbo.MaTable as MaTable WHERE MaTable.champ1 =' + @lparam1
    a+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SET @lparam = '''texte'''
    	SET @lrequete = 'SELECT * FROM MaBase.dbo.MaTable WHERE MaTable.champ1= ' + @lparam
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SET @lparam = 'texte'
    	SET @lrequete = 'SELECT * FROM MaBase.dbo.MaTable WHERE MaTable.champ1= ' + @lparam
    et même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SET @lparam = 'texte'
    	SET @lrequete = 'SELECT * FROM MaBase.dbo.MaTable WHERE MaBase.dbo.MaTable.champ1= ' + @lparam
    et rien ne marche, je reçois le mail avec un O (pas 0 mais O comme Oscar) dans le corps mais c'est tout, pas de données

    En fait ma requête doit être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM MaTable WHERE Champ1 = 'texte'
    où texte est entre simple quote, mais il doit manquer des quotes ou trop y en avoir !!! Bref je n'y arrive pas



    Merci pour tes réponses

  6. #6
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Je viens de tester ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    declare @lrequete varchar(255)
     
    declare @champ varchar(255)
     
    set @champ = '''texte'''
     
    SET @lrequete = 'SELECT * FROM base..table WHERE champ = ' +  @champ
     
    EXEC master..xp_sendmail @recipients = 'Destinataire', @query = @lrequete, @subject = 'Envoi mail avec fichier joint', 
    @echo_error = 'TRUE', @attach_results = 'TRUE', @width = 250

    et ca fonctionne bien.

    a+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci, mais j'ai une dernière question. Comme je disais dans mon 1er message, je souhaite passer une date comme paramètre mais si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set @champ = '''28/05/2004''' 
     
    SET @lrequete = 'SELECT * FROM intranetmeister.dbo.GES_MODIF WHERE mdf_datmod = ' +  @champ
    Ca marche, mais si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set @champ = '' + convert(varchar, getdate(), 103) + ''
     
    SET @lrequete = 'SELECT * FROM intranetmeister.dbo.GES_MODIF WHERE mdf_datmod = ' +  @champ
    Ca marche pas. Encore un pb de quote surement ...

    Par la même occasion peux tu me dire comment récupérer la date de la veille (le getdate() - 1 jour)


    Merci

  8. #8
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Par la même occasion peux tu me dire comment récupérer la date de la veille (le getdate() - 1 jour)
    utilise la fonction DATEADD et "ajoute" -1 jour, on peut aussi dire soustrait un jour

    Ca marche pas. Encore un pb de quote surement ...
    mets un :
    pour afficher ta requete et voir si elle est bien formee.

    a+

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    OK, tout fonctionne. Pour la date il fallait taper :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET @champ = '''' + convert(varchar, getdate(), 103) + ''''
    Je vais tester le DATEADD en "ajoutant" -1


    Merci, c'est fou le temps que j'ai gagné et tout ce que j'ai appris (en peu de temps)

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

Discussions similaires

  1. [XL-2007] Ajouter un bouton dans un userform par macro
    Par mimidodo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/11/2015, 13h31
  2. [AC-2003] Définir un critère dans une requête par du code
    Par kiki.gaby dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/06/2009, 17h14
  3. Ajout de nodes dans un treeview par le client en asp.net
    Par thewaterkidny dans le forum ASP.NET
    Réponses: 3
    Dernier message: 23/04/2007, 17h24
  4. Réponses: 12
    Dernier message: 28/03/2007, 18h00
  5. ajout champ text dans select
    Par maximenet dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/03/2006, 11h38

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