以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口录入下拉窗口同步更新问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=42413)

--  作者:643561836
--  发布时间:2013/11/11 11:26:00
--  窗口录入下拉窗口同步更新问题
现在有一个项目跟踪窗口,有客户名称,业主名称,设计公司名称,它们能否共用同一个下拉窗口录入数据后,继承样关的数据?

\'如果除了客户名称列,还要同时从客户表选择其它多列内容输入到项目跟踪表,可以将DropDownClosed事件代码改为:

If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("下拉客户名称_Table1")
    If tbl.Current IsNot Nothing Then
        \'e.Form.DropDownBox.Value = tbl.Current("客户名称")
        \'
        If Tables("项目跟踪表").Current IsNot Nothing Then
            Dim r As Row = Tables("项目跟踪表").Current
            
            r("客户地址") = tbl.Current("详细地址")          \'将下拉窗口中的列同时输入==当前表中的对应列
            r("客户固话") = tbl.Current("固定电话")
            r("客户传真") = tbl.Current("传真")
            
            \'r("设计地址") = tbl.Current("详细地址")          \'将下拉窗口中的列同时输入==当前表中的对应列
            \'r("设计固话") = tbl.Current("固定电话")
            \'r("设计传真") = tbl.Current("传真")
            \'
            \'r("业主地址") = tbl.Current("详细地址")          \'将下拉窗口中的列同时输入==当前表中的对应列
            \'r("业主固话") = tbl.Current("固定电话")
            \'r("业主传真") = tbl.Current("传真")
\'
 e.Form.DropDownBox.Value = tbl.Current("客户名称")         \' 下拉输入框的值=下拉窗口的值

        End If
    End If
End If

--  作者:狐狸爸爸
--  发布时间:2013/11/11 11:35:00
--  

看看这个:

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

 

通过窗口而不是表打开下拉窗口的时候,没有DropTable和DropCol, 但是你可以通过e.Form.DropDownBox.BindingField 属性,间接获取正在输入的表名和列名。

 


--  作者:643561836
--  发布时间:2013/11/11 12:25:00
--  
谢谢!请狐狸爸爸看看,是否还可以优化代码!
\'如果除了客户名称列,还要同时从客户表选择其它多列内容输入到项目跟踪表,可以将DropDownClosed事件代码改为:

If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("下拉客户名称_Table1")
    If tbl.Current IsNot Nothing Then        \'
        If Tables("项目跟踪表").Current IsNot Nothing Then
            Dim r As Row = Tables("项目跟踪表").Current
            If e.Form.DropDownBox.BindingField = "项目跟踪表.客户名称" Then
                r("客户地址") = tbl.Current("详细地址")          \'将下拉窗口中的列同时输入==当前表中的对应列
                r("客户固话") = tbl.Current("固定电话")
                r("客户传真") = tbl.Current("传真")
                e.Form.DropDownBox.Value = tbl.Current("客户名称")         \' 下拉输入框的值=下拉窗口的值
            End If
            
            If e.Form.DropDownBox.BindingField = "项目跟踪表.设计名称" Then
                r("设计地址") = tbl.Current("详细地址")          \'将下拉窗口中的列同时输入==当前表中的对应列
                r("设计固话") = tbl.Current("固定电话")
                r("设计传真") = tbl.Current("传真")
                e.Form.DropDownBox.Value = tbl.Current("客户名称")         \' 下拉输入框的值=下拉窗口的值\'
            End If
            
            If e.Form.DropDownBox.BindingField = "项目跟踪表.业主名称" Then
                r("业主地址") = tbl.Current("详细地址")          \'将下拉窗口中的列同时输入==当前表中的对应列
                r("业主固话") = tbl.Current("固定电话")
                r("业主传真") = tbl.Current("传真")
                e.Form.DropDownBox.Value = tbl.Current("客户名称")         \' 下拉输入框的值=下拉窗口的值
             End If

        End If
    End If
End If

--  作者:狐狸爸爸
--  发布时间:2013/11/11 12:38:00
--  

能用就行了,相同性质的列在不同的表,最好同名,否则没办法简化。