以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  无效字符  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=123190)

--  作者:luodan
--  发布时间:2018/8/9 16:42:00
--  无效字符
.NET Framework 版本:2.0.50727.8789
Foxtable 版本:2018.7.9.1
错误所在事件:表,LJ,DataColChanged
详细错误信息:
调用的目标发生了异常。
表达式包含无效的字符串常量: \' And [_Identify] <> 11。


Select e.DataCol.Name
    Case "零件分类","零件名称" ,"零件类型"
        
        
        If e.DataRow.IsNull("零件分类") Or  e.DataRow.IsNull("零件类型")  Then
            e.DataRow("零件代码") = Nothing
            
        Else
            Dim X As String = GetPY(e.DataRow("零件类型"),True)
            Dim Y As String = GetPY(e.DataRow("零件分类"),True)
            Dim lb As String
            If X. Length = 2 And y.length = 3 Then
                lb=GetPY(e.DataRow("零件类型"),True) & "-" & GetPY(e.DataRow("零件分类"),True)
            Else
                If x.length<3 Or Y.length <4 Then
                    lb=X.padright(2,"0") & "-" & Y.padright(3,"0")
                    
                Else
                    lb=x.SubString(0, 2) & "-" & Y.SubString(0, 3)
                End If
            End If
            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(7,4)) + 1 \'获得最大零件代码的后四位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("零件代码") = lb & Format(idx,"0000")
            End If
        End If
End Select

--  作者:有点甜
--  发布时间:2018/8/9 17:33:00
--  

 

max = e.DataTable.Compute("Max(零件代码)", "零件代码 like \'" & lb & "%\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该首写简码的最大零件代码


--  作者:luodan
--  发布时间:2018/8/10 12:16:00
--  
谢谢,改过后,出现
.NET Framework 版本:2.0.50727.8789
Foxtable 版本:2018.7.9.1
错误所在事件:表,LJ,DataColChanged
详细错误信息:
调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length

--  作者:luodan
--  发布时间:2018/8/10 14:03:00
--  
谢谢,解决问题 ,能帮我解释一下:max = e.DataTable.Compute("Max(零件代码)", "零件代码 like \'" & lb & "%\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该首写简码的最大零件代码,,,为什么要加“”"零件代码 like \'" 
--  作者:有点甜
--  发布时间:2018/8/10 14:18:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/1284.htm

 

http://www.foxtable.com/webhelp/scr/2919.htm