关于message,大家帮忙`~~

lkyuan 2005-08-29 12:47:41
我在一个弹出窗口中录入数据后,用 closewitreturn(parent,dw_input)
返回录入的数据,请问在message的接收部分应该如何写~~~

我写的代码是
datastore dso1
dso1=create datastore
dso1=message.powerobject
接收完毕后,我对dso1进行操作,系统不认。请问什么原因?


...全文
219 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lkyuan 2005-09-01
  • 打赏
  • 举报
回复
问题已经解决了~~我把方式公布一下:定义一个structure里面包括s_syntax,s_data
窗口2
s_dw lstr_dw
lstr_dw.syntax=dw_input.describe("datawindow.syntax")
lstr_dw.data=dw_input.object.datawindow.data
closewithreturn(parent,lstr_dw)

窗口1
s_dw lstr_dw
datastore ids_data
ids_data=create datastore
lstr_dw=message.powerobjectparm
//如果发票信息不保存
if not isvalid(lstr_dw) then
messagebox('提示','请输入对应的发票信息')
dw_1.setitem(1,'grbgyh_yhzt',ls_yhzt) //原状态
return
end if
//接收传过来的datawdindow信息
ids_data.create(lstr_dw.syntax)
ids_data.importstring( lstr_dw.data)

pb8.04下调试通过,谢谢各位了
章无忌 2005-09-01
  • 打赏
  • 举报
回复
我觉得还是可以直接传dw的参数,
接过来可以用的,
因为做过……不管怎么样,恭喜楼主,解决问题最重要!!!
alwaystar 2005-08-31
  • 打赏
  • 举报
回复
而且你传入的好像是DataWindow,接收应该用DataWindow 数据类型必须相符
alwaystar 2005-08-31
  • 打赏
  • 举报
回复
如果你是打算接收PowerObjectParm那么就不用Create DataStore了,因为DataStore是引用传递类,相当于指针,他不象string double等数据类型(以及自动实例的对象)
frankljw 2005-08-31
  • 打赏
  • 举报
回复
你传的是datawindow名 而不是dataobject!
universe 2005-08-31
  • 打赏
  • 举报
回复
2 datawindow control是窗口的控件,在窗口关闭后,datawindow实例应该无法继续存在,所以其返回值可能是个无效的对象。

PowerObjectParm传递的只是一个指针而不是复制的数据,如果指针所指向的object不存在就会出错,
rightyeah 2005-08-31
  • 打赏
  • 举报
回复
恐怕楼主这样的做法是不行的。理由如下:
1 返回的是datawindow control,而不是datastore object,类型不匹配,无法正确赋值
2 datawindow control是窗口的控件,在窗口关闭后,datawindow实例应该无法继续存在,所以其返回值可能是个无效的对象。

建议(任选)
1 在open子窗口的时候,就传一个datastore进去,然后在子窗口里面对datastore填充数据。
2 在close子窗口前,另外创建一个datastore对象,然后返回,由于它是用脚本创建的,不是子窗口的控件,在子窗口销毁的时候,应该不受影响。
vnsoft 2005-08-31
  • 打赏
  • 举报
回复
窗体一:
blob lb_data
open( w_inlist_sel )
lb_data = message.powerobjectparm
idw_data.SetFullState(lb_data)
if isnull( idw_data ) then
return
end if

response窗体二:
blob lb_data
dw_1.GetFullState(lb_data)
CloseWithReturn ( parent,lb_data )

試試這樣.
章无忌 2005-08-30
  • 打赏
  • 举报
回复
一定可以的..做过...
不过还看不出你的问题在哪里
lkyuan 2005-08-30
  • 打赏
  • 举报
回复
窗体一:
open( w_inlist_sel )
idw_data = message.powerobjectparm
if isnull( idw_data ) then
return
end if
response窗体二:
CloseWithReturn ( parent, dw_1 )
为什么窗体一总是收不到窗体二的dw_1的内容呢?但是如果传字符串是可以的,请哪位高手帮帮忙啊
章无忌 2005-08-29
  • 打赏
  • 举报
回复
叙述不明..估计是……缺少如下操作,请参看如下:(请将datawindow换为datastore)
string error_syntaxfromSQL, error_create
string new_sql, new_syntax
new_sql = 'SELECT emp_data.emp_id, ' &
+ 'emp_data.emp_name ' &
+ 'from emp_data ' &
+ 'WHERE emp_data.emp_salary>45000'
new_syntax = SQLCA.SyntaxFromSQL(new_sql, &
'Style(Type=Form)', error_syntaxfromSQL)
IF Len(error_syntaxfromSQL) > 0 THEN
// Display errors
mle_sfs.Text = error_syntaxfromSQL
ELSE
// Generate new DataWindow
dw_new.Create(new_syntax, error_create)
IF Len(error_create) > 0 THEN
mle_create.Text = error_create
END IF
END IF
dw_new.SetTransObject(SQLCA)
dw_new.Retrieve()
lkyuan 2005-08-29
  • 打赏
  • 举报
回复
对不起,我写的应该就是PowerObjectParm
Awang_126 2005-08-29
  • 打赏
  • 举报
回复
用message.PowerObjectParm
章无忌 2005-08-29
  • 打赏
  • 举报
回复
建议把你的代码贴的完整一点
vnsoft 2005-08-29
  • 打赏
  • 举报
回复
太麻煩了,而且還不知道pb能不能這樣傳回整個資料,建議用GetFullState 函數將所有資料變成一個變量,然后傳回來以后,再用SetFullState 把資料寫入.
xiaotubie 2005-08-29
  • 打赏
  • 举报
回复
DataWindow ldw
ldw = Message.PowerObjectParm

在PB里,PowerObjectParm可以包含任意的数据类型
lkyuan 2005-08-29
  • 打赏
  • 举报
回复
我传递的是数据窗口dw_input
章无忌 2005-08-29
  • 打赏
  • 举报
回复
你的datastore只有create了一下
1它的dataobject有没指定?(类似与窗口的中datawindow,要指定对应的dw)
2settransobject()写了没有
两个都做了才能retrieve()
lkyuan 2005-08-29
  • 打赏
  • 举报
回复
不是吧~~~~~~~~~~~~~看不懂,大家帮忙~~~~~~~

1,076

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧