dw_1(数据窗口)的初始化问题,请高手帮忙,高分相送,在线等待中~~~

时间:2021-10-27 21:31:22
一个dw_1(可以更新的数据窗口),初始时可以给某些字段赋值,这时候dw_1.ModifiedCount()>0,但这不是我所要的。
  怎样才能做到这一点,初始时字段赋值后dw_1.ModifiedCount不变换,只有当用户手工修改dw_1时才会使得dw_1.ModifiedCount()>0,本来打算调用dw_1.resetUpdate()函数,可是如果调用该函数那么当调用dw_1.update()后就会有问题了(初始值不能进入库中)。
  我要实现的功能是这样的:初始一个单据,有日期、开单人等固定的值项,让它自动产生可以防止用户输入错误,也可以减轻用户的劳动,所以要自动初始赋值,这时候,假如用户在初始的基础上没有做任何改变,则不必提示用户“是否修改当前单据”(即放弃保存当前数据),只有当用户在初始的数据的基础上修改了某些项或添加了数据后才显示“是否修改当前单据”,当用户选择“是”时,就可以提交到数据库里了,我这里现在是通过dw_1.ModifiedCount()>0来判断的,可是这样便出现了刚开始我所提到的问题了!

10 个解决方案

#1


dw_1.resetupdate(false)可以设置清掉数据窗更新标志,也就是说执行此语句后数据窗认为没有改动过,退出时不会有提示

同理dw_1.resetupdate(true)可设定更新标志

#2


像上面你所说的情况,可以在赋值之后执行一次dw_1.resetupdate(false)

#3


设置一个变量,li_flag
在editchange中付值,
 li_flag = 1//就是手工改动
然后判断
if li_flag = 1 then  
  messagebox("",“是否修改当前单据”)
  end if

#4


dw_1.setitemstatus( 1, i,Primary!, NotModified!)

#5


如果是retrieve的行,用楼上的方法。
如果是新行,用
dw_1.setitemstatus( 1, i,Primary!, New!)

#6


不好意思,第一次发贴时没有看清你说的“本来打算调用dw_1.resetUpdate()函数,可是如果调用该函数那么当调用dw_1.update()后就会有问题了(初始值不能进入库中)。...”,所以文不对题,见笑了 ^_^

支持楼上几位方法!

#7


学习
dw_1.setitemstatus( 1, i,Primary!, New!)

#8


This code sets the status of row 5 in the primary buffer of dw_rpt to DataModified! if its status is currently NewModified!:

dwItemStatus l_status

l_status = dw_rpt.GetItemStatus(5, 0, Primary!)

IF l_status = NewModified! THEN

        dw_rpt.SetItemStatus(5, 0, 

            Primary!, DataModified!)

END IF

#9


TGWall(我到长城(岁岁花似人不同,过好今天)) 
 klbt(快乐白兔)
已经说的很明白了,我不好说什么了。

#10


1、兄弟你的信誉有点低
----------------------
2、我回答的问题不知道是否合适 (不说废话了)
初始一个单据,要插入一条数据设置初始值  :
dw_1.insertrow(1)
dw_1.setitem(1,1,11)
dw_1.setitem(1,2,'aa1')
从新设置标志:
dw_1.resetupdate( )
调用的是:
dw_1.AcceptText()
IF  dw_1.ModifiedCount() + dw_1.DeletedCount() > 0 THEN
CHOOSE CASE MessageBox("操作提示","数据已经发生变化,是否保存?",Question!,YesNoCancel!,1)
CASE 1
//cb_save.TriggerEvent(clicked!)
CASE 2
Return 0//不做任何操作直接关闭窗口
CASE 3
Return 1//不会运行Close Event,维持原来的情况
END CHOOSE
END IF

#1


dw_1.resetupdate(false)可以设置清掉数据窗更新标志,也就是说执行此语句后数据窗认为没有改动过,退出时不会有提示

同理dw_1.resetupdate(true)可设定更新标志

#2


像上面你所说的情况,可以在赋值之后执行一次dw_1.resetupdate(false)

#3


设置一个变量,li_flag
在editchange中付值,
 li_flag = 1//就是手工改动
然后判断
if li_flag = 1 then  
  messagebox("",“是否修改当前单据”)
  end if

#4


dw_1.setitemstatus( 1, i,Primary!, NotModified!)

#5


如果是retrieve的行,用楼上的方法。
如果是新行,用
dw_1.setitemstatus( 1, i,Primary!, New!)

#6


不好意思,第一次发贴时没有看清你说的“本来打算调用dw_1.resetUpdate()函数,可是如果调用该函数那么当调用dw_1.update()后就会有问题了(初始值不能进入库中)。...”,所以文不对题,见笑了 ^_^

支持楼上几位方法!

#7


学习
dw_1.setitemstatus( 1, i,Primary!, New!)

#8


This code sets the status of row 5 in the primary buffer of dw_rpt to DataModified! if its status is currently NewModified!:

dwItemStatus l_status

l_status = dw_rpt.GetItemStatus(5, 0, Primary!)

IF l_status = NewModified! THEN

        dw_rpt.SetItemStatus(5, 0, 

            Primary!, DataModified!)

END IF

#9


TGWall(我到长城(岁岁花似人不同,过好今天)) 
 klbt(快乐白兔)
已经说的很明白了,我不好说什么了。

#10


1、兄弟你的信誉有点低
----------------------
2、我回答的问题不知道是否合适 (不说废话了)
初始一个单据,要插入一条数据设置初始值  :
dw_1.insertrow(1)
dw_1.setitem(1,1,11)
dw_1.setitem(1,2,'aa1')
从新设置标志:
dw_1.resetupdate( )
调用的是:
dw_1.AcceptText()
IF  dw_1.ModifiedCount() + dw_1.DeletedCount() > 0 THEN
CHOOSE CASE MessageBox("操作提示","数据已经发生变化,是否保存?",Question!,YesNoCancel!,1)
CASE 1
//cb_save.TriggerEvent(clicked!)
CASE 2
Return 0//不做任何操作直接关闭窗口
CASE 3
Return 1//不会运行Close Event,维持原来的情况
END CHOOSE
END IF