以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在窗口中的关联表能用CurrentChanged吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=38331)

--  作者:xietan417
--  发布时间:2013/7/26 10:42:00
--  在窗口中的关联表能用CurrentChanged吗?

在窗口中的关联表能用CurrentChanged吗?窗口中的关联表又不能作为副本(昨天受BIN和狐爸启发写下以下代码,又发现如果不能作为副本的话又不能用)

If Forms("领料单").Opened Then \'如果窗口已经打开
Dim tbl As Table = Tables("领料单_Table2")  \'为下图中“相关信息”中的“仓库物料表_主表”

Dim dr As DataRow = DataTables("仓库物料表_主表").Find("料号 = \'" &  e.Table.Current("料号") & "\'")
If dr Is Nothing Then
    tbl.Filter = "" \'显示所有客户
Else
    tbl.Filter = "相同代码 = \'" & dr("相同代码") & "\'"
End If
End If

 

本想写在“领料单_明细”表中CurrentChanged的,但会出错,窗口中的table又不能作为副本!

 

 


图片点击可在新窗口打开查看此主题相关图片如下:领料单.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2013-7-26 10:44:37编辑过]

--  作者:Bin
--  发布时间:2013/7/26 10:44:00
--  
上个例子看看.
--  作者:狐狸爸爸
--  发布时间:2013/7/26 10:51:00
--  

关联表也有CurrentChanged事件,在原表设置事件代码即可,在代码中判断触发事件的表名:

 

If e.Table.Name = "表B"  Then ‘原表触发

ElseIf e.Table.Name = "表A.表B"  Then ‘关联表触发

End If


--  作者:xietan417
--  发布时间:2013/7/26 11:58:00
--  

If e.Table.Name = "领料单_明细"  Then \'原表触发
ElseIf e.Table.Name = "领料单_主表.领料单_明细"  And Forms("领料单").Opened   Then \'关联表触发
Dim tbl As Table = Tables("领料单_Table2")
Dim dr As DataRow = DataTables("仓库物料表_主表").Find("料号 = \'" &  Tables("领料单_主表.领料单_明细").Current("料号") & "\'")
If dr Is Nothing Then
    tbl.Filter = "" \'显示所有客户
Else
    tbl.Filter = "相同代码 = \'" & dr("相同代码") & "\'"
End If
End If

我在“领料单_明细”中的CurrentChanged写入了以上代码,效果是有,但是提示错误!

 

 


图片点击可在新窗口打开查看此主题相关图片如下:录像.gif
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-7-26 12:01:59编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/7/26 12:15:00
--  
If e.Table.Name = "领料单_明细"  Then \'原表触发
ElseIf e.Table.Name = "领料单_主表.领料单_明细"  And Forms("领料单").Opened   Then \'关联表触发
    If Tables("领料单_主表.领料单_明细").Current IsNot Nothing Then
        Dim tbl As Table = Tables("领料单_Table2")
        Dim dr As DataRow = DataTables("仓库物料表_主表").Find("料号 = \'" &  Tables("领料单_主表.领料单_明细").Current("料号") & "\'")
        If dr Is Nothing Then
            tbl.Filter = "" \'显示所有客户
        Else
            tbl.Filter = "相同代码 = \'" & dr("相同代码") & "\'"
        End If
    End If
End If

--  作者:xietan417
--  发布时间:2013/7/26 16:04:00
--  
哦!难怪!加这个Tables("领料单_主表.领料单_明细").Current IsNot Nothing 来判断是否有选到行!谢啦!