如何在PowerBuilder中创建动态DataWindow?
我在数据库中有一个过程,它会返回一个游标。如何使用此游标创建带列的DataWindow?
Example1:光标:
SELECT DATA, ID FROM TABLE1
I want DW with columns:
DATA, IDExample2:光标:
SELECT DATA, ID, COUNTRY FROM TABLE1
I want DW with columns:
DATA, ID, COUNTRY如何创建它?
发布于 2013-04-19 22:39:48
您需要的是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是数据窗口控件的名称。创建这个“基本”数据窗口后,您可以在运行时使用Modify方法对其进行自定义。您几乎可以设置所有内容(宽度、高度、字体大小、颜色等)
更多信息请点击此处:
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc00044_0250/html/dwprgnet/X_ref299343589.htm
我希望这能有所帮助。请随时提出更多问题。我们在项目中大量使用了这个动态数据窗口的概念。
Br.加博尔
发布于 2013-04-20 01:07:04
您可以使用数据窗口或数据存储的Create()函数轻松地动态创建一个数据对象,向它传递一个语法正确的DataWindow源(就像您在集成开发环境中的DataWindow上编辑源时所看到的一样)。甚至还有一个函数,Transaction对象的SyntaxFromSQL(),可以帮助您从SELECT语句构建语法,尽管您可以随心所欲地构建此语法字符串。
我在您的问题中看到的问题是,您不是从SELECT语句开始的,而是从从数据库传回的游标对象开始的。我不相信PB中有任何地方支持这样的游标。(您可以在PowerScript中创建光标,但我理解您的意思,这是不同的。)因此,由于没有与DBMS生成的游标兼容的DataWindow语法,我相信您的问题的答案是,它不能在中完成。
另一种方法是,如果您可以控制存储过程,则可以将其更改为传回SELECT语句的字符串。这样,您不仅可以动态创建DataWindow语法(SyntaxFromSQL())和生成DataWindow ( create ()),而且还可以获得更好的性能,因为在大多数情况下(例如,当RetrieveRow事件被编码时),DataWindow将通过“一个”网络事务在尽可能少的网络块中检索整个数据集,而游标一次只能检索一行。
祝好运,
特里。
发布于 2013-04-24 04:56:23
您可以向框架添加一个函数,该函数返回由所提供的SQL SELECT动态创建的DataStore。它的代码是here。
https://stackoverflow.com/questions/16105855
复制相似问题