PowerBuilder - 使用PFC在树视图中填充项目

时间:2015-03-05 04:01:00

标签: powerbuilder powerbuilder-pfc

我有一个从pfc_w_sheet继承的窗口,它包含从u_tv继承的树视图。下面是窗口打开事件中的脚本。首先,它只有1个参数,树视图成功填充并显示项目。但是当修改了datawindow:d_app_usermenu1时,添加了内部联接和检索参数user_id。并且在windows open事件中也添加了la_arg [2],树视图无法在运行时填充项目。 发现tv_main.of_SetDatasource中的返回值为-2,这意味着DataWindow对象没有分配任何键列,这是根据pfc_u_tv中的备注。然后我去检查下面返回-2值的脚本行。 of_CreateKey函数基本上,将一个计算列添加到datawindow对象,该对象将包含连接在一起的所有键。这是必要的,以便能够找到一个唯一的行,这是根据pfc_u_tv中的备注。

// Add a computed column to the DataWindow object that will
// contain all the keys concatenated together.  This is necessary
// to be able to find a unique row.
If of_CreateKey(inv_ds[ai_Level].ds_obj) = -1 Then
    // No key columns were defined
    inv_ds[ai_Level].s_DataWindow = ""
    Destroy inv_ds[ai_Level].ds_obj
    Return -2
End if

关于如何处理这个或一些解决方法的任何想法?目标是检索在特定用户标识中分配的项目或菜单,这就是我需要在数据窗口的SQL查询中具有内部联接的原因。

//Window's Open Event
Any la_arg[]
tv_main.of_SetDatasource(1, "d_app_usermenu1", SQLCA, "menu_name", "", FALSE, 1, 1)
tv_main.of_SetDatasource(2, "d_app_usermenu2", SQLCA, "menu_name", ":parent.1.parent_name", FALSE, 2, 2)
is_userid = Upper(Trim(gnv_App.of_getUserID( )))
la_arg[1] = '0'
la_arg[2] = is_userid
tv_main.of_InitialRetrieve(la_arg)

1 个答案:

答案 0 :(得分:0)

在dw画家中打开数据窗口。

转到行>更新属性并在“唯一键列”列表中选择至少一列。保存并重新测试。

当您添加连接条件时,PB不再知道哪个表是可更新的,并且无法再确定哪个列构成该表的主键。

每当您编辑数据窗口查询时,您会收到消息“PB已更改更新规范” - 这是您需要检查的第一个地方......

-Paul Horan-
SAP