PB中如何判断数据窗口发生的改变
2012-09-24 16:19
661 查看
问题:
一个数据窗口的数据发生了改变,但是该如何确定是哪些行的哪些列发生了改变?
方法:
(注:本方法仅限于对数据 修改的判断,不包含新增或删除的数据)
Step 1,在数据窗口中加入一个计算列 if(IsRowModified(),'Y','N'),命名为 ismodified , 用来判断对应的数据行是否有改变。
Step 2, 编写检验代码
一个数据窗口的数据发生了改变,但是该如何确定是哪些行的哪些列发生了改变?
方法:
(注:本方法仅限于对数据 修改的判断,不包含新增或删除的数据)
Step 1,在数据窗口中加入一个计算列 if(IsRowModified(),'Y','N'),命名为 ismodified , 用来判断对应的数据行是否有改变。
Step 2, 编写检验代码
If dw_ticket.ModifiedCount() = 0 Then Return String ls_objects, ls_obj, ls_label, ls_coltype, ls_colvalue1, ls_colvalue2 Long ll_pos, ll_getrow, ll_rows String ls_modified_col dw_ticket.AcceptText() ll_rows = dw_ticket.RowCount() For ll_getrow = 1 To ll_rows If dw_ticket.GetItemString(ll_getrow,'ismodified') = 'N' Then Continue ls_modified_col = '' ls_objects = dw_ticket.Describe("DataWindow.Objects") + "~t" Do ll_pos = pos(ls_objects, "~t") ls_obj = left(ls_objects,ll_pos - 1) If (dw_ticket.describe(ls_obj+ ".type")) <> "column" Then ls_objects = right(ls_objects,len(ls_objects) - ll_pos) Continue End If ls_coltype = dw_ticket.Describe(ls_obj + ".coltype") ls_label = dw_ticket.Describe(ls_obj + "_t.text") If ll_getrow > 0 Then If Pos(ls_coltype, 'char') > 0 Then ls_colvalue1 = dw_ticket.GetItemString(ll_getrow, ls_obj, Primary!, True) ls_colvalue2 = dw_ticket.GetItemString(ll_getrow, ls_obj, Primary!, False) ElseIf Pos(ls_coltype, 'datetime') > 0 Then ls_colvalue1 = String(dw_ticket.GetItemDateTime(ll_getrow, ls_obj, Primary!, True)) ls_colvalue2 = String(dw_ticket.GetItemDateTime(ll_getrow, ls_obj, Primary!, False)) ElseIf Pos(ls_coltype, 'timestamp') > 0 Then ls_colvalue1 = dw_ticket.GetItemString(ll_getrow, ls_obj, Primary!, True) ls_colvalue2 = dw_ticket.GetItemString(ll_getrow, ls_obj, Primary!, False) ElseIf Pos(ls_coltype, 'long') > 0 Then ls_colvalue1 = String(dw_ticket.GetItemNumber(ll_getrow, ls_obj, Primary!, True)) ls_colvalue2 = String(dw_ticket.GetItemNumber(ll_getrow, ls_obj, Primary!, False)) ElseIf (Pos(ls_coltype, 'number') > 0 Or Pos(ls_coltype, 'decimal') > 0) Then ls_colvalue1 = String(dw_ticket.GetItemDecimal(ll_getrow, ls_obj, Primary!, True)) ls_colvalue2 = String(dw_ticket.GetItemDecimal(ll_getrow, ls_obj, Primary!, False)) ElseIf Pos(ls_coltype, 'real') > 0 Then ls_colvalue1 = String(dw_ticket.GetItemDecimal(ll_getrow, ls_obj, Primary!, True)) ls_colvalue2 = String(dw_ticket.GetItemDecimal(ll_getrow, ls_obj, Primary!, False)) End If If ls_colvalue1 <> ls_colvalue2 Then ls_modified_col = ls_modified_col + ls_obj + "~t" End If End If ls_objects = right(ls_objects,len(ls_objects) - ll_pos) Loop While (Pos(ls_objects, "~t") > 0) MessageBox("Info","The row: " + String(ll_getrow) + " is modified." + "~r~nModified Columns: " + ls_modified_col) Next
相关文章推荐
- PB判断数据窗口数据是否更改及原始值与当前值
- PB 数据窗口datawindow中的行改变颜色
- PB中如何用鼠标单击选中数据窗口中的一行?
- 如何在PB数据窗口中设置数据窗口的更新属性
- PB判断数据窗口数据是否更改及原始值与当前值
- PB [Grid风格数据窗口改变线条颜色] 的变通实现方法(也可以成为 带表头的Grid数据窗口)
- 【PB】如何创建一个动态的数据窗口对象?
- pb按钮:如何在PB中制作特殊形状数据窗口或按钮
- [pb] 如何动态生成数据源为存储过程的数据窗口?整理
- PB如何创建动态数据窗口
- PB调用setitem改变数据窗口内容时,手动触发itemchanged事件
- 【pb】 如何让数据窗口中字符型字段只能录入数字和符号'-' (自定义的掩码)
- js 关闭窗口时判断表单数据是否改变
- PB 怎么动态(用代码)改变数据窗口的属性(例如窗体的字体大小,字体颜色,背景颜色)
- PB [Grid风格数据窗口改变线条颜色] 的变通实现方法(也可以成为 带表头的Grid数据窗口)
- EF Code First,entity framework.数据表发生改变后如何处理
- opengl中如何使窗口大小改变时,图形的形状不发生变化?
- PB 数据窗口datawindow选中行改变颜色
- PB [Grid风格数据窗口改变线条颜色] 的变通实现方法(也可以成为 带表头的Grid数据窗口)
- pb中数据窗口中的行怎么实现通过拖拉行来改变顺序?不是按照字段排序