Foxtable(狐表)用户栏目专家坐堂 → 对单元格前后台内容进行比较的问题


  共有2627人关注过本帖树形打印复制链接

主题:对单元格前后台内容进行比较的问题

帅哥哟,离线,有人找我吗?
lake163
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
对单元格前后台内容进行比较的问题  发帖心情 Post By:2015/9/30 10:33:00 [只看该作者]

在多人同时编辑的情况下,为防止后台数据已更新,在每一次修改前均想判别前后台数据是否一致。为了简便和精细,不采用对比修改时间的方法,而是在表的StartEdit 事件中:

If e.Table.Current Is Nothing Then

Else

    Dim dr As DataRow = Tables("基本信息").Current.DataRow     '取当前行

If e.Row(e.Col.name) <> dr.SQLGetValue(e.Col.name)         '对前后台内容进行对比,        

Dim Result As DialogResult

        Result = MessageBox.Show("单元格前后台数据不一致,是否重新加载", "提示", MessageBoxButtons.YesNo)

        If Result = DialogResult.Yes Then

            dr.load(False)            '运行速度慢

        End If

    End If

End If

 

有几个问题请教老师。

1、当某单元格前后台数据至少有一个为空时,就会提示数据类型出错,主要是NULL值比较的问题。

  请问如何修改?

如果采取先分别判别e.Row(e.Col.name)  dr.SQLGetValue(e.Col.name)是否为空,

那对应的代码又如何写?(不会使用ISNULL

2、因为列有不同的类型,如何定义变量?

A = e.Row(e.Col.name)

B= dr.SQLGetValue(e.Col.name)

这样,在需要进行是否为空的判别时,可使代码更简捷。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/30 10:52:00 [只看该作者]

Dim dr As DataRow = e.Row.DataRow     '取当前行
Dim a = e.Row(e.Col.name)
Dim b = dr.SQLGetValue(e.Col.name)
If a <> cstr(iif(b.Gettype.name="DBNull",Nothing,b)) Then
   
    Dim Result As DialogResult
   
    Result = MessageBox.Show("单元格前后台数据不一致,是否重新加载", "提示", MessageBoxButtons.YesNo)
   
    If Result = DialogResult.Yes Then
       
        dr.load(False)            '运行速度慢
       
    End If
   
End If

 回到顶部
帅哥哟,离线,有人找我吗?
lake163
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
  发帖心情 Post By:2015/9/30 10:57:00 [只看该作者]

哈哈,原来可以不带类型定义变量。
谢谢!

 回到顶部