Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD16]Requêtes multi-bases (ACCESS OLEDB)

2 réponses
Avatar
AGR
Bonjour,

Mon problème est le suivant :

Je souhaitais développer une application autour d'une base principale
ACCESS (OLEDB), contenant un ensemble de requêtes et de liens vers
d'autres bases ACCESS disséminées sur plusieurs serveurs de mon réseau.
Après plusieurs tests, et sauf erreur, il semble impossible a priori
d'importer dans une analyse Windev autre chose que la description des
tables physiquement présentes dans la base ainsi que les requêtes.

Du coup, j'ai importé dans mon analyse Windev les descriptions de
plusieurs bases en créant pour chaque fichier ACCESS une connexion.

J'ai donc bien désormais mes tables décrites dans l'analyse (Youpi !)
mais, nouvel écueil, je n'arrive pas à créer une requête liant par
exemple deux tables dont chacune serait dans un fichier distinct (donc,
dont l'accès aux données devrait utiliser deux connexions, si j'ai bien
tout compris ?).

Je n'ai pas trouvé de fonction compatible OLEDB permettant de résoudre
une requête SQL en utilisant plusieurs connexions.

J'imagine pourtant que ça doit pouvoir se faire (c'est quand même plutôt
fréquent de trouver des environnements multi bases/fichiers et multi
serveurs) mais là, j'avoue commencer à être à court d'idées (sachant que
je ne veux pas avoir à importer les données dans des fichiers FIC ou des
tableaux et autres champs de type table par exemple dans mon application
pour les manipuler. l'idée c'est bien ici de pouvoir les lire et
requêter directement sur les tables.)

Peut-être avez-vous déjà rencontré (et déjà résolu) ce problème de
requêtage multi-bases ou multi-connexions avec OLEDB ?

Merci d'avance pour vos réponses/suggestions/pistes ...

2 réponses

Avatar
thierry.jacquart
si tu as plusieurs bases différentes, c'est que tu as des connections
différentes.

as tu jeté un oeil du coté de hchangeconnection dans le code de ton
projet
pour reassigner les fichiers sur leurs bases respectives


On 4 nov, 22:40, AGR wrote:
Bonjour,

Mon problème est le suivant :

Je souhaitais développer une application autour d'une base principale
ACCESS (OLEDB), contenant un ensemble de requêtes et de liens vers
d'autres bases ACCESS disséminées sur plusieurs serveurs de mon rés eau.
Après plusieurs tests, et sauf erreur, il semble impossible a priori
d'importer dans une analyse Windev autre chose que la description des
tables physiquement présentes dans la base ainsi que les requêtes.

Du coup, j'ai importé dans mon analyse Windev les descriptions de
plusieurs bases en créant pour chaque fichier ACCESS une connexion.

J'ai donc bien désormais mes tables décrites dans l'analyse (Youpi !)
mais, nouvel écueil, je n'arrive pas à créer une requête liant pa r
exemple deux tables dont chacune serait dans un fichier distinct (donc,
dont l'accès aux données devrait utiliser deux connexions, si j'ai bi en
tout compris ?).

Je n'ai pas trouvé de fonction compatible OLEDB permettant de résoudr e
une requête SQL en utilisant plusieurs connexions.

J'imagine pourtant que ça doit pouvoir se faire (c'est quand même plu tôt
fréquent de trouver des environnements multi bases/fichiers et multi
serveurs) mais là, j'avoue commencer à être à court d'idées (sa chant que
je ne veux pas avoir à importer les données dans des fichiers FIC ou des
tableaux et autres champs de type table par exemple dans mon application
pour les manipuler. l'idée c'est bien ici de pouvoir les lire et
requêter directement sur les tables.)

Peut-être avez-vous déjà rencontré (et déjà résolu) ce prob lème de
requêtage multi-bases ou multi-connexions avec OLEDB ?

Merci d'avance pour vos réponses/suggestions/pistes ...
Avatar
AGR
Bonjour,

Finalement, avec un peu d'aide (sur le forum PcSoft) et beaucoup de
tests (!), j'ai fini par réussir à faire ce que je souhaitais :

Dans le principe on crée un projet et une connexion vers la base Access
principale. Pour accéder aux données (via SQL), deux possibilités :

Utilisation d'une requête crée dans Windev :

[MaRequete] est une requête SQL créée dans le module requête de Windev.
[MaConnexionAccess] est une connexion créée vers ma base principale lors
de la création de l'analyse.

J'utilise le code suivant dans l'initialisation d'une fenêtre pour
exécuter ma requête et alimenter une table pour contrôle :

SI
HExécuteRequête(MaRequete,MaConnexionAccess,hRequêteSansCorrection)úux
ALORS
Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo())
RETOUR
FIN

POUR TOUT MaRequete
TableAjouteLigne(TableTest,MaRequete.Code,MaRequete.Nom,MaRequete.Montant_HT)
FIN

Autre possibilité, l'utilisation de la même requête SQL directement dans
le code d'initialisation de la fenêtre :

SQL est une chaîne = [
SELECT
ADH.CodADH AS Code_ADH,
ADH.NomADH AS Nom_ADH,
SUM(COT.MontantHT) AS Montant_HT
FROM
ADH INNER JOIN COT
ON ADH.CodADH = COT.CodADH
WHERE
COT.AnneeCOT = '2010'
AND COT.NvCOT = '100'
GROUP BY
ADH.CodADH,
ADH.NomADH
]

sdRequête est une Source de Données
sdRequête="MaRequête"+DonneIdentifiant()

SI PAS
HExécuteRequêteSQL(sdRequête,MaConnexionAccess,hRequêteSansCorrection,SQL)
ALORS
Erreur("Erreur HExécuteRequêteSQL", HErreurInfo())
SINON
HLitPremier(sdRequête)
TANTQUE PAS HEnDehors(sdRequête)
TableAjoute(TABLE1,sdRequête.Code_ADH+TAB+sdRequête.Nom_ADH+
TAB+sdRequête.Montant_HT)

HLitSuivant(sdRequête)
FIN
FIN
HAnnuleDéclaration(sdRequête)


Le 08/11/2011 21:44, a écrit :
si tu as plusieurs bases différentes, c'est que tu as des connections
différentes.

as tu jeté un oeil du coté de hchangeconnection dans le code de ton
projet
pour reassigner les fichiers sur leurs bases respectives


On 4 nov, 22:40, AGR wrote:
Bonjour,

Mon problème est le suivant :

Je souhaitais développer une application autour d'une base principale
ACCESS (OLEDB), contenant un ensemble de requêtes et de liens vers
d'autres bases ACCESS disséminées sur plusieurs serveurs de mon réseau.
Après plusieurs tests, et sauf erreur, il semble impossible a priori
d'importer dans une analyse Windev autre chose que la description des
tables physiquement présentes dans la base ainsi que les requêtes.

Du coup, j'ai importé dans mon analyse Windev les descriptions de
plusieurs bases en créant pour chaque fichier ACCESS une connexion.

J'ai donc bien désormais mes tables décrites dans l'analyse (Youpi !)
mais, nouvel écueil, je n'arrive pas à créer une requête liant par
exemple deux tables dont chacune serait dans un fichier distinct (donc,
dont l'accès aux données devrait utiliser deux connexions, si j'ai bien
tout compris ?).

Je n'ai pas trouvé de fonction compatible OLEDB permettant de résoudre
une requête SQL en utilisant plusieurs connexions.

J'imagine pourtant que ça doit pouvoir se faire (c'est quand même plutôt
fréquent de trouver des environnements multi bases/fichiers et multi
serveurs) mais là, j'avoue commencer à être à court d'idées (sachant que
je ne veux pas avoir à importer les données dans des fichiers FIC ou des
tableaux et autres champs de type table par exemple dans mon application
pour les manipuler. l'idée c'est bien ici de pouvoir les lire et
requêter directement sur les tables.)

Peut-être avez-vous déjà rencontré (et déjà résolu) ce problème de
requêtage multi-bases ou multi-connexions avec OLEDB ?

Merci d'avance pour vos réponses/suggestions/pistes ...