如何在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
如何创建?
答案 0 :(得分:2)
你需要的是Syntaxfromsql函数。你可以在这里阅读更多内容:
为您的例子:
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方法在运行时自定义它。您几乎可以设置所有内容(宽度,高度,字体大小,颜色等)
更多信息:
我希望有所帮助。请随时询问更多。我们在项目中大量使用这种动态数据窗口概念。
溴。的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。