导航
  • 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

救急啊,麻烦看看这些代码哪里有错啊!

thomashoo 2003-12-18 10:13:34
一个dw窗口连接的是一个grid风格的数据对象dw-1,所有列都可以修改,
我想当我更改某行中的数据后,把修改过的这行数据拷贝到另外一个
dw—2 里去,dw—2是external的数据源,所有列名和dw-1一样的:
我是在一个“保存”按钮的clickd事件里面的代码,我的代码如下:
if dw_1.update()=1 then
messagebox("","保存成功!")
else
messagebox("","保存失败!")
end if

dwItemStatus l_status
l_status=dw_1.getItemStatus(dw_1.getrow(),dw_1.getcolumn(),primary!)
if l_status=datamodified! then
dw_1.RowsCopy(dw_1.getrow(),dw_1.rowcount(),primary!,dw_2,1,primary!)
end if


保存成功,可是就是不能实现拷贝的功能。
请问:是否dw-2的数据窗口对象不要设置成external,而是和dw-1一样的grid数据窗口对象?是否不应该在“保存”按钮中的事件写如上代码?
或者哪位大哥知道另外的方法,可以指教在下吗?谢谢拉!

...全文
7 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
freebirdwjy 2003-12-18
1。不能拷贝的原因是两段写反了
2。dw_2是用来显示的吧?如果是直接用dw-1的datawindow就好了,只要不update这样可以保证两个数据窗口结构完全一样,不容易出错。
回复
chrisfy 2003-12-18
你是先dw_1.update()的,如果是保存成功,那末l_status得值应该是Nomodified!,所以根本进入不了下面条件语句:
if l_status=datamodified! then
dw_1.RowsCopy(dw_1.getrow(),dw_1.rowcount(),primary!,dw_2,1,primary!)
end if
回复
mittee 2003-12-18
代码不够严密看下面的
for ll_i = 1 to dw_1.rowcount()
if dw_1.getItemStatus(ll_i,0,primary!) = datamodified! then
ll_dw2_rowcount = dw_2.rowcount()
if ll_dw2_rowcount = 0 then ll_dw2_rowcount = 1
dw_1.rowscopy(ll_i,ll_i, Primary!, dw_2, ll_dw2_rowcount, Primary!)

end if
next

回复
wwwafa9 2003-12-18
哦,你把代码的位置搞反了,把那两段代码换一下位置就可以了。
回复
liliang800207 2003-12-18
应该是列属性的问题
dw1和dw2的列的字段属性完全一致吗
到数据窗口画板中看一下
rowcopy要求他们一致
回复
joss 2003-12-18
DW加个计算列判断一下你便明白了!
if (isRowNew(), if (IsRowModified(), "newmodified!", "new!"), if (IsRowModified(), "datamodified!", "notmodified!"))
UPDATE后的行状态已经变了!
回复
zzclhcbmail 2003-12-18
同意jdsnhan(柳荫凉) (
回复
jdsnhan 2003-12-18
1、dw-2的数据窗口对象可以设置成external
2、if dw_1.update() = 1 ,dw_1的状态已经转变了。此时其状态已经不再是datamodified!
所以,你的语句没有执行。
回复
klbt 2003-12-18
数据窗口的行列状态,在保存前后是不一样的。
回复
发动态
发帖子
PowerBuilder
创建于2007-09-28

809

社区成员

PowerBuilder 相关问题讨论
申请成为版主
社区公告
暂无公告