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 :

VBA avec requête SQL


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 108
    Points : 61
    Points
    61
    Par défaut VBA avec requête SQL
    Je ne comprends pas pourquoi ma requête ne s'exécute pas.
    Quan je lance ce code il passe ma requête sans l'exécuter et sans me mettre d'erreur. Il ne me demande jamais le paramêtre value de ma semaine.
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Dim db As DAO.Database, qry As QueryDef
        Dim rs As DAO.Recordset
        Dim mail, erreur As String
        Dim entreprise As String
     
     
     
        Set db = CurrentDb
        'On Error Resume Next
        Set qry = db.QueryDefs("ReqEmail")
        If Err.Number <> 0 Then
            Set qry = db.CreateQueryDef("ReqEmail")
            Err.Clear
        End If
     
        'On Error GoTo Err_buEnvoiMail_Click
        Set rs = CurrentDb.OpenRecordset("SELECT [MaisonTest].Entreprise, [MaisonTest].[EMail] FROM [MaisonTest];")
        While Not rs.EOF
     
            qry.SQL = "PARAMETERS semaine Value;" & _
            " SELECT Regie_base2.Societe, [Rqt_base_Analyse croisée].semaine,[MaisonTest].N° AS Code," & _
            " [MaisonTest].Entreprise, Last(Regie_base2.Branche) AS DernierDeBranche, Last([MaisonTest].Nom) AS Reference, Last([MaisonTest].Rue) AS DernierDeRue," & _
            " Last([MaisonTest].Npa) AS DernierDeNpa, Last([MaisonTest].Ville) AS DernierDeVille, Last([MaisonTest].Fax) AS DernierDeFax, Last(Regie_base2.Qualite) AS DernierDeQualite, " & _
            " Last(Regie_horaire.Matricule) AS DernierDeMatricule, Last(Regie_base2.Nom) AS DernierDeNom, Last(Regie_base2.Prenom) AS DernierDePrenom, Last(Regie_base2.Centre_cout) AS DernierDeCentre_cout," & _
            " Last([Rqt_base_Analyse croisée].[Total de Heures]) AS [DernierDeTotal de Heures], Last(Regie_base2.Tarif) AS DernierDeTarif, Last(([Total de Heures]*[Tarif])) AS Montant, [Rqt_base_Analyse croisée].lundi," & _
            " [Rqt_base_Analyse croisée].mardi, [Rqt_base_Analyse croisée].mercredi, [Rqt_base_Analyse croisée].jeudi, [Rqt_base_Analyse croisée].vendredi" & _
            " FROM ([Rqt_base_Analyse croisée] LEFT JOIN Regie_horaire ON [Rqt_base_Analyse croisée].Matricule = Regie_horaire.Matricule) LEFT JOIN (Regie_base2 LEFT JOIN [MaisonTest] ON Regie_base2.Code = [MaisonTest].N°)" & _
            " ON [Rqt_base_Analyse croisée].Matricule = Regie_base2.Matricule" & _
            " WHERE [MaisonTest].Entreprise = " & Chr(34) & rs("Entreprise") & Chr(34) & _
            " GROUP BY Regie_base2.Societe, [Rqt_base_Analyse croisée].semaine, [MaisonTest].N°, [MaisonTest].Entreprise, [Rqt_base_Analyse croisée].lundi, [Rqt_base_Analyse croisée].mardi, [Rqt_base_Analyse croisée].mercredi, [Rqt_base_Analyse croisée].jeudi, [Rqt_base_Analyse croisée].vendredi" & _
            " HAVING (((Regie_base2.Societe) = 'cimo') And (([Rqt_base_Analyse croisée].semaine) = [semaine]))" & _
            " ORDER BY [MaisonTest].Entreprise DESC;"
     
            entreprise = rs("Entreprise")
            mail = rs("EMail")
     
            If (mail <> "") Then
            DoCmd.SendObject acReport, "etEmail", acFormatSNP, mail
            Else
            erreur = MsgBox("Pour cette entreprise il n'y a pas d'email valide.", vbOKOnly, "Email invalide")
            End If
     
     
     
            rs.MoveNext
        Wend
    rst.Close
    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    Essaie après le nom du paramètre de mettre le type du paramètre.

    A+

  3. #3
    Membre régulier Avatar de Sonic
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Points : 96
    Points
    96
    Par défaut
    Salut
    Je sais pas à quoi tu destines cette requete mais c'est normal tu n'exécute jamais ton QueryDefs, un petit qry.openrecordset ferait pas de mal

  4. #4
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Tu n'utilises pas les querydef comme il faut :

    Exemple d'utilisation :

    Code VB : 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
     
    Sub test()
      Dim db As Database
      Dim re As Recordset
      Dim qu As QueryDef
     
      Set db = CurrentDb()
      Set qu = db.QueryDefs("Test")
      qu.Parameters("[Param]") = 12
     
      Set re = qu.OpenRecordset
     
      '.... ton code
     
      re.Close
      qu.Close
      db.Close
    End Sub

    Sur cet exemple, je part du principe que j'ai une requete mémorisé dans Acces le nom de "Test", cette requete attendant un paramètre du nom de 'Param'.

    1) Je référence ma requete :
    set qu=db.querydef("Test")


    2) J'attribue la valeur a mon paramètre
    qu.parameters("[Param]") = 12

    3) Et j'ouvre mon recordset basé sur la requete précédente
    Set re=qu.openrecordet (c'est ca qu'il te manque)

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 108
    Points : 61
    Points
    61
    Par défaut
    Je comprend pas trop ce qu'il faut ajouter.
    Le but de mon code est d'envoyer un Etat par mail. Cet Etat a comme source ma requête que je modifie a chaque passage de ma boucle. Donc jaimerais qu'elle se sauvegarde chaque fois...
    Et ma question est : Pour quoi elle ne me demande pas la valeur de ma semaine. Quand je la lance en SQL elle le fait!

    Je comprend pas trop ce que vient faire le : openrecordset ??

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Tu veux l'envoyer comment ton état par mail ?

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 108
    Points : 61
    Points
    61
    Par défaut
    Avec : DoCmd.SendObject acReport, "etEmail", acFormatSNP, mail

    ça envoie par mail mon état avec l'adresse email correspondante.

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

Discussions similaires

  1. [AC-97] VBA et manipulation de BDD avec requêtes SQL
    Par tuvia dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/07/2012, 21h03
  2. Réponses: 2
    Dernier message: 28/12/2008, 15h28
  3. Problème avec requête SQL dans VBA
    Par Mimisio dans le forum VBA Access
    Réponses: 10
    Dernier message: 13/07/2007, 11h00
  4. [VBA-E] Requète SQL avec chemin de base de données variable
    Par Svart26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 13h29
  5. [VBA-A] Requête SQL
    Par Berny03 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 24/11/2005, 21h16

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