【问题标题】:PowerBuilder - dynamic DataWindow from CursorPowerBuilder - 来自光标的动态数据窗口
【发布时间】:2023-03-18 04:29:01
【问题描述】:

如何在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

如何创建?

【问题讨论】:

    标签: powerbuilder datawindow


    【解决方案1】:

    您需要的是 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

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

    兄弟。加博尔

    【讨论】:

      【解决方案2】:

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

      我在您的问题中看到的问题是您不是从 SELECT 语句开始,而是从从数据库传回的游标对象开始。我不相信 PB 中的任何地方都支持这种游标。 (您可以在 PowerScript 中创建光标,但据我了解,这是不同的。)因此,由于没有与 DBMS 生成的光标兼容的 DataWindow 语法,我相信答案就目前而言,您的问题是无法完成

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

      祝你好运,

      特里。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2018-02-27
          • 1970-01-01
          • 1970-01-01
          • 2017-02-12
          • 1970-01-01
          • 1970-01-01
          • 2011-11-20
          • 2023-03-22
          • 2013-12-04
          相关资源
          最近更新 更多