Bonjour à tous,
J'aurais bien besoin de vos lumières pour m'éclaircir les idées...
L'étape de mon projet qui me cause des soucis est la suivante.
J'ai un répertoire qui contient des fichiers ACCESS("mdb").
Je veux lire les infos qu'ils contiennent et les recopier dans une base HyperFile (HF) unique. J'ai isolé les étapes suivantes :
- Lister les fichiers "mdb" de mon répertoire
- Pour chaque fichier "mdb" lister les tables.
- Pour chaque table : si elle n'existe pas, créer un fichier HF et le lier à la base globale. Sinon ne rien créer.
- Finalement : transférer chaque donnée de la base access vers la table correspondante en HF
Et là franchement je m'y perds à partir du point 3...
Mon embryon de code est le suivant :
J'ai ouvert une connexion que je ne sais pas utiliser. J'ai tenté un Hlitpremier() mais il ne fonctionne pas. Ceci dit sans connaitre le nom de la table et de la rubrique comment remplir un Hlit()?!?
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 PROCEDURE ajout_data() table, listetable est une chaîne cnxAccess_tmp_db est une Connexion test est un booléen //Ouverture de la DB Access HDécritConnexion("cnxAccess_tmp_db","","","C:\DB_globale\DBimport\20ST.mdb","",hOledbAccess2007,hOLectureEcriture ) SI PAS (HOuvreConnexion("cnxAccess_tmp_db")) ALORS Erreur("Erreur HyperFileSQL : " + HErreurInfo()) FIN listetable=HListeFichier("","","C:\DB_globale\DBimport\20ST.mdb",hOledbAccess2007, hOLectureEcriture) //Pour chaque table de la table access, on la crée dans la base HF si elle n'existe pas POUR TOUTE CHAINE table DE listetable SEPAREE PAR RC SI PAS HCréationSiInexistant(table) ALORS Message ("erreur création d'une table") FIN FIN
Je trouve le nom des tables à l'aide de "HListeFichier()" qui n'utilise pas la connexion créée avant et me fait douter de l'utilité de celle-ci...
Mais là où je bloque complètement c'est que "HCréationSiInexistant" renvoie cette erreur lors de l'exécution :
Naïvement sans doute je trouve ça logique que mon fichier ne soit pas connu vu que je lui demande de le créer. Windev n'est pas de mon avis!!!!
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 Erreur à la ligne 34 du traitement Procédure globale ajout_data. Vous avez appelé la fonction HCréationSiInexistant. Fichier <Avis cardiologique (10434)> inconnu dans l'analyse <G:\Mes Projets\fusion de DB et DB globale\fusion de DB et DB globale.wdd>, ou requête ou vue non initialisée. Si il s'agit d'une requête, l'exécution de cette requête a peut-être échoué. ----- Informations techniques ----- Projet : fusion de DB et DB globale Appel WL : Traitement de 'Procédure globale ajout_data' (COL_ProcéduresGlobales.ajout_data), ligne 34, thread 0 Fonction 'HCréationSiInexistant', syntaxe 1 Que s'est-il passé ? Fichier <Avis cardiologique (10434)> inconnu dans l'analyse <G:\Mes Projets\fusion de DB et DB globale\fusion de DB et DB globale.wdd>, ou requête ou vue non initialisée. Si il s'agit d'une requête, l'exécution de cette requête a peut-être échoué.
Pour synthétiser mes questions :
- Comment puis-je communiquer avec ma base Access une fois la création de la connexion effectuée?
- Comment le futur programme va-t-il savoir quelle est la DB concernée par un HLit() ("mdb" ou HF)? HChangeConnexion() que je vois souvent dans les forums (et dont je ne comprends pas le sens) a-t-il un rapport avec ceci?
- Si je crée une table HF dois je l'ajouter dynamiquement à mon analyse ou l'analyse correspond uniquement au projet avant compilation? A ce sujet, à chaque fin d'exécution il me dit que l'analyse "fusion de DB et DB globale.wdd" a changé et me demande si je veux synchroniser mon projet?!?
- comment créer les liens entre les différentes tables de façon dynamique (je sais que chaque table aura une clé dont je peux déterminer le nom)... Le "HGèreIntégrité" a-t-il un rapport avec ça?
- Je vois aussi souvent la référence à HDeclareExterne() pour accéder à des bases access ce qui n'apparait pas dans l'aide ou que je ne pige pas.
Voilà je suis très loin du bon chemin et franchement c'est pas faute de lire et chercher!
J'espère qu'une bonne âme voudra bien me mettre sur la voie!
Merci d'avance et bonne soirée.
Partager