窗口无法保存,请高手指教

sdml 2008-04-25 04:31:21
这是ue_save里面的代码,删除可以,保存不行,删除就直接删了,插入也可以插入数据,就是无法保存






Long ll_currow, ll_modcount ,ll_errcode, ll_modrow , ll_imod, ll_return, ll_delcount, ll_del
String ls_org_cd, ls_errtext,ls_cldl_cd, ls_khzb,ls_cldl_nm, ls_cl_unit
dec ldb_khzb
Int li_seq, i

Accept_Err_Flag = 0
Message.ReturnValuec = 0

IF dw_sheet1.AceptText() < 1 THEN
Accept_Err_Flag = -1
Message.ReturnValue = 1
dw_sheet1.SetFocus()
RETURN
END IF
SetPointer(Hourglass!)
This.SetMicroHelp("")


ls_org_cd = dw_head.Object.org_cd[1]
IF IsNull(ls_org_cd) Or Trim(ls_org_cd) = "" THEN
MessageBox(This.Title + " (" + dw_head.Object.org_cd_t.text + ") ", +&
wf_msg_nm("SAA001"), Exclamation!)
wf_recovery("dw_head", 1, 'org_cd')
RETURN
End If

ll_modcount = dw_sheet1.modifiedCount()
ll_delcount = dw_sheet1.DeletedCount()
IF ll_modcount + ll_delcount = 0 THEN RETURN

FOR i = 1 TO ll_delcount
IF ll_delcount = 0 THEN EXIT
ls_org_cd = dw_sheet1.GetItemString(i, 'org_cd', DELETE!, TRUE)
ls_cldl_cd = dw_sheet1.GetItemString(i, 'cldl_cd', DELETE!, TRUE)
ls_cldl_nm = dw_sheet1.GetItemString(i, 'cldl_nm', DELETE!, TRUE)
ls_cl_unit = dw_sheet1.GetItemString(i, 'cl_unit', DELETE!, TRUE)

SELECT COUNT(*)
INTO :ll_del
FROM mxh030T(NOLOCK)
WHERE org_cd = :ls_org_cd
AND cldl_CD = :ls_cldl_cd ;

IF ll_del > 0 THEN


DELETE FROM mxh030T
WHERE org_cd = :ls_org_cd
AND cldl_CD = :ls_cldl_cd ;

IF SQLCA.SQLcode <> 0 THEN
ll_errcode = SQLCA.sqldbcode
ls_errtext = SQLCA.sqlerrtext
ROLLBACK USING SQLCA;
dw_sheet1.Event DbError(ll_errcode, ls_errtext, "", Primary!, 0)
RETURN
END IF
END IF
DELETE FROM mxh030T
WHERE org_cd = :ls_org_cd
AND cldl_CD = :ls_cldl_cd ;

IF SQLCA.SQLcode <> 0 THEN
ll_errcode = SQLCA.sqldbcode
ls_errtext = SQLCA.sqlerrtext
ROLLBACK USING SQLCA;
dw_sheet1.Event DbError(ll_errcode, ls_errtext, "", Primary!, 0)
RETURN
END IF

COMMIT USING SQLCA;
IF SQLCA.SQLcode <> 0 THEN
ll_errcode = SQLCA.sqldbcode
ls_errtext = SQLCA.sqlerrtext
ROLLBACK USING SQLCA;
dw_sheet1.Event DbError(ll_errcode, ls_errtext, "", Primary!, 0)
RETURN
END IF
NEXT

FOR ll_imod = 1 TO ll_modcount
ll_modrow = dw_sheet1.GetNextModified(ll_modrow, Primary!)

IF ll_modrow = 0 THEN EXIT


ls_org_cd = dw_sheet1.Object.org_cd[ll_modrow]
ls_cldl_cd = dw_sheet1.Object.cldl_cd[ll_modrow]
ls_cldl_nm = dw_sheet1.Object.cldl_nm[ll_modrow]
ls_khzb = dw_head.Object.khzb[ll_modrow]
ls_cl_unit = dw_sheet1.Object.cl_unit[ll_modrow]


// SELECT CONVERT(VARCHAR(22), khzb)
// INTO :ls_khzb
// FROM mxh030T(NOLOCK)
// WHERE org_cd = :ls_org_cd
// AND cldl_cd = :ls_cldl_cd



ldb_khzb = Dec(ls_khzb)

IF IsNull(ls_cldl_cd) OR Trim(ls_cldl_cd) = "" THEN
MessageBox(This.Title + " (" + dw_sheet1.Object.cldl_cd_t.text + ") ", +&
wf_msg_nm("SAA001"), Exclamation!)
//"材料大类代码."
wf_recovery("dw_sheet1", ll_modrow, 'cldl_cd')
RETURN
END IF
IF IsNull(ls_cldl_nm) OR Trim(ls_cldl_nm) = "" THEN
MessageBox(This.Title + " (" + dw_sheet1.Object.cldl_nm_t.text + ") ", +&
wf_msg_nm("SAA001"), Exclamation!)
//"材料大类名称."
wf_recovery("dw_sheet1", ll_modrow, 'cldl_nm')
RETURN
END IF
IF IsNull(ls_cl_unit) OR Trim(ls_cl_unit) = "" THEN
MessageBox(This.Title + " (" + dw_sheet1.Object.cl_unit_t.text + ") ", +&
wf_msg_nm("SAA001"), Exclamation!)
//"单位."
wf_recovery("dw_sheet1", ll_modrow, 'cl_unit')
RETURN
END IF

IF IsNull(ldb_khzb) THEN
MessageBox(This.Title, wf_msg_nm("SM0121"), Exclamation!)
//"考核指标位."
wf_recovery("dw_sheet1", ll_modrow, 'khzb')
RETURN
END IF



INSERT INTO mxh030T
( ORG_CD,
cldl_CD,
cldl_nm,
khzb,
cl_unit,
cl_lv1,
cl_lv2,
kh_lv1,
kh_lv2)
VALUES
( :ls_org_cd,
:ls_cldl_cd,
:ls_cldl_nm,
:ldb_khzb,
:ls_cl_unit,
null,
null,
null,
null) ;




IF SQLCA.SQLCode <> 0 THEN //OR SQLCA.SQLNRows < 1
ll_errcode = SQLCA.sqldbcode
ls_errtext = SQLCA.sqlerrtext
ROLLBACK USING SQLCA;
dw_sheet1.Event DbError(ll_errcode, ls_errtext, "", Primary!, 0)
RETURN
END IF
COMMIT USING SQLCA;

dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, DataModified!)
dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, NotModified!)
NEXT

dw_sheet1.ResetUpdate()
This.SetMicroHelp(wf_msg_nm("SP0084") + String(ll_modcount + ll_delcount))
This.Event ue_query()

dw_head.Enabled = TRUE
This.SetMicroHelp(wf_msg_nm('SP0084') + String(ll_modcount))
SetPointer(Arrow!)











...全文
146 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
eviler 2008-05-05
  • 打赏
  • 举报
回复
帮不了你,别看别的程序了,自己写吧

如果是 pb9的程序,还是 sqlserver 2000的,发给我吧 yuchu002@163.com
sdml 2008-05-05
  • 打赏
  • 举报
回复
嗯,保存的时候只要判断一下其中几个是否为空,然后有几个数据根据录入的数据进行计算,最后都插入到表里面
删除后保存时直接删除,
sdml 2008-05-05
  • 打赏
  • 举报
回复
还是无法删除和保存
eviler 2008-05-05
  • 打赏
  • 举报
回复
说要实现什么功能,大家帮你写个简练的
eviler 2008-05-05
  • 打赏
  • 举报
回复
这个应该不要 ,就成了
sdml 2008-05-05
  • 打赏
  • 举报
回复
这个也无法删除的,
dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, DataModified!)
dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, NotModified!)
应该改成什么呢?
the7thsense 2008-05-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 eviler 的回复:]
臭长臭长的


dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, DataModified!)
dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, NotModified!)

这个有问题吧,都改成 notmofified了,还保存个毛啊

你删除的数据能删除: 因为你执行 deleterow() ,数据就不在primary!缓冲区了,所以删除是成功的
[/Quote]
sdml 2008-05-05
  • 打赏
  • 举报
回复
这个是同样的问题,可是这个连删除都无法保存,请大家仔细看看

Long ll_errcode,i,ll_modcount, ll_modrow , ll_imod, ll_insrtrow, ll_return, ll_lot_sub_no, ll_no_len, ll_sht_no_len
String ls_org_cd,ls_cl_item_cd,ls_item_cd, ls_sh_cd,ls_sh_nm,ls_cldl_cd,ls_cldl_nm,ls_clg_nm,ls_svr_no, ls_db_no, &
ls_plan_no,ls_wk_ord_no, ls_key, ls_seq,ls_inv_unit,ls_clg_cd,ls_bas_yymm, &
ls_errtext,ls_item_nm,ls_spec,ls_cl_unit,ls_cjyy,ls_a_m_flag, ls_id_no, ls_a_p_flag

Long ll_delcount, ll_idel
Integer li_row
DateTime ld_sys_date, ld_trans_dt
Decimal ldb_khzb,ldb_bcl_qty,ldb_de_qty,ldb_qcjc_qty,ldb_bqly_qty,ldb_qmjc_qty,ldb_fl_qty,&
ldb_sjxh_qty, ldb_jgjz_qty, ldb_yk_qty, ldb_shl_qty,ldb_dbjg_qty,ldb_temp1_qty,ldb_temp2_qty
Int li_seq, li_sht_no_seq



usp_date_return(ld_sys_date)
ls_bas_yymm = String(date(ld_sys_date), "YYYY.MM.DD")

ll_modcount = dw_sheet1.ModifiedCount()
ll_delcount = dw_sheet1.DeletedCount()
IF ll_modcount + ll_delcount = 0 THEN RETURN

FOR i = 1 TO ll_delcount
IF ll_delcount = 0 THEN EXIT

ls_cl_item_cd = dw_sheet1.GetItemString(ll_idel,'cl_item_cd',Delete!,true)
ls_sh_cd = dw_head.Object.sh_cd[1]
ls_cldl_cd = dw_sheet1.GetItemString(ll_idel,'cldl_cd',Delete!,true)
ls_wk_ord_no = dw_sheet1.GetItemString(ll_idel,'wk_ord_no',Delete!,true)
ls_cl_item_cd = dw_sheet1.GetItemString(ll_idel,'cl_item_cd',Delete!,true)
ldb_bcl_qty = dw_sheet1.GetItemNumber(ll_idel,'bcl_qty',Delete!,true)
ld_trans_dt = dw_sheet1.GetItemDatetime(3, "trans_dt", Delete!, true)


DELETE FROM mxh010T
WHERE ORG_CD = :ls_org_cd
AND cl_item_cd = :ls_cl_item_cd
AND sh_cd = :ls_sh_cd
AND cldl_cd = :ls_cldl_cd
AND wk_ord_no = :ls_wk_ord_no
AND bcl_qty = :ldb_bcl_qty
AND trans_dt = :ld_trans_dt;

NEXT



FOR ll_imod = 1 TO ll_modcount
ll_modrow = dw_sheet1.GetNextModified(ll_modrow, Primary!)

IF ll_modrow = 0 THEN EXIT

ls_org_cd = dw_sheet1.Object.org_cd[ll_modrow]
ls_sh_cd = dw_sheet1.Object.sh_cd[ll_modrow]
ls_wk_ord_no = dw_sheet1.Object.wk_ord_no[ll_modrow]
ls_plan_no = dw_sheet1.Object.plan_no[ll_modrow]
ls_item_cd = dw_sheet1.Object.item_cd[ll_modrow]
ld_trans_dt = dw_sheet1.Object.trans_dt[ll_modrow]
ls_cldl_cd = dw_sheet1.Object.cldl_cd[ll_modrow]
ls_cl_item_cd = dw_sheet1.Object.cl_item_cd[ll_modrow]
ldb_bcl_qty = dw_sheet1.Object.ldb_bcl_qty[ll_modrow]
ldb_de_qty = dw_sheet1.Object.ldb_de_qty[ll_modrow]
ldb_qcjc_qty = dw_sheet1.Object.ldb_qcjc_qty[ll_modrow]
ldb_bqly_qty = dw_sheet1.Object.ldb_bqly_qty[ll_modrow]
ldb_qmjc_qty = dw_sheet1.Object.ldb_qmjc_qty[ll_modrow]
ldb_fl_qty = dw_sheet1.Object.ldb_fl_qty[ll_modrow]
ldb_khzb =dw_sheet1.Object.khzb[ll_modrow]
ls_clg_cd = dw_sheet1.Object.clg_cd[ll_modrow]
ls_cjyy = dw_sheet1.Object.cjyy[ll_modrow]



IF IsNull(ls_plan_no) OR ls_wk_ord_no = "" THEN
MessageBox(This.Title + " (" + dw_sheet1.Object.plan_no_t.text + ") ", wf_msg_nm("SAA001"), Exclamation!)
wf_recovery("dw_sheet1", ll_modrow, 'plan_no')
RETURN
END IF


IF IsNull(ldb_bcl_qty) THEN
MessageBox(This.Title + " (" + dw_sheet1.Object.bcl_qty_t.text + ") ", wf_msg_nm("SAA001"), Exclamation!)
wf_recovery("dw_sheet1", ll_modrow, 'bcl_qty')
RETURN
END IF




ldb_sjxh_qty = ldb_qcjc_qty + ldb_bqly_qty - ldb_qmjc_qty
ldb_jgjz_qty = ldb_bcl_qty * ldb_de_qty
ldb_yk_qty = ldb_jgjz_qty * (1+ldb_khzb) - ldb_sjxh_qty
ldb_shl_qty = (ldb_sjxh_qty - ldb_jgjz_qty)/ldb_jgjz_qty
ldb_dbjg_qty = ldb_shl_qty - ldb_khzb




INSERT INTO mxh050t
( ORG_CD, TRANS_DT,SH_CD,PLAN_NO,ITEM_CD,WK_ORD_NO, CLDL_CD,CL_ITEM_CD,KHZB,BCL_QTY DE_QTY,QCJC_QTY,BQLY_QTY,QMJC_QTY,sjxh_qty,jgjz_qty, yk_qty, shl_qty, dbjg_qty,FL_QTY,CLG_cd,CJYY,ISRT_EMP_NO,ISRT_DT,UPDT_EMP_NO,UPDT_DT )
VALUES
( :ls_org_cd,:ld_trans_dt,:ls_sh_cd,:ls_sh_nm,:ls_plan_no,:ls_item_cd,:ls_wk_ord_no,:ls_cldl_cd,:ls_cl_item_cd,:ldb_khzb,:ldb_bcl_qty, :ldb_de_qty,:ldb_qcjc_qty,:ldb_bqly_qty,:ldb_qmjc_qty, :ldb_sjxh_qty,:ldb_jgjz_qty, :ldb_yk_qty,:ldb_shl_qty,:ldb_dbjg_qty,:ldb_fl_qty,:ls_clg_cd,:ls_cjyy, :ida.user_id, GetDate(),:ida.user_id,GetDate() );

dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, DataModified!)
dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, NotModified!)
NEXT

dw_sheet1.ResetUpdate()
This.Event ue_query()
dw_head.Enabled = TRUE

UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
这个简单啊,网上搜一下就得到答案了.
lllyyymmm 2008-04-27
  • 打赏
  • 举报
回复
楼主写的程序太别扭了
eviler 2008-04-27
  • 打赏
  • 举报
回复
臭长臭长的


dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, DataModified!)
dw_sheet1.SetItemStatus(ll_modrow, 0, Primary!, NotModified!)

这个有问题吧,都改成 notmofified了,还保存个毛啊

你删除的数据能删除: 因为你执行 deleterow() ,数据就不在primary!缓冲区了,所以删除是成功的
xiongshouyong 2008-04-26
  • 打赏
  • 举报
回复
晕死...
dangerous123 2008-04-26
  • 打赏
  • 举报
回复
这样问太笼统了.
builderwfy 2008-04-25
  • 打赏
  • 举报
回复
應該有什麼提示的,有提示才能知道錯誤
青锋-SS 2008-04-25
  • 打赏
  • 举报
回复
有什么提示?

1,109

社区成员

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

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