Foxtable(狐表)用户栏目专家坐堂 → 代码无效


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

主题:代码无效

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
代码无效  发帖心情 Post By:2018/1/12 15:08:00 [只看该作者]

如下这段代码不起作用:

If e.DataCol.Name = "吋长" Then
    If e.DataRow("直弯") = ""
        If e.NewValue IsNot Nothing
            MessageBox.Show("直弯一栏必须填写<直身/弯头/珠直/珠弯>字样!", "提示")
            e.Cancel = True
        End If
    End If
End If

但下面的代码是有效的:

If e.DataCol.Name = "确认" Then
    If e.DataRow("直弯") = ""
        If e.NewValue = True
            MessageBox.Show("直弯一栏必须填写<直身/弯头/珠直/珠弯>字样!", "提示")
            e.Cancel = True
        End If
    End If
End If

这是为什么?(备注:吋长为单精度小数型,直弯为字符型,确认为逻辑型)。谢谢。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/12 15:34:00 [只看该作者]

首先,datacolchanging事件,是你输入值以后,离开单元格,才会触发的。

 

然后,如果你希望输入的过程中立马提示,你要在ChangeEdit事件写代码。

 

如果要在输入之前提示,你要在startEdit事件写代码。

[此贴子已经被作者于2018/1/12 15:35:20编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/1/12 15:52:00 [只看该作者]

但是上面第一段代码,我输入一个值之后离开单元格时,不会触发提示啊。而第二段代码则能够正常提示。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/12 16:01:00 [只看该作者]

代码肯定没问题。你列【吋长】是表达式列?要改成数据列。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/1/12 16:50:00 [只看该作者]

【吋长】是数据列,但是在datacolchanged 里面有如下代码,是否有冲突?

If e.DataCol.name = "吋长度"
    e.DataRow("毫米长度") = Math.round(e.DataRow("吋长度") * 25.4,2)
End If

If e.DataCol.name = "毫米长度"
    e.DataRow("吋长度") = Math.round(e.DataRow("毫米长度") / 25.4,2)
End If

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/12 16:52:00 [只看该作者]

你尝试这样写,看弹出什么

 

msgbox(e.datacol.name)

If e.DataCol.Name = "吋长" Then
msgbox(e.DataRow("直弯"))
    If e.DataRow("直弯") = ""
msgbox(e.newvalue)
        If e.NewValue = Nothing
msgbox(3)
            MessageBox.Show("直弯一栏必须填写<直身/弯头/珠直/珠弯>字样!", "提示")
            e.Cancel = True
        End If
    End If
End If

 回到顶部