Requête en fonction VBA

Le
orange
Bonjour à tous,

Je suis nouveau en VBA et j'aimerais savoir s'il est possible de faire
une fonction VBA qui agirait de façon similaire à une fonction SQL.

Voici ce que je cherche à faire:

Function getAnnees(annee As Integer) As ?? <- retourne une table
Access

Table.Column(0).Name = "Annees"
Do While annee < year(getDate()) + 1
Table.Row.Add() = year
year = year + 1
Loop
Returns Table

End Function

Maintenant, en utilisant une requête Access du genre :

SELECT getAnnees(2008)

J'aimerai obtenir une table comme celle-ci :
|Annees
rangée 1 | 2008
rangée 2 | 2009
rangée 3 | 2010


Merci beaucoup à tous
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gloops
Le #22790241
orange a écrit, le 14/11/2010 13:15 :
Bonjour à tous,

Je suis nouveau en VBA et j'aimerais savoir s'il est possible de faire
une fonction VBA qui agirait de façon similaire à une fonction SQL.

Voici ce que je cherche à faire:

Function getAnnees(annee As Integer) As ??<- retourne une table
Access

Table.Column(0).Name = "Annees"
Do While annee< year(getDate()) + 1
Table.Row.Add() = year
year = year + 1
Loop
Returns Table

End Function

Maintenant, en utilisant une requête Access du genre :

SELECT getAnnees(2008)

J'aimerai obtenir une table comme celle-ci :
|Annees
rangée 1 | 2008
rangée 2 | 2009
rangée 3 | 2010


Merci beaucoup à tous





Bonjour,

Regarde si il y a des idées à prendre là :

http://support.microsoft.com/kb/186133/fr
orange
Le #22792381
Bonjour,

Ma question n'est peut-être pas complète.

Pour préciser, j'ai toujours travaillé avec SQL Server et pour ce
projet, je dois travailler uniquement avec MS Access 2007. Je cherche
donc une façon de reproduire des fonctions SQL Server en Access, en me
disant qu'en utlisant le VBA, j'y arriverais peut-être, mais je ne
connais pas le VBA.

À travers tout ça, mon objectif final est d'arriver à faire des
requêtes Access SQL avec JOIN entre tables de ma base de données
Access et fonctions VBA comprise dans des modules de cette même base
de données.

Est-ce possible?


Merci
blaise cacramp
Le #22795361
Bonjour Mathieu

Il me semble que des *requêtes* SQL Server devraient pouvoir être
strictement pareilles en Access.
Ce n'est pas le cas dans la programmalilté où le VBA ... oui.
Mais la fonction (ou procédure) ne va pas te retourner une table : elle va
la construire ou la mettre à jour.

Le VBA ne devrait pas être trop compliqué pour quelqu'un qui programme en
T-SQL

Cdt,
Blaise

"orange"
Bonjour,

Ma question n'est peut-être pas complète.

Pour préciser, j'ai toujours travaillé avec SQL Server et pour ce
projet, je dois travailler uniquement avec MS Access 2007. Je cherche
donc une façon de reproduire des fonctions SQL Server en Access, en me
disant qu'en utlisant le VBA, j'y arriverais peut-être, mais je ne
connais pas le VBA.

À travers tout ça, mon objectif final est d'arriver à faire des
requêtes Access SQL avec JOIN entre tables de ma base de données
Access et fonctions VBA comprise dans des modules de cette même base
de données.

Est-ce possible?


Merci
orange
Le #22820191
Merci Blaise,

Est-ce que tu sais s'il y a moyen de faire une boucle avec paramètres
dans une reAccess 2007?
Gloops
Le #22821801
orange a écrit, le 21/11/2010 03:24 :
Merci Blaise,

Est-ce que tu sais s'il y a moyen de faire une boucle avec paramètres
dans une reAccess 2007?




Tiens, ça, je ne savais pas ...
blaise cacramp
Le #22821791
non, ce n'est pas possible
"orange"
Merci Blaise,

Est-ce que tu sais s'il y a moyen de faire une boucle avec paramètres
dans une reAccess 2007?
Gloops
Le #22821911
blaise cacramp a écrit, le 21/11/2010 12:56 :
non, ce n'est pas possible




Oups je n'avais pas réalisé que c'était une question ...
Michel__D
Le #22822241
Bonjour,

orange a écrit :
Merci Blaise,

Est-ce que tu sais s'il y a moyen de faire une boucle avec paramètres
dans une reAccess 2007?




Je ne sais pas ce que tu veux faire mais avec l'intermédiaire d'une table
existante tu pourrais faire ceci :

Soit la table existante [tmp] qui contient le champ [id] avec les valeurs de 1 à 9

Ensuite avec la requête suivante et saisie de la valeur 2008 tu obtiendrais :

Champ , ValAnnee
"rangée 1", 2008
"rangée 2", 2009
"rangée 3", 2010

PARAMETERS [Saisir l'année de départ] LONG;
SELECT "rangée " & T.id AS Champ, [Saisir l'année de départ]+T.id AS ValAnnee
FROM tmp AS T
WHERE [Saisir l'année de départ]+T.id<=Year(Date());
orange
Le #22843291
Merci Michel,

Il semble que je n'ai pas le choix de me construire des tables
temporaires alors. Ta suggestion me donne une piste. Je vais regarder
pour monter des tables temporaires qui se mettent systématiquement à
avec des genres de trigger VBA et je travaillerai avec ces tables.
J'aurais mieux voulu éviter ça, mais il semble qu'il n'y a pas d'autre
solution. A moins qu'il y a une autre base de données de type MS
Access qui offre cette possibilité? Est-ce que vous en connaissez?


Orange.
Michel__D
Le #22852581
Bonjour,

orange a écrit :
Merci Michel,

Il semble que je n'ai pas le choix de me construire des tables
temporaires alors. Ta suggestion me donne une piste. Je vais regarder
pour monter des tables temporaires qui se mettent systématiquement à
avec des genres de trigger VBA et je travaillerai avec ces tables.
J'aurais mieux voulu éviter ça, mais il semble qu'il n'y a pas d'autre
solution. A moins qu'il y a une autre base de données de type MS
Access qui offre cette possibilité? Est-ce que vous en connaissez?



A part le SQL Server je ne vois pas.

Concernant ma suggestion, c'étais pour ne pas utiliser le VBA, maintenant
si tu dois utiliser le VBA, tu n'a pas besoin de table existante temporaire.

Tu crée pratiquement ce que tu veux en VBA.
Publicité
Poster une réponse
Anonyme