Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access

VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.

Réponse
 
Outils de la discussion
Vieux 09/10/2008, 10h42   #1 (permalink)
Invité de passage
 
Date d'inscription: mars 2008
Messages: 7
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 :
 
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.
taratata92400 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 11h13   #2 (permalink)
Expert Confirmé Sénior
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: RP
Âge: 24
Messages: 2 925
Envoyer un message via MSN à jpcheck
Par défaut

salut,
peux-tu nous montrer ce qui ressort de la concaténation des variables avec un Debug.Print stp ?
__________________
Piou-Piou
Poussin Developpeur

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

Mon perso ? Une vraie brute
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 11h29   #3 (permalink)
Invité de passage
 
Date d'inscription: mars 2008
Messages: 7
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 :
 
 
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 :
 
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 !
taratata92400 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 11h32   #4 (permalink)
Expert Confirmé Sénior
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: RP
Âge: 24
Messages: 2 925
Envoyer un message via MSN à jpcheck
Par défaut

bon ben faut revoir la V2, car IMO, elle ne passe pas même sous l'IHM Access
__________________
Piou-Piou
Poussin Developpeur

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

Mon perso ? Une vraie brute
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 14h32   #5 (permalink)
Invité de passage
 
Date d'inscription: mars 2008
Messages: 7
Par défaut

La "revoir", dans quel sens ? Et question sans doute bête mais c'est quoi "IMO" et "IHM" ???

Merci encore !
taratata92400 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 15h20   #6 (permalink)
Expert Confirmé Sénior
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: RP
Âge: 24
Messages: 2 925
Envoyer un message via MSN à jpcheck
Par défaut

la revoir ca signifie qu'elle est fausse, regarde le contenu
Code :
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.
__________________
Piou-Piou
Poussin Developpeur

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

Mon perso ? Une vraie brute
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 17h09   #7 (permalink)
Membre à l'essai
 
Date d'inscription: octobre 2007
Messages: 49
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";)
etoileetoile est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/10/2008, 18h13   #8 (permalink)
Invité de passage
 
Date d'inscription: mars 2008
Messages: 7
Par défaut

Citation:
Envoyé par jpcheck Voir le message
la revoir ca signifie qu'elle est fausse, regarde le contenu
Code :
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 :
 
 
 
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
taratata92400 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS ACCESSF.A.Q AccessF.A.Q VBATutorielsSourcesOutilsLivresAccess TVAccess 2007

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide