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

VBA Access Discussion :

Requête SQL- > VBA


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Requête SQL- > VBA
    Bonjour à tous,

    Je souhaiterais crééer parametrer une requête (notamment le nom de la table) en vba.
    Ci- dessous ma "sub":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Sub RunSplitMargeFI(nom_table1 As String)
     
    Dim bd As DAO.Database
    Set bd = CurrentDb
     
    Dim SigmaProvTech1 As DAO.QueryDef
     
     
    Set SigmaProvTech1 = bd.CreateQueryDef("SigmaProvTech1_VB", "SELECT DISTINCT " & nom_table1 & ".[Legal], " & nom_table1 & ".Reinsurance, " & nom_table1 & ".Partner, " & nom_table1 & ".Risk, Sum((" & nom_table1 & ".[Champ1] + " & nom_table1 & ".[Champ4] - " & nom_table1 & ".[Champ2] )/2) AS TotalReservesBase1" _
     
    & "FROM " & nom_table1 & "" _
    & "GROUP BY " & nom_table1 & ".[Legal], " & nom_table1 & "" _
    & ".Reinsurance, " & nom_table1 & ".Partner, " & nom_table1 & ".Risk")
    Lorsque j'appelle la procédure, l'erreur générée est la suivante : " Erreur 3141: Dans l'instruction SELECT, un mot reservé ou un argument est mal orthographié ou absent, ou la ponctuation est incorrecte. "

    Ce n'est pourtant pas la première requête de ce type que j'écris, mais je n'arrive toutefois pas à comprendre d'où vient le bug sachant que cette même requête a été préalablement testée en SQL avant de la retranscrire en VBA.

    Merci d'avance pour votre aide.

    Louis.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    salut,
    peux-tu nous montrer ce qui ressort de la concaténation des variables avec un Debug.Print stp ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    salut,
    peux-tu nous montrer ce qui ressort de la concaténation des variables avec un Debug.Print stp ?

    Oui biensûr pour le log . en fait j'ai mis une version "agrégée" de la requête car celle-ci est plutôt longue, toutefois je te met le log des 2 versions (sachant que c'est sur la deuxième que ca plante) :

    V1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    SELECT DISTINCT Table.[Legal], Table.Reinsurance, Table.Partner, Table.Risk, Sum((Table.[Champ1] + Table.[Champ4] - Table.[Champ2] )/2) AS TotalReservesBase1 FROM Table GROUP BY Table.[Legal], Table.Reinsurance, Table.Partner, Table.Risk
    V2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT DISTINCT Table.[Legal], Table.Reinsurance, Table.Partner, Table.Risk, Sum((Table.[Champ1] + Table.[ChaSELECT DISTINCT Table.[Legal entity], Table.Reinsurance, Table.Partner, Table.Risk, Sum((Table.[IBNR bop] + Table.[IBNR eop] + Table.[RBNS bop] + Table.[RBNS eop] + Table.[Claim handling reserve bop] + Table.[Claim handling reserve eop] + Table.[UPR bop]+Table.[UPR eop]+Table.[Unexpired Risk Reserve bop] + Table.[Unexpired Risk Reserve eop] + Table.[Active Life Reserve bop]+Table.[Active Life Reserve eop] + Table.[Mathematical Reserve bop] + Table.[Mathematical Reserve eop]+Table.[Premium Accruals bop] + Table.[Premium Accruals eop] - Table.[Dac bop] - Table.[Dac eop])/2) AS TotalReservesBase1FROM TableGROUP BY Table.[Legal entity], Table.Reinsurance, Table.Partner, Table.Risk
    mp4] - Table.[Champ2] )/2) AS TotalReservesBase1 FROM Table GROUP BY Table.[Legal], Table.Reinsurance, Table.Partner, Table.Risk
    Merci pour ton aide !

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    bon ben faut revoir la V2, car IMO, elle ne passe pas même sous l'IHM Access
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    La "revoir", dans quel sens ? Et question sans doute bête mais c'est quoi "IMO" et "IHM" ???

    Merci encore !

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    la revoir ca signifie qu'elle est fausse, regarde le contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table.[ChaSELECT DISTINCT...
    qui me parait peu viable

    pour les noms, pardon, c'est du jargon :
    - IMO = "In My Opinion" en anglais, soit "A Mon Avis" (AMA)
    - IHM = "Interface Homme Machine", ton environnement utilisateur, les fenetres Access dans lesquelles tu évolues.


    edit : de plus, le nom table est un nom dédié et spécifique au langage SQL, tu ne peux pas l'utiliser comme nom de variable.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Points : 80
    Points
    80
    Par défaut
    & "FROM " & nom_table1 & "" _
    & "GROUP BY " & nom_table1 & ".[Legal], " & nom_table1 & "" _
    & ".Reinsurance, " & nom_table1 & ".Partner, " & nom_table1 & ".Risk")

    Ne manque t-il pas un ";" ici = ".Risk";)

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    la revoir ca signifie qu'elle est fausse, regarde le contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table.[ChaSELECT DISTINCT...
    qui me parait peu viable

    pour les noms, pardon, c'est du jargon :
    - IMO = "In My Opinion" en anglais, soit "A Mon Avis" (AMA)
    - IHM = "Interface Homme Machine", ton environnement utilisateur, les fenetres Access dans lesquelles tu évolues.


    edit : de plus, le nom table est un nom dédié et spécifique au langage SQL, tu ne peux pas l'utiliser comme nom de variable.
    JP,

    Merci pour ces informations (le jargon rentre ). Sinon concernant le debug, j'ai corrigé l'erreur que tu m'as signalée (pour le nom "Table", j'ai mis ca car dans ma fonction c'est le parametre "nom_table1").

    Voici donc mon dernier debug:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     
    SELECT DISTINCT PR_2007Q2_a_1.[Legal entity], PR_2007Q2_a_1.Reinsurance, PR_2007Q2_a_1.Partner, PR_2007Q2_a_1.Risk, Sum((PR_2007Q2_a_1.[IBNR bop] + PR_2007Q2_a_1.[IBNR eop] + PR_2007Q2_a_1.[RBNS bop] + PR_2007Q2_a_1.[RBNS eop] + PR_2007Q2_a_1.[Claim handling reserve bop] + PR_2007Q2_a_1.[Claim handling reserve eop] + PR_2007Q2_a_1.[UPR bop]+PR_2007Q2_a_1.[UPR eop]+PR_2007Q2_a_1.[Unexpired Risk Reserve bop] + PR_2007Q2_a_1.[Unexpired Risk Reserve eop] + PR_2007Q2_a_1.[Active Life Reserve bop]+PR_2007Q2_a_1.[Active Life Reserve eop] + PR_2007Q2_a_1.[Mathematical Reserve bop] + PR_2007Q2_a_1.[Mathematical Reserve eop]+PR_2007Q2_a_1.[Premium Accruals bop] + PR_2007Q2_a_1.[Premium Accruals eop] - PR_2007Q2_a_1.[Dac bop] - PR_2007Q2_a_1.[Dac eop])/2) AS TotalReservesBase1FROM PR_2007Q2_a_1GROUP BY PR_2007Q2_a_1.[Legal entity], PR_2007Q2_a_1.Reinsurance, PR_2007Q2_a_1.Partner, PR_2007Q2_a_1.Risk
    Maintenant ca marche nickel !

    En fait j'avais pas pensé a utilisé le debug pour reconvertir ma requete VBA en SQL et la faire tourner dans un "IHM" .

    Merci pour ton aide !!!

    Bonne soirée.

    Louis

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

Discussions similaires

  1. Requête SQL en VBA
    Par taisherg dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/06/2007, 15h36
  2. Requête SQL en VBA
    Par e040098k dans le forum VBA Access
    Réponses: 14
    Dernier message: 27/04/2007, 11h50
  3. Réponses: 6
    Dernier message: 15/02/2007, 13h46
  4. Récupérer la valeur des champs calculés dans une requète SQL dans vba
    Par FrédéricCM dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/06/2006, 16h29
  5. Conversion d'une requête SQL en VBA
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/10/2004, 17h33

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