以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  DropDownForm 有DropTable属性,其它 的模式或独立 窗口有这样的属性吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=93661)

--  作者:yancheng
--  发布时间:2016/12/3 16:47:00
--  DropDownForm 有DropTable属性,其它 的模式或独立 窗口有这样的属性吗?
 If e.Form.DropTable IsNot Nothing Then \'如果下拉窗口是从表中打开
        tr = e.Form.DropTable.Current \'获取此表的当前行
    Else \'如果下拉窗口是通过DropdownBox打开
        Dim nm As String = e.Form.DropDownBox.BindingField \'获取绑定的字段
        nm = nm.Split(".")(0) \'获取绑定的表名
        tr = Tables(nm).Current \'获取此表的当前行


我现在有一个:模式窗口:添加 供应商;
双击事件如下:

Dim str() As String = {"材料维护","采购订单维护","预算计划维护","机具订单维护","采购入库维护","收支维护"}
Dim str1() As String = {"材料","采购订单","预算计划","机具订单","采购入库","收支管理"}
For i As Integer = 0 To str.Length-1
    If Forms(str(i)).opened Then
        Dim tbl As Table = Tables("添加供应商_Table1")
        Dim dr As Row = Tables(str1(i)).Current
        If dr IsNot Nothing  Then
            If Tables(str1(i)).Cols.Contains("供应商编号") Then
                dr("供应商编号") = tbl.Current("供应商编号")
            ElseIf Tables(str1(i)).Cols.Contains("单位编号") Then
                dr("单位编号") = tbl.Current("供应商编号")
                dr("往来单位") = tbl.Current("公司名称")
            End If
            e.Form.Close()
            Return
        End If
    End If
Next

如果 能判断,是哪一个表或者TextBox,触发它弹出的,就不用写FOR EACH 遍历了。


[此贴子已经被作者于2016/12/3 16:51:57编辑过]

--  作者:有点蓝
--  发布时间:2016/12/3 17:06:00
--  
只有DropDownForm 有DropTable属性

打开模式窗口前用全局变量指定需要接收数据的表名称就好了

vars("表") = "材料"
Forms("添加供应商").open

双击事件
Dim tbl As Table = Tables("添加供应商_Table1")
Dim dr As Row = Tables(vars("表")).Current
        If dr IsNot Nothing  Then
            If Tables(vars("表")).Cols.Contains("供应商编号") Then
                dr("供应商编号") = tbl.Current("供应商编号")
            ElseIf Tables(vars("表")).Cols.Contains("单位编号") Then
                dr("单位编号") = tbl.Current("供应商编号")
                dr("往来单位") = tbl.Current("公司名称")
            End If
            e.Form.Close()
        End If