以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多个窗口共用下拉窗口?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=33940)

--  作者:wqb1102
--  发布时间:2013/5/27 16:30:00
--  多个窗口共用下拉窗口?
狐爸,在使用列表项目过程中,发现原窗口中客户可根据县名筛选出相应的客户供录入,但现在几个窗口中筛选出的客户都是出库表中的县所筛选出的。
代码:
If e.Node.Level = 2 Then \'如果单击的是第三层节点
    Dim ps() As String = e.Node.FullPath.Split("\\")
    Dim tr As Row
    If e.Form.DropTable IsNot Nothing Then
        If e.Form.DropTable.Current IsNot Nothing Then
            tr = e.Form.DropTable.Current
        End If
    Else
        If e.Form.DropDownBox.BindingField  > "" Then
            Dim nm As String = e.Form.DropDownBox.BindingField
            nm = nm.Split(".")(0)
            tr = Tables(nm).Current
        End If
    End If
    If tr Is Nothing Then
        Return
    End If
    Dim dr As DataRow = DataTables("行政").Find("省= \'" & ps(0) & "\' And 市= \'" & ps(1) & "\' And 县= \'" & ps(2) & "\'" )
    If dr IsNot Nothing Then \'如果在行政区划表找到对应的行,则将此行的值写入出库表的当前行.
        tr("省") = dr("省")
        tr("市") = dr("市")
        tr("县") = dr("县")
        e.Form.DropDownBox.Value = tr("县") \'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
    End If
    e.Form.DropDownBox.CloseDropdown() \'关闭下拉目录树
End If
是否因为代码中红色部分原因?
如:门面窗口中Textchanged事件代码:
Dim drp As WinForm.DropDownBox = e.sender
If drp.DroppedDown Then \'如果下拉窗口已经打开
    Dim txt As String = e.sender.Text
    Dim tbl As Table = Tables("客户录入_Table1")
    If txt = "" Then
        tbl.Filter = "县  = \'" & Tables("门面").current("县")  & "\'"
    Else
        txt = "\'*" & txt & "*\'"
        tbl.Filter = "县  = \'" & Tables("门面").current("县")  & "\' And  客户 Like " & txt
    End If
 End If
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多个表和窗口,共用一个下拉窗口.table


--  作者:狐狸爸爸
--  发布时间:2013/5/27 17:19:00
--  

看不懂你的问题,你设置了筛选,任何时候都可以取消筛选啊

 


--  作者:wqb1102
--  发布时间:2013/5/27 17:26:00
--  
不同表的窗口中的客户要根据已录入的县来筛选出相应的客户,但现在几个表的窗口中的客户都是根据出库表中的县筛选客户,不是根据当前表来筛选。
--  作者:狐狸爸爸
--  发布时间:2013/5/27 17:29:00
--  

你上面的代码,哪里有和出库表相关的筛选?

提问的时候,尽量讲清楚来龙去脉。


--  作者:wqb1102
--  发布时间:2013/5/27 20:04:00
--  
那怎么会出现在其他表的窗口中录入省、市、县后,点击客户的下拉窗口,所筛选出来的客户是出库表中的县所属的客户。在没有使用第一个代码前,各窗口的客户是根据当前表中的县筛选出来的
--  作者:wqb1102
--  发布时间:2013/5/28 9:13:00
--  
今天再看一楼的例子。发现
1、项目中的列表项目和客户录入都是几个表共用的下拉窗口。其中“列表项目”窗口狐爸已帮设置过代码,但“客户录入”窗口还是原代码:
Dim txt As String = e.Form.DropDownBox.Text
Dim tbl As Table = Tables("客户录入_Table1")
If txt = "" Then
    tbl.Filter = "县  = \'" & Tables("出库").current("县")  & "\'"
Else
    txt = "\'*" & txt & "*\'"
    tbl.Filter = "县  = \'" & Tables("出库").current("县")  & "\' And  客户 Like " & txt
End If
e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框
所以造成几个表都根据“出库”表中的县来筛选客户。

问题:
1、列表项目和客户录入两个窗口是否需指定所有者表;
2、“客户录入”窗口的代码
Dim txt As String = e.Form.DropDownBox.Text
Dim tbl As Table = Tables("客户录入_Table1")
If txt = "" Then
    tbl.Filter = "县  = \'" & Tables("出库").current("县")  & "\'"
Else
    txt = "\'*" & txt & "*\'"
    tbl.Filter = "县  = \'" & Tables("出库").current("县")  & "\' And  客户 Like " & txt
End If
e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框
要如何设置使其根据当前窗口(使用下拉窗口的)所录入的县来筛选所属客户。
谢谢!

--  作者:wqb1102
--  发布时间:2013/5/28 10:34:00
--  
那位高手帮看一下?
--  作者:狐狸爸爸
--  发布时间:2013/5/28 11:56:00
--  
其实学编程,关键在于理解,如果你理解了我上次写给你的代码,那么这个问题你可以用同样的方法解决:
 
Dim txt As String = e.Form.DropDownBox.Text
Dim tbl As Table = Tables("客户录入_Table1")
Dim r AS row
If e.form.DopTable IsNot  Nothing Then
   r = e.Form.DropTable.Current
End If
Dim flt as String
If txt = "" Then
    if r IsNot Nothing Then
           flt= "县  = \'" &  r("县")  & "\'"
    End if
Else
    txt = "\'*" & txt & "*\'"
    if r IsNot Nothing Then   
        flt = "县  = \'" & r("县")  & "\' And  客户 Like " & txt
    else
       flt = "客户 Like " & txt
    end if
End If
tbl.Filter= flt
e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框

--  作者:wqb1102
--  发布时间:2013/5/28 14:13:00
--  
狐爸,我试了多次都没办法,才请教。
多谢了。

--  作者:wqb1102
--  发布时间:2013/5/28 14:15:00
--  
8楼代码少了一个字母,修改如下:
Dim txt As String = e.Form.DropDownBox.Text
Dim tbl As Table = Tables("客户录入_Table1")
Dim r AS row
If e.form.DropTable IsNot  Nothing Then
   r = e.Form.DropTable.Current
End If
Dim flt as String
If txt = "" Then
    if r IsNot Nothing Then
           flt= "县  = \'" &  r("县")  & "\'"
    End if
Else
    txt = "\'*" & txt & "*\'"
    if r IsNot Nothing Then   
        flt = "县  = \'" & r("县")  & "\' And  客户 Like " & txt
    else
       flt = "客户 Like " & txt
    end if
End If
tbl.Filter= flt
e.Form.DropDownBox.Select() \'将输入焦点返回下拉列表框