数据窗囗更新问题

zzxing 2006-12-07 11:42:15
dw_2.ShareData(dw_1)
其中dw_1增加了"SYS_ITEM_WEIGHT"."CO_CODE" = :as_co_code , 经共享后实际语法已经变成了dw_2语法,即不带where 子句,dw_2的更新属性已经去掉(使用PFC),只留下dw_1来更新同一张表。问题是当dw_2中没有数据时可以更新(增加一行),当dw_2中有数据时就不可更新(无论新增行或修改资料):Datawindow dose not have UPDATE capability,大家有没有碰到过此类问题。

附dw_2语法:
SELECT "SYS_ITEM_WEIGHT"."CO_CODE",
"SYS_ITEM_WEIGHT"."CUST_NUM",
"SYS_ITEM_WEIGHT"."ITEM_NUM",
"SYS_ITEM_WEIGHT"."ITEM_TYPE",
"SYS_ITEM_WEIGHT"."ITEM_UNIT",
"SYS_ITEM_WEIGHT"."UNIT_WEIGHT",
"SYS_ITEM_WEIGHT"."EFF_DATE",
"SYS_ITEM_WEIGHT"."UPDATE_CNT",
"SYS_ITEM_WEIGHT"."CREATE_BY",
"SYS_ITEM_WEIGHT"."CREATE_DATE",
"SYS_ITEM_WEIGHT"."UPDATE_BY",
"SYS_ITEM_WEIGHT"."UPDATE_DATE",
"CUSTOMER"."CUST_NAME"
FROM "SYS_ITEM_WEIGHT",
"CUSTOMER"
WHERE ( "SYS_ITEM_WEIGHT"."CO_CODE" = "CUSTOMER"."CO_CODE" ) and
( "SYS_ITEM_WEIGHT"."CUST_NUM" = "CUSTOMER"."CUST_NUM" )
...全文
133 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxing 2006-12-07
  • 打赏
  • 举报
回复
问题是当dw_2中没有数据时可以更新(增加一行),当dw_2中有数据时就不可更新(无论新增行或修改资料):
仰天长啸qsx 2006-12-07
  • 打赏
  • 举报
回复
看看两个数据窗口的表的字段排列顺序是否相同!
zzxing 2006-12-07
  • 打赏
  • 举报
回复
kucool() ( ) 信誉:100 Blog 2006-12-07 12:05:54 得分: 0


看看有没把Rows->update properties 设置为可update 的!?


------------------------------------------------------------------
谢谢!我用PB有一段时间了。
zzxing 2006-12-07
  • 打赏
  • 举报
回复
上面回错了,那是另一个问题,最近PFC有点不正常。
昨天是去现不可更新的错误,今天变成了不响应pfc_save()事件,祖先窗囗的pfc_save()事件到到pfc_update()就没反映了:
// Update the changed objects.
li_save_rc = This.Event pfc_Update (ipo_pendingupdates) //到这里
kucool 2006-12-07
  • 打赏
  • 举报
回复
看看有没把Rows->update properties 设置为可update 的!?
zzxing 2006-12-07
  • 打赏
  • 举报
回复
试过了没用,我一直跟踪到pfc_w_master.pfc_save()事件的pfc_update()这里就没反应了。
青锋-SS 2006-12-07
  • 打赏
  • 举报
回复
应该是更新属性设置的问题,建议用modify()动态设置.
zzxing 2006-12-07
  • 打赏
  • 举报
回复
谢谢大家。原因找到了:
zzxing 2006-12-07
  • 打赏
  • 举报
回复

long ll_row
int li_cnt

//下面的pfc_preupdate()事件代码能通过
ll_row = This.GetRow()
If ll_row > 0 Then
If This.GetItemStatus(ll_row,0,primary!) = DataModified! Then
li_cnt = This.GetItemNumber(ll_row,'update_cnt')
If IsNull(li_cnt) Then li_cnt =0
This.SetItem(ll_row,'update_cnt',li_cnt + 1)
End If
End If

Return 1
jiaojian843 2006-12-07
  • 打赏
  • 举报
回复
数据缓冲区的状态有没有问题啊。

1,079

社区成员

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

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