【问题标题】:How to pass a column into a function?如何将列传递给函数?
【发布时间】:2014-02-21 08:17:35
【问题描述】:

我想在函数中使用列,并且列可能会不时改变。所以想在调用函数的时候把columns传给函数,函数里面可以使用什么数据类型。

以下是我要放入函数的代码,compute_page 是列名:

if dw_report.Object.compute_page[ll_first_row] <> dw_report.Object.compute_page[ll_last_row] then

另外,我想做同样的事情,但这次是设置列值。我尝试使用SetItem()、SetText()、SetValue(),但是除了使用dwcontrol.Object.columnname[i],没有一个函数可以达到预期的效果设置值。

谢谢

【问题讨论】:

    标签: function powerbuilder tablecolumn


    【解决方案1】:

    不要使用.object 符号来访问列,而是使用GetItemxxx(),例如:

    if dw_report.getitemnumber(ll_first_row, "compute_page") <> dw_report.getitemnumber(ll_last_row, "compute_page") then
    

    只需将示例中的 "compute_page" 替换为函数的字符串参数即可。

    注意GetItemxx()调用必须匹配实际的列数据类型,所以你需要检查dw_report.describe(ls_your_column_name+".coltype")的结果来调用GetItemNumber()GetItemString()GetItemDecimal()GetItemDate()之一, GetItemDatetime() 否则您的应用程序将崩溃。

    【讨论】:

    • 您还会发现 GetItemXXX() 比 .object 更快,内存效率更高。符号。如果脚本只被调用一次,这没什么大不了的,但是在一个大型数据集的循环中,您会注意到不同之处。
    • 我完全同意@Terry,似乎.object 表示法使用OLE 层来访问数据窗口内部,并且往往会减慢数据处理速度。
    • 非常感谢,不过还有一个类似的问题:
    • 我想在同一个函数中给某列设置一个值,但是在使用SetItem()、SetColumn()、SetValue()时不生效。但是,使用 .object。符号是成功。任何想法??谢谢
    • @calvinyankf:您是否收到任何可以提供线索的返回码或 sql 错误消息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2017-09-12
    • 2017-04-15
    • 2012-10-28
    相关资源
    最近更新 更多