以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  用Table控件模拟关联表,我把产品编号设置字符列了,发现有些不能关联,该怎么改?(已自己搞定,哈哈~)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=47637)

--  作者:小刚
--  发布时间:2014/3/13 23:30:00
--  用Table控件模拟关联表,我把产品编号设置字符列了,发现有些不能关联,该怎么改?(已自己搞定,哈哈~)

用Table控件模拟关联表,我把产品编号设置字符列了,发现有些不能关联,该怎么改?

 

我的设置方法和帮助里面的一模一样。后来发现有些行不能关联。

后面对照了帮助好久,发现我把“产品编号”设置字符列了,帮助里面是数值列,别的没有什么改变。

虽然我现在的“产品编号”是数字,但是由于产生这些编号,我是采用时间分秒产生的,所以必须是字符列,现在该怎么改下面的代码呢?

让没有关联的行,关联起来?

 

 

4、窗口的AfterLoad事件设为:

Dim t As Table = Tables("窗口1_Table1")
With
Tables("产品")
    If
.Current Is Nothing Then
        t.Filter =
"False"
   
Else
        t.Filter =
"产品编号 = " & .Current("产品编号")
    End
IF
End
With

此段代码确保打开窗口后,Tables("窗口1_Table1")只显示当前选定产品的订单。

5、关闭窗口设计器,回到产品表,打开表属性设置窗口,将其CurrentChanged事件代码设为:

If Forms("窗口1").Opened() \'一定要判断于模拟关联表的窗口是否已经打开
    Dim
t As Table = Tables("窗口1_Table1"
)
    With
Tables("产品"
)
        If
.Current Is Nothing
Then
            t.Filter =
"False"
       
Else
            t.Filter =
"产品编号 = " & .Current("产品编号")
        End
IF
   
End With
End
If

当我们在产品表选择不同的产品时,上述代码会判断窗口是否已经打开,如果已经打开,则更新Tables("窗口1_Table1")的Filter属性,使其显示新选定产品的订单。

[此贴子已经被作者于2014-3-14 0:25:28编辑过]

--  作者:小刚
--  发布时间:2014/3/14 0:07:00
--  
我查了BIN老师的历史回复,字符列 需要添加单引号
t.Filter = "[bianhao_id] = \'" & .Current("bianhao_id") & "\'"
 
我把上面的代码
t.Filter = "产品编号 = " & .Current("产品编号")
改成了
t.Filter = "[产品编号] = \'" & .Current("产品编号") & "\'"
也不行啊,这是什么原因呢?

--  作者:小刚
--  发布时间:2014/3/14 0:21:00
--  

哦,我又看了一下历史查询记录,才突然想起来,我使用的是外部数据源,是不是与这个有关系?那该如何更改代码呢?

外部数据源名称 "订单数据库"


--  作者:小刚
--  发布时间:2014/3/14 0:28:00
--  

为了不让后学者走冤枉路,写出搞定方法:

t.Filter 改为 DataTables("***").LoadFilter  即可


--  作者:lsy
--  发布时间:2014/3/14 7:37:00
--  

楼主不错。

既会学,也会教。


--  作者:无限5180
--  发布时间:2014/3/17 18:18:00
--  



--  作者:无限5180
--  发布时间:2014/3/17 18:18:00
--  
我也在等待高手解决这个问题