以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何返回父表关联行,再执行按钮命令  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73087)

--  作者:everybody
--  发布时间:2015/8/12 9:31:00
--  如何返回父表关联行,再执行按钮命令
如图

父表和子表已经建立了 父表.推荐测评号=子表.推荐号  的关联,现在想实现:点击按钮“印”时,取定父表的当前关联行,再执行生成excel任务。



目前按钮“印”的代码:

\'自动判断使用excel模板
If Tables("父表").Current IsNot Nothing Then
    Dim txt As String = Tables("父表").Current("类型").SubString(2)
    Dim path As String
    If txt = "会议推荐" Or txt = "二次推荐"  Then
        path = "Attachments\\推荐登记表.xls"
    Else If txt = "谈话推荐"  Then
        path = "Attachments\\谈话推荐登记表.xls"
    Else
        msgbox("没有相应的Excel模板!")
    End If
    If path > "" Then
        Dim Book As New XLS.Book(ProjectPath & path)
        Dim fl As String = ProjectPath & "Reports\\推荐登记表.xls"
        Book.Build() \'生成细节区
        Book.Save(fl) \'保存工作簿
        Dim Proc As New Process \'打开工作簿
        Proc.File = fl
        Proc.Start()
    End If
End If

--  作者:大红袍
--  发布时间:2015/8/12 10:10:00
--  

控制一下筛选就行

Dim Book As New XLS.Book(ProjectPath & path)
Dim fl As String = ProjectPath & "Reports\\推荐登记表.xls"
Tables("子表").Filter = "推荐号 = \'" & Tables("父表").Current("推荐测评号") & "\'"
Book.Build() \'生成细节区
Book.Save(fl) \'保存工作簿


--  作者:everybody
--  发布时间:2015/8/12 11:24:00
--  
感谢,实测,最后还要取消筛选,否则后面就乱了

Tables("子表").Filter = "" 

--  作者:大红袍
--  发布时间:2015/8/12 11:36:00
--  

 或者看一下这里

 

http://www.foxtable.com/help/topics/2626.htm

 


--  作者:everybody
--  发布时间:2015/8/12 11:59:00
--  
实测,筛选方案还是不完美,没有实现到 “选定父表当前行” 的功能

再研究下
[此贴子已经被作者于2015/8/12 11:59:45编辑过]

--  作者:everybody
--  发布时间:2015/8/12 12:05:00
--  
难道要用这个么?父子表实际已经有关联啦!

http://www.foxtable.com/help/index.html?n=2626.htm


假定我正在订单表操作,我们希望在订单表中选定一行时,客户表的光标能够自动定位到该客户,这样我一旦从订单表回到客户表,即可看到刚刚所选订单的客户资料。
为此我们在CurrentChanged事件中设置如下代码: 

If e.Table.Current Is Nothing Then \'如果Current为Nothing
    Return \'则返回
End
If

Dim
wz As Integer
Dim
dr As DataRow
dr = DataTables("客户").Find("[客户ID] = \'" & e.Table.Current("客户ID") & "\'")
If
dr IsNot Nothing Then
    wz = Tables("客户").FindRow(dr)
    If wz >= 0 Then
        Tables
("客户").Position = wz
    End If
End
If


--  作者:大红袍
--  发布时间:2015/8/12 12:31:00
--  
以下是引用everybody在2015/8/12 11:59:00的发言:
实测,筛选方案还是不完美,没有实现到 “选定父表当前行” 的功能

再研究下
[此贴子已经被作者于2015/8/12 11:59:45编辑过]

 

选定父表当前行是你手动选择的啊。

 

具体什么问题,做例子上来。