动态生成的数据窗口中的列名称

Geo*_*tas 4 powerbuilder sybase datastore dynamic-sql

当我使用SyntaxFromSQL动态创建数据存储区时(为了生成基于SQL SELECT语句的数据存储区源代码),使用这样的语法

string ERRORS, sql_syntax, dwsyntax_str, presentation_str
dwsyntax_str = trans_object.SyntaxFromSQL ( sql_syntax, presentation_str, ERRORS)
ds_1.Create( dwsyntax_str, ERRORS)
Run Code Online (Sandbox Code Playgroud)

如何检查生成的数据存储列的名称ds_1?我提醒你,在连接两个或多个表的select语句的情况下,结果列名可以在相关的表名之后,例如,不是获取列名,field_id我可能得到如下的列名:my_table_field_id.这会在以后提供列名称(field_id)作为GetItem函数的参数时引起问题,而相关数据存储区则命名该列my_table_field_id.

更糟糕的是,我发现我获得不同列定义(以表名称开头)的原因之一是用户的登录被分配了sa role!?!?!

Ter*_*rry 6

通常,在Describe()调用中,可以使用列号代替列名,因此您可以执行以下操作:

string ls_FirstColumnName, ls_SecondColumnName

ls_FirstColumnName = dw_1.Describe ("#1.Name")
ls_SecondColumnName = dw_1.Describe ("#2.Name")
MessageBox ("Column Names", ls_FirstColumnName + "~r~n" + ls_SecondColumnName)
Run Code Online (Sandbox Code Playgroud)

缓存值,或者仅使用以后的列号.引用列的大多数DataWindow/DataStore函数都有重载,允许将整数用作列号而不是字符串作为列名.

祝好运,

特里.