以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=69946)

--  作者:hotday1972
--  发布时间: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
--  发布时间:2015/6/13 11:10:00
--  
题目怎么没上去,晕倒!
--  作者:狐狸爸爸
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间:2015/6/13 11:48:00
--  

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

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

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

--  作者:狐狸爸爸
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间:2015/6/13 12:00:00
--  

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

 

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

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

--  作者:狐狸爸爸
--  发布时间:2015/6/13 12:03:00
--  
论坛没有多少人会像我这这样,耐心给你纠正这些基本的错误,多数只是给你就事论事,让你的代码能凑合跑起来,基本的学习要去啃帮助,否则你开发出10个项目,也还是菜鸟。
--  作者:hotday1972
--  发布时间:2015/6/13 12:09:00
--  

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

 

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


--  作者:hotday1972
--  发布时间: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”