PowerBuilder - 来自Cursor的动态DataWindow

时间:2013-04-19 13:32:11

标签: powerbuilder datawindow

如何在PowerBuilder中创建动态DataWindow?

我在数据库中有程序给我一个游标。 如何使用此游标我可以使用列创建DataWindow?

例1: 光标:

SELECT DATA, ID FROM TABLE1
I want DW with columns:
DATA, ID

例2: 光标:

SELECT DATA, ID, COUNTRY FROM TABLE1
I want DW with columns:
DATA, ID, COUNTRY

如何创建?

3 个答案:

答案 0 :(得分:2)

你需要的是Syntaxfromsql函数。你可以在这里阅读更多内容:

http://infocenter.sybase.com/archive/index.jsp?topic=/com.sybase.help.pb_10.5.psref/html/psref/CCJCHAJI.htm

为您的例子:

string  ls_sql_syntax, ls_dw_source, ERRORS

ls_sql_syntax   = "SELECT DATA, ID, COUNTRY FROM TABLE1"
ls_dw_source    = SQLCA.SyntaxFromSQL(ls_sql_syntax, "Grid", ERRORS)
IF Len(ERRORS) > 0 THEN
    MessageBox("Caution", "SyntaxFromSQL caused these errors: " + ERRORS)
    RETURN 0
END IF
dw_work.Create( ls_dw_source, ERRORS)
IF Len(ERRORS) > 0 THEN
    MessageBox("Caution", "Create cause these errors: " + ERRORS)
    RETURN 0
END IF  

我们假设dw_work是datawindow控件的名称。创建此“基本”数据窗口后,您可以使用Modify方法在运行时自定义它。您几乎可以设置所有内容(宽度,高度,字体大小,颜色等)

更多信息:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc00044_0250/html/dwprgnet/X_ref299343589.htm

我希望有所帮助。请随时询问更多。我们在项目中大量使用这种动态数据窗口概念。

溴。的Gabor

答案 1 :(得分:2)

您可以使用DataWindow或DataStore的Create()函数轻松动态生成数据对象,并将其传递给语法正确的DataWindow源(就像您在IDE中的DataWindow上编辑源时所看到的那样)。甚至还有一个函数,即Transaction对象的SyntaxFromSQL(),它将帮助您从SELECT语句构建语法,尽管您可以根据需要构建此语法字符串。

我在你的问题中看到的问题是你不是从SELECT语句开始,而是从数据库传回的游标对象开始。我不相信PB中任何地方都有这样的游标支持。 (你可以在你的PowerScript中创建一个游标,但是正如我所理解的那样,这是不同的。)因此,由于没有与DBMS生成的游标兼容的DataWindow语法,我相信答案你现在的问题是它无法完成

另一种方法是,如果您可以控制存储过程,则更改它以传回SELECT语句的字符串。这样,您不仅可以动态创建DataWindow语法(SyntaxFromSQL())并生成DataWindow(Create()),而且还可以获得更好的性能,因为大多数情况下DataWindow (例如,当编码RetrieveRow事件时,不会使用“一个”网络事务在尽可能少的网络块中检索整个数据集,而不是一次只检索一行的光标。

祝你好运,

特里。

答案 2 :(得分:0)

您可以向框架添加一个函数,该函数返回由提供的SQL SELECT动态创建的DataStore。它的代码是here