以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  增加行项目关闭的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=95873)

--  作者:feixianzhi
--  发布时间:2017/2/7 16:39:00
--  增加行项目关闭的问题

麻烦各位老师,我在一个表里想要增加一行,点增加行时,就显示如下图片提示,而后就退出,请各位老师帮忙。

 

 


此主题相关图片如下:qq截图20170207163025.png
按此在新窗口浏览图片

 

 

表属性DataColChanged事件中有如下代码:

 

\'在表中输入商品编码,在商品资料找出对应此商品的其他项自动填入表中
If e.DataCol.Name = "商品编码" Then \'当商品编码输入时
    \'在产品表找出该产品
    Dim dr As DataRow
    dr = DataTables("商品信息").Find("商品编码 = \'" & e.DataRow("商品编码") & "\'" )
    \'在商品资料表中找到对应商品时,自动填入.
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("商品名称")= dr("商品名称")
        e.DataRow("商品规格")= dr("商品规格")
        e.DataRow("生产企业")= dr("生产企业")
        e.DataRow("单位")= dr("标准单位")
    End If
End If


\'在表中输入供应商编码时,在供应商资料表中找出对应的供应商并自动填入表中,其他解释同上.
If e.DataCol.Name = "供应商编码" Then \'发生变化的是产品编号吗?
    \'在产品表找出该产品
    Dim dr As DataRow
    dr = DataTables("供应商信息").Find("供应商编码 = \'" & e.DataRow("供应商编码") & "\'" )
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("供应商名称")= dr("供应商名称")
    End If
End If

\'在表中输入供应商名称时,找出相应供应商编码并自动填入表中
If e.DataCol.Name = "供应商名称" Then \'发生变化的是产品编号吗?
    \'在产品表找出该产品
    Dim dr As DataRow
    dr = DataTables("供应商信息").Find("供应商名称= \'" & e.DataRow("供应商名称") & "\'" )
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("供应商编码")= dr("供应商编码")
    End If
End If

\'在表中输入客户编码时,在客户资料表中找出对应的客户并自动填入表中,其他解释同上.
If e.DataCol.Name = "客户编码" Then \'发生变化的是产品编号吗?
    \'在产品表找出该产品
    Dim dr As DataRow
    dr = DataTables("客户信息").Find("客户编码 = \'" & e.DataRow("客户编码") & "\'" )
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("客户名称")= dr("客户名称")
    End If
End If

\'在表中输入客户名称时,找出相应客户编码并自动填入表中
If e.DataCol.Name = "客户名称" Then \'发生变化的是产品编号吗?
    \'在产品表找出该产品
    Dim dr As DataRow
    dr = DataTables("客户信息").Find("客户名称= \'" & e.DataRow("客户名称") & "\'" )
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("客户编码")= dr("客户编码")
    End If
End If


 

表属性CurrentChanged事件中有如下代码:

 

 

\'以下代码是设置模拟关联表用代码
\'1.批发表1
If Forms("关联表").Opened() \'一定要判断用于模拟关联表的窗口是否已经打开
    Dim cls() As String = {"商品名称","供应商名称","客户编码","进价"} \' 假设checkbox控件名称和标题一样
   
    Dim t As Table = Tables("关联表_Table批发表1")
   
    With Tables("返利合同")
        If .Current Is Nothing Then
            t.Filter = "False"
        Else
            Dim filter As String = "1=1"
            For Each c As String In cls
                If Forms("关联表").Controls(c).Checked And t.Cols.Contains(c) And .Cols.Contains(c) Then
                    filter &= " and " & c & "=\'" & .Current(c) & "\'"
                End If
            Next
            If filter = "1=1" Then filter = "False"
            t.Filter = filter
        End If
    End With
End If

\'2.入库表1
If Forms("关联表").Opened() \'一定要判断用于模拟关联表的窗口是否已经打开
    Dim cls() As String = {"商品名称","供应商名称","客户编码","进价"} \' 假设checkbox控件名称和标题一样
   
    Dim t1 As Table = Tables("关联表_Table入库表1")
   
    With Tables("返利合同")
        If .Current Is Nothing Then
            t1.Filter = "False"
        Else
            Dim filter As String = "1=1"
            For Each c As String In cls
                If Forms("关联表").Controls(c).Checked And t1.Cols.Contains(c) And .Cols.Contains(c) Then
                    filter &= " and " & c & "=\'" & .Current(c) & "\'"
                End If
            Next
            If filter = "1=1" Then filter = "False"
            t1.Filter = filter
        End If
    End With
End If

\'3.批发表2

If Forms("关联表").Opened() \'一定要判断用于模拟关联表的窗口是否已经打开
    Dim cls() As String = {"商品名称","供应商名称","客户编码","进价"} \' 假设checkbox控件名称和标题一样
   
    Dim t1 As Table = Tables("关联表_Table批发表2")
   
    With Tables("返利合同")
        If .Current Is Nothing Then
            t1.Filter = "False"
        Else
            Dim filter As String = "1=1"
            For Each c As String In cls
                If Forms("关联表").Controls(c).Checked And t1.Cols.Contains(c) And .Cols.Contains(c) Then
                    filter &= " and " & c & "=\'" & .Current(c) & "\'"
                End If
            Next
            If filter = "1=1" Then filter = "False"
            t1.Filter = filter
        End If
    End With
End If

\'4.入库表2

If Forms("关联表").Opened() \'一定要判断用于模拟关联表的窗口是否已经打开
    Dim cls() As String = {"商品名称","供应商名称","客户编码","进价"} \' 假设checkbox控件名称和标题一样
   
    Dim t1 As Table = Tables("关联表_Table入库表2")
   
    With Tables("返利合同")
        If .Current Is Nothing Then
            t1.Filter = "False"
        Else
            Dim filter As String = "1=1"
            For Each c As String In cls
                If Forms("关联表").Controls(c).Checked And t1.Cols.Contains(c) And .Cols.Contains(c) Then
                    filter &= " and " & c & "=\'" & .Current(c) & "\'"
                End If
            Next
            If filter = "1=1" Then filter = "False"
            t1.Filter = filter
        End If
    End With
End If

 

 


--  作者:有点色
--  发布时间:2017/2/7 17:00:00
--  

1、先把你datacolchanged事件代码删除,测试,看有没有问题;

 

如果确实是这个事件,就加上 http://www.foxtable.com/webhelp/scr/2218.htm

 

2、再看看是否currentChanged事件,如果是这个事件问题,肯定是你窗口表控件写有冲突代码。


--  作者:feixianzhi
--  发布时间:2017/2/8 7:35:00
--  

有点色老师,问题已经解决。
原因是以下代码应该放在DataRowAdding事件中,我错误的放在了DataColChanging事件中。

\'新增行后,录入时间为当前日期
e.DataRow("录入时间") = Date.Today()

谢谢有点色老师。