Powerbuilder传递数据存储区/对象

时间:2012-03-06 04:09:27

标签: powerbuilder

我有一个数据存储区,当检索并有结果时,行应该显示在另一个窗口中

  

ds_1.Retrieve()

     
    

IF ds_1.RowCount()> 0那么

         
i_str_pass.po[1] = ds_1

OpenWithParm(w_error, i_str_pass)
    
         

END IF

  

i_str_pass是一个结构,po是一个powerobject

我想在w_error的数据窗口中显示ds_1的结果,而无需再次检索

我试着打电话给w_error

  

str_pass i_str_pass

     

i_str_pass = Message.PowerObjectparm

     

dw_1 = i_str_pass.po [1]

我调试了,看到我正确传递了它 但检索到的数据根本没有显示 我做错了什么?谢谢你。

2 个答案:

答案 0 :(得分:3)

使用

i_str_pass.po[1]. DYNAMIC ShareData(dw_1)

而不是

dw_1 = i_str_pass.po[1]

令人惊讶的是,后者不是运行时错误,因为您正在将DataStore分配给DataWindow。

GetFullState / RowsCopy也很好,但由于您正在制作该数据的副本(可能是您可能关注的内容,也可能不是您所关注的内容),因此会导致内存损失。

答案 1 :(得分:1)

您可以查看GetFullState() / SetFullState()

blobl lbl_data
if i_str_pass.po[1].GetFullState(lbl_data) = 1 then
    dw_1.SetFullState(lbl_data)
end if

您还可以查看ShareData()以在2个DataStores或DataWindows之间建立“链接”。