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 ?