以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  模拟关联表的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=95603)

--  作者:feixianzhi
--  发布时间:2017/1/25 9:54:00
--  模拟关联表的问题
我按照帮助做了一个模拟关联表,但出现如下错误提示:


.NET Framework 版本:2.0.50727.3649
Foxtable 版本:2016.7.29.1
错误所在事件:
详细错误信息:
未找到列 [盐酸贝那普利片]。



请问各位老师,是怎么回事。

--  作者:有点蓝
--  发布时间:2017/1/25 9:55:00
--  
提示很明显了,没有[盐酸贝那普利片]这列

具体代码贴上来看看

--  作者:feixianzhi
--  发布时间:2017/1/25 10:08:00
--  
一、窗口的AfterLoad事件代码

Dim t As Table = Tables("关联表_Table批发表1")
With Tables("返利合同")
    If .Current Is Nothing Then
        t.Filter = "False"
    Else
        t.Filter = "商品名称 = " & .Current("商品名称")
    End If
End With
t.OpenView("default")

二、返利合同表的CurrentChanged事件代码
If Forms("关联表").Opened() \'一定要判断用于模拟关联表的窗口是否已经打开
    Dim t As Table = Tables("关联表_Table批发表1")
    With Tables("返利合同")
        If .Current Is Nothing Then
            t.Filter = "False"
        Else
            t.Filter = "商品名称 = " & .Current("商品名称")
        End If
    End With
End If

三、批发表1  DataRowAdding事件

If CurrentTable.Name = "关联表_Table批发表1" Then \'如果当前表是模拟的关联表
    Dim r As Row = Tables("返利合同").Current
    If r IsNot Nothing Then
        e.DataRow("商品名称") = r("商品名称")
    End If
End If


麻烦有点蓝老师看一下,我的哪个代码错了。

--  作者:有点蓝
--  发布时间:2017/1/25 10:18:00
--  
t.Filter = "商品名称 = \'" & .Current("商品名称") & "\'"


--  作者:feixianzhi
--  发布时间:2017/1/25 10:38:00
--  

谢谢有点蓝老师,以上问题解决了。

还有个问题,我想按不同条件关联,如下图:

 

 


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

 

当选商品名称时,按商品名称关联; 当选商品名称和供应商名称时,按商品名称和供应商名称关联;当三个都选的时候,按三个条件关联。但我可能关联几个表,有的表里没有客户名称列。代码怎么改,请有点蓝老师帮忙。


--  作者:feixianzhi
--  发布时间:2017/1/25 10:58:00
--  
请有点蓝老师帮忙呀,谢谢。
--  作者:有点蓝
--  发布时间:2017/1/25 11:39:00
--  
试试

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 &= c & "=\'" & .Current(c) & "\'"
                End If
            Next
            If filter = "1=1" Then filter = "False"
            t.Filter = filter
        End If
    End With
End If
[此贴子已经被作者于2017/1/25 11:39:50编辑过]

--  作者:feixianzhi
--  发布时间:2017/1/25 14:22:00
--  
.NET Framework 版本:2.0.50727.3649
Foxtable 版本:2016.7.29.1
错误所在事件:
详细错误信息:
语法错误:“商品名称”运算符后缺少操作数。


有点蓝老师,运行上面代码,出现如上错误提示,麻烦看哪有问题。

--  作者:有点蓝
--  发布时间:2017/1/25 14:34:00
--  
不要完全照搬代码,看懂理解,改为符合自己的。看不懂就上传例子
--  作者:feixianzhi
--  发布时间:2017/1/25 15:09:00
--  

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

麻烦有点蓝老师。