以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自动编号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52420)

--  作者:风声
--  发布时间:2014/6/15 21:57:00
--  自动编号

图片点击可在新窗口打开查看此主题相关图片如下:自动编号.png
图片点击可在新窗口打开查看
老师,我要在"通信信息"表的"企业编号"列自动编号。
--  作者:有点甜
--  发布时间:2014/6/15 21:58:00
--  

 参考 示例三

 

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

 


--  作者:风声
--  发布时间:2014/6/15 22:30:00
--  

Select e.DataCol.Name
    Case "群组分类"
        If e.DataRow.IsNull("群组分类") Then
            e.DataRow("企业编号") = Nothing
        Else
            Dim lb As String = e.DataRow("群组分类")
            If e.DataRow("企业编号").StartsWith(lb) = False \'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(企业编号)","群组分类 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("企业编号") = lb & Format(idx,"00")老师,0的前面我不需要字符。我刚开始学代码看不懂啊
            End If
        End If
End Select

 


--  作者:有点甜
--  发布时间:2014/6/15 22:37:00
--  

 如下

 

Select e.DataCol.Name
    Case "群组分类"
        If e.DataRow.IsNull("群组分类") Then
            e.DataRow("企业编号") = Nothing
        Else
            Dim lb As String = e.DataRow("群组分类")
            Dim max As Integer
            Dim idx As Integer
            max = e.DataTable.Compute("Max(企业编号)","群组分类 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
            If max > "" Then \'如果存在最大编号
                idx = max + 1 \'获得最大编号的顺序号,并加1
            Else
                idx = 1 \'否则顺序号等于1
            End If
            e.DataRow("企业编号") = idx
        End If
End Select


--  作者:风声
--  发布时间:2014/6/15 22:51:00
--  

NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.5.12.1
错误所在事件:表,通信,DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Conversion from string "" to type \'Double\' is not valid.
Input string was not in a correct format.

老师,有错误提示


--  作者:有点甜
--  发布时间:2014/6/15 23:18:00
--  
 回复5楼,你的 企业编号 要清空,然后改成 数值列,不要用字符列
--  作者:风声
--  发布时间:2014/6/16 8:42:00
--  
老师,没有用还是这个错误提示.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.5.12.1
错误所在事件:表,通信,DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Conversion from string "" to type \'Double\' is not valid.
Input string was not in a correct format.

--  作者:Bin
--  发布时间:2014/6/16 8:44:00
--  
看代码不应该有地方出现这个错误,

建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

先找出是哪一行出错,然后分析原因,搞不定,贴出代码,并告诉我们运行到哪一行出错,或者上例子.

--  作者:有点甜
--  发布时间:2014/6/16 9:03:00
--  

 呵呵,要这样改。

 

Select e.DataCol.Name
    Case "群组分类"
        If e.DataRow.IsNull("群组分类") Then
            e.DataRow("企业编号") = Nothing
        Else
            Dim lb As String = e.DataRow("群组分类")
            Dim idx As Integer
            idx = e.DataTable.Compute("Max(企业编号)","群组分类 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
            e.DataRow("企业编号") = idx + 1
        End If
End Select


--  作者:风声
--  发布时间:2014/6/16 10:56:00
--  
好了