Foxtable(狐表)用户栏目专家坐堂 → [求助]


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

主题:[求助]

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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
[求助]  发帖心情 Post By:2015/6/13 11:09:00 [只看该作者]

Dim lower As Single = Tables("检验明细").Current("Min")
Dim uper As Single = Tables("检验明细").Current("Max")
Dim m As Single = Tables("检验明细").Current("测量值")
Dim b As Boolean
If e.DataCol.Name = "测量值" AndAlso m <> Nothing Then
    If lower <> Nothing Then
        If uper <> Nothing
            b = (m >= lower) And (m <= uper)
        Else
            b = (m >= lower)
        End If
    Else
        If uper <> Nothing Then
            b = (m <= uper)
        End If
    End If
Else
    Tables("检验明细").Current("判别") = ""
End If
If b = True Then
    Tables("检验明细").Current("判别") = "OK"
Else
    Tables("检验明细").Current("判别") = "NG"
End If

 

这段判断,放在datacolchanged,  为什么程序出错中断?


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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
  发帖心情 Post By:2015/6/13 11:10:00 [只看该作者]

题目怎么没上去,晕倒!

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/6/13 11:37:00 [只看该作者]

1、表事件是有e参数的,在表事件中写代码,应该用e参数来表示触发事件的行和列,不要用Current,当前行并非一定就是触发事件的行:

http://www.foxtable.com/help/topics/0604.htm

http://www.foxtable.com/help/topics/1591.htm

 

否则即使现在不出错,以后也会出错。

 

2、判断空值的正确方法:

http://www.foxtable.com/help/topics/1470.htm

 

 

3、提问的时候,最好告诉错误提示,以及自己的设计逻辑

 

最好按顺序系统学习一遍,或者看一下论坛置顶的视频教程。

 

你这样基本abc没有掌握,胡乱拼凑的东西,必定漏洞百出

[此贴子已经被作者于2015/6/13 11:40:47编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/6/13 11:44:00 [只看该作者]

Dim lower As Single = e.DataRow("Min")
Dim uper As Single = e.DataRow("Max")
Dim m As Single = e.DataRow("测量值")
Dim b As Boolean
If e.DataCol.Name = "测量值" AndAlso e.DataRow.IsNull("测量值") = False Then
    If e.DataRow.Isnull("Min") = False Then
        If e.DataRow.Isnull("max") = False Then
            b = (m >= lower) And (m <= uper)
        Else
            b = (m >= lower)
        End If
    Else
        If e.DataRow.Isnull("max") = False Then
            b = (m <= uper)
        End If
    End If
Else
    e.DataRow("判别") = Nothing
End If
If b = True Then
    e.DataRow("判别") = "OK"
Else
    e.DataRow("判别") = "NG"
End If
[此贴子已经被作者于2015/6/13 11:48:28编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/6/13 11:48:00 [只看该作者]

学到现在,从你的代码可以看出编程逻辑是不错的,但是连事件的e参数都不知道,怎么能写出合格的代码呢?

实在看不下帮助,可以将论坛置顶的视频教程《编程基础》,《基本类型》,《事件编程》,这三个视频是基础来的,对应的三章帮助也是基础。

[此贴子已经被作者于2015/6/13 11:49:12编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/6/13 11:58:00 [只看该作者]

从另一个帖子得知,我还忽视了你没有判断列名的错误,继续改:

 

Dim lower As Single = e.DataRow("Min")
Dim uper As Single = e.DataRow("Max")
Dim m As Single = e.DataRow("测量值")
Dim b As Boolean
If e.DataCol.Name = "测量值"
    If  e.DataRow.IsNull("测量值") = False Then
        If e.DataRow.Isnull("Min") = False Then
            If e.DataRow.Isnull("max") = False Then
                b = (m >= lower) And (m <= uper)
            Else
                b = (m >= lower)
            End If
        Else
            If e.DataRow.Isnull("max") = False Then
                b = (m <= uper)
            End If
        End If
    Else
        e.DataRow("判别") = Nothing
    End If
    If b = True Then
        e.DataRow("判别") = "OK"
    Else
        e.DataRow("判别") = "NG"
    End If
End If

 

帮助特别强调:

http://www.foxtable.com/help/topics/1522.htm

 


[此贴子已经被作者于2015/6/13 12:01:10编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/6/13 12:00:00 [只看该作者]

你有编程的逻辑,但是短短一段代码,原则性错误就有如此之多。

 

你花50%的时间学习,50%的时间开发出合格产品,比你花1%的时间学习,用10000%的时间开发出漏斗百出的产品,要划算很多。

[此贴子已经被作者于2015/6/13 12:05:58编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/6/13 12:03:00 [只看该作者]

论坛没有多少人会像我这这样,耐心给你纠正这些基本的错误,多数只是给你就事论事,让你的代码能凑合跑起来,基本的学习要去啃帮助,否则你开发出10个项目,也还是菜鸟。

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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
  发帖心情 Post By:2015/6/13 12:09:00 [只看该作者]

多谢了,太感谢。我没有大把大把时间连贯学习的,都是零碎时间,学得不到位,见笑了。

 

我有信心学好。e参数我知道,但怎么用还有些糊涂,太感谢狐爸了


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


加好友 发短信
等级:一尾狐 帖子:430 积分:2889 威望:0 精华:0 注册:2015/4/28 21:12:00
  发帖心情 Post By:2015/6/13 12:17:00 [只看该作者]

以下是引用狐狸爸爸在2015/6/13 11:58:00的发言:

从另一个帖子得知,我还忽视了你没有判断列名的错误,继续改:

 

Dim lower As Single = e.DataRow("Min")
Dim uper As Single = e.DataRow("Max")
Dim m As Single = e.DataRow("测量值")
Dim b As Boolean
If e.DataCol.Name = "测量值"
    If  e.DataRow.IsNull("测量值") = False Then
        If e.DataRow.Isnull("Min") = False Then
            If e.DataRow.Isnull("max") = False Then
                b = (m >= lower) And (m <= uper)
            Else
                b = (m >= lower)
            End If
        Else
            If e.DataRow.Isnull("max") = False Then
                b = (m <= uper)
            End If
        End If
    Else
        e.DataRow("判别") = Nothing
    End If
    If b = True Then
        e.DataRow("判别") = "OK"
    Else
        e.DataRow("判别") = "NG"
    End If
End If

 

帮助特别强调:

http://www.foxtable.com/help/topics/1522.htm

 


[此贴子已经被作者于2015/6/13 12:01:10编辑过]

我有判断列名的“If e.DataCol.Name = "测量值" AndAlso m <> Nothing Then”


 回到顶部
总数 11 1 2 下一页