Bonjour,
Je travaille sur un composant qui est amené à manipulé des tables qui ne sont pas déclarés dans l'analyse du composant.
Ce composant possède sa propre analyse et effectue des requêtes SQL sur les tables inscrites dynamiquement.
Nous utilisons une base DB2/400 (AS400).
Dans ce composant, je dois inscrire dynamiquement la table à traiter.
Je bute sur un soucis :
> Mon code fonctionne lorsque je teste le projet du composant.
> Dés lors que je l'intègre dans un projet hôte, les requêtes SQL se plantent ( message "Source de données MaSourceDonnées non initialisée" )
Dans l'exemple de code ci dessous, je manipule une table et son schéma reçu en paramètre respectivement dans les variables "P_CHR_SCHEMA" et "P_CHR_TABLE" .
Le traitement de description des rubriques et de descrption de la table se passe bien. J'utilise la table système "Qadbifld" de qsys pour extraire les informations de la table à decrire dans l'analyse :
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 // <><><><><><><><><><><><><><><><><><><><><><><><><><><><><> // { Construction Dynamique description table dans Analyse - D E B U T } // <><><><><><><><><><><><><><><><><><><><><><><><><><><><><> L_DescTbl_Table est une Description de Fichier L_DescRub_Rubrique est une Description de Rubrique SLANGUP est une Source de Données // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° // { Description de la table reçues en paramètre } // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° L_DescTbl_Table..Nom = "SLANGUP" L_DescTbl_Table..Type = hFichierAS400 L_DescTbl_Table..CryptageFic = hCryptageStandard // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° // { Description des rubriques dans l'analyse } // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° // [ Extraction des propriétées de la table depuis qsys.QADBIFLD ] POUR TOUT Qadbifld AVEC "dbilib = '"+P_CHR_SCHEMA+"' et dbifil = '"+P_CHR_TABLE+"'" // [ Nom de la rubrique ] L_DescRub_Rubrique..Nom = Qadbifld.DBILFL // [ Type de rubrique ] SELON Qadbifld.DBITYP // ( Chargement du type de la zone ) CAS "CHAR" L_DescRub_Rubrique..Type = hRubCaractère CAS "DATE" L_DescRub_Rubrique..Type = hRubDate8 CAS "TIME" L_DescRub_Rubrique..Type = hRubHeure CAS "TIMESTMP" L_DescRub_Rubrique..Type = hRubDateHeure CAS "DECIMAL" L_DescRub_Rubrique..Type = hRubNumérique CAS "SMALLINT","INTEGER" L_DescRub_Rubrique..Type = hRubEntier1 AUTRE CAS L_DescRub_Rubrique..Type = hRubCaractère FIN // [ Taille de la rubrique ] L_DescRub_Rubrique..Taille = Qadbifld.DBIILN // [ type clé ] L_DescRub_Rubrique..TypeClé = hCléDoublon // [ Inscription ] HDécritRubrique (L_DescTbl_Table, L_DescRub_Rubrique) FIN // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° // { Valide la description du fichier de données } // °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° soit L_Bool_WrtAna = HDécritFichier(L_DescTbl_Table)
Dans une autre méthode du composant, j'effectue des requêtes SQL sur la table décrite dans l'analyse.
Lorsque je teste le projet du composant, le code fonctionne bien.
Dés que j'intègre le composant ( qui a sa propre analyse ) dans un projet hôte, le code se plante :
la méthode du composant chargée d'effectuer la requête SQL ne trouve pas la table décrite plus haut et provoque une erreur du type "Source de données MaSourceDonnées non initialisée"
Si quelqu'un a une idée, ou une piste ?
Partager