以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]程序连接SQL出错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=76600)

--  作者:kensou11111
--  发布时间:2015/11/2 10:02:00
--  [求助]程序连接SQL出错
我做了一个ERP软件的小外挂程序,连接我这边的SQL服务器没问题,功能测试也一切正常。

但是将程序发到客户的电脑上,连接他们的服务器时就会有问题(每次打开程序要2-3分钟,进入后点击功能按钮报错),他们服务器是2008R2,SQL是2005,用户机则是WIN7 32位,报错如下

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20151102092156.jpg
图片点击可在新窗口打开查看

button1的代码如下:

DataTables("comProduct").LoadFilter = "[ProdID] is not null"
DataTables("comProduct").Load
DataTables("ComProdLLC").LoadFilter = "[ProdID] is not null"
DataTables("ComProdLLC").Load
DataTables("ComUnitConver").LoadFilter = "[ProdID] is not null"
DataTables("ComUnitConver").Load

\'自动生成单号
Dim max,DH As String
Dim ld1 As String = e.Form.Controls("前缀").value
Dim ld2 As String = e.Form.Controls("颜色码").value
Dim idx As Integer

If ld1 IsNot Nothing And ld2 IsNot Nothing Then
    max = DataTables("comProduct").SQLCompute("Max(ProdID)","ProdID LIKE \'" & ld1 & ld2 & "%" & "\'") \'取得该类别的最大编号
    If max > "" Then \'如果存在最大编号
        idx = CInt(max.Substring(ld1.Length + ld2.Length,8)) + 1 \'获得最大编号的后四位顺序号,并加1
    Else
        idx = 1 \'否则顺序号等于1
    End If
    DH = ld1 & ld2 & Format(idx,"00000000")
    
    E.Form.Controls("产品编号").value = DH
    E.Form.Controls("默认仓库").value = "001"
    
    Dim dr As DataRow
    dr = DataTables("仓库设定").SQLFind("WareHouseID = \'001\'")
    If dr IsNot Nothing Then \'如果找到的话
        E.Form.Controls("仓库名称").value = dr("WareHouseName")
    End If
    
    E.Form.Controls("产品形态").value = 2
    E.Form.Controls("形态名称").value = "半成品"
    
Else
    MessageBox.Show("请先选择前缀和颜色码", "提示")
End If
[此贴子已经被作者于2015/11/2 10:12:42编辑过]

--  作者:kensou11111
--  发布时间:2015/11/2 11:25:00
--  
有没有高人帮忙分析一下啊?
--  作者:Hyphen
--  发布时间:2015/11/2 11:29:00
--  

出错应该在这里 idx = CInt(max.Substring(ld1.Length + ld2.Length,8)) + 1 \'获得最大编号的后四位顺序号,并加1

 

确认客户数据库的这个字段返回值的长度足够


--  作者:大红袍
--  发布时间:2015/11/2 12:18:00
--  

加入msgbox看看

 

msgbox(max)

msgbox(max.length)

idx = CInt(max.Substring(ld1.Length + ld2.Length,8)) + 1 \'获得最大编号的后四位顺序号,并加1