以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]程序异常  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=71770)

--  作者:260964006
--  发布时间:2015/7/17 17:09:00
--  [求助]程序异常

If e.DataTable.Name <> "变更记录" Then   \'数据变更记录
    Dim dr As DataRow = DataTables("变更记录").AddNew
    
    dr("表名") = e.DataTable.Name
    dr("列名") = e.DataCol.Name
    dr("行号") = e.DataRow("_Identify")
    dr("时间") = Date.Now
    dr("操作") = """" & e.OldValue &  """ 改成了 """ & e.NewValue & """"  
End If
 messagebox.show(1)
If e.DataCol.Name = "零件图号" Then   \'订单零件名称,含税单价,供应商简称的来源
    Dim nms() As String = {"零件名称","A点_含税单价_更新后","A点_供应商简称"}
    If e.NewValue Is Nothing Then
        For Each nm As String In nms
            e.DataRow(nm) = Nothing
        Next
messagebox.show(2)
    Else
        Dim dr As DataRow
        dr = DataTables("价格表").Find("[零件图号] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing
            For Each nm As String In nms
                e.DataRow(nm) = dr(nm)
            Next
        End If
    End If
End If
messagebox.show(3)
If e.DataCol.Name = "供应商简称" Then   \'合同采购通则和供应商代码更新
    Dim esb() As String = {"供应商代码","合同编号_采购通则"}
    If e.NewValue Is Nothing Then
        For Each es As String In esb
            e.DataRow(es) = Nothing
        Next
    Else
messagebox.show(4)
        Dim dt As DataRow
        dt = DataTables("供应商信息表").Find("[供应商简称] = \'" & e.NewValue & "\'")
        If dt IsNot Nothing
            For Each es As String In esb
                e.DataRow(es) = dt(es)
            Next
        End If
    End If
End If
messagebox.show(5)

 

上面程序运行提示如下

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.11.11.1
错误所在事件:全局表事件, DataColChanged
详细错误信息:
调用的目标发生了异常。
Substring()参数超出范围。
参数名: length

 

我加messagebox.show()测试,提示是1,点下就是3,再点就是5,求高手



--  作者:大红袍
--  发布时间:2015/7/17 17:14:00
--  
去看操作的表的DataCochanged事件 去看变更记录表的Datacolchanged事件
--  作者:260964006
--  发布时间:2015/7/17 17:28:00
--  

1、订单表:If e.DataCol.Name = "取消与否" OrElse e.DataCol.Name = "开票与否"  Then
   
    Tables("采购订单").Filter = "([开票与否] = false Or [开票与否] Is Null) and ([取消与否] = false or [取消与否] is null)"
   
End If

 

2、发票表: If e.DataCol.Name = "完成与否" Then
    If e.DataRow("完成与否") = True Then
        Tables("发票及资金计划").Filter = "[完成与否] <> true Or [完成与否] Is Null"
    End If
End If

其余表都没有Datacolchanged


--  作者:大红袍
--  发布时间:2015/7/17 17:30:00
--  
导出所有代码,然后搜索关键字 Substring
--  作者:260964006
--  发布时间:2015/7/17 17:48:00
--  

Substring在所有程序中都没有,但是我发现问题了。

我在其中一表设置了附件的显示,把第一列定义为了整数。我删除了就没有了,我想应该设置为 备注 型可以。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目10.table