Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
Voila mon souci, je crée dynamiquement une DataStore :
ls_Newsql = "select column_1, column_2, from table_1,table_2 where table_1.id = table_2.id_table_1" ls_New_Syntax = SQLCA.SyntaxFromSQL(ls_NewSQL,'Style(Type=Form)',ls_Error_SyntaxFromSQL) lds.Create(ls_New_Syntax,ls_Error_Create) lds.SetTransObject(SQLCA) ll_count = lds.Retrieve()
Lorsque je veux recupérer la valeur de la premiere colonne, je fais donc :
ls_test = lds.getitemstring(ll_i,'column_1')
J'ai retrouvé du code qui date de plusieurs années dans lequel on concatene le nom de la table avec la colonne pour récupérer la valeur :
ls_test = lds.getitemstring(ll_i,'table_1_column_1')
Cela arrivait lorsqu'on créeait une DataStore dynamique avec un select sur deux tables.
Or je ne retrouve plus les conditions necessaire dans PB pour qu'il fasse tout seul cette concatenation.
De souvenir, il faisait cette concatenation lorsque les tables PBCATCOL, PBCATEDT,... etaient présentes.
Mais je ne reproduis plus ces conditions. Vous avez deja tombé la dessus non?
Je travaille a la fois sous SQL Server et sous Oracle.
Merci d'avance!
Dernière modification par mial (21-09-2011 16:30:42)
Hors ligne
Bonjour,
et faire un
ls_test = lds.getitemstring(ll_i,1)
ça ne serait pas plus simple ?
Hors ligne
Mon but est de ne toucher qu'a l'environnement sans refaire une compilation de l'application.
Merci du conseil en tout cas, je n'utiliserai que cela maintenant
Hors ligne
Hors ligne
Désolé, j'ai mis à jour..
Sinon j'ai la réponse a ma question.
La création d'une DataStore dynamique préfixe la colonne par le nom de la table lorsque :
- Les tables Infomaker sont présentes (pbcatcol, pbcatedt,pbcatfmt,pbcattbl,pbcatvld)
- Il y a une jointure sur deux tables
- La colonne existe sur les deux tables.
Je mets a jour en topic résolu.
Hors ligne
Pages: 1