我有一个从 pfc_w_sheet 继承的窗口,它包含从 u_tv 继承的树视图。下面是窗口打开事件中的脚本。起初,它只有 1 个参数,并且树视图成功填充并显示了项目。但是当 datawindow: d_app_usermenu1 已被修改时,内部连接和检索参数 user_id 已被添加。并且在 windows 打开事件中也添加了 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
关于如何处理这个或一些解决方法的任何想法?目标是检索在特定用户 ID 中分配的项目或菜单,这就是为什么我需要在数据窗口的 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)