Foxtable(狐表)用户栏目专家坐堂 → 增加行项目关闭的问题


  共有1358人关注过本帖树形打印复制链接

主题:增加行项目关闭的问题

帅哥哟,离线,有人找我吗?
feixianzhi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
增加行项目关闭的问题  发帖心情 Post By: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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/7 17:00:00 [只看该作者]

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

 

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
feixianzhi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2017/2/8 7:35:00 [只看该作者]


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

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

谢谢有点色老师。

 回到顶部