Foxtable(狐表)用户栏目专家坐堂 → 多个窗口共用下拉窗口?


  共有5868人关注过本帖树形打印复制链接

主题:多个窗口共用下拉窗口?

帅哥哟,离线,有人找我吗?
wqb1102
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2210 威望:0 精华:0 注册:2008/8/31 22:37:00
多个窗口共用下拉窗口?  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/5/27 17:19:00 [只看该作者]

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

 


 回到顶部
帅哥哟,离线,有人找我吗?
wqb1102
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2210 威望:0 精华:0 注册:2008/8/31 22:37:00
  发帖心情 Post By:2013/5/27 17:26:00 [只看该作者]

不同表的窗口中的客户要根据已录入的县来筛选出相应的客户,但现在几个表的窗口中的客户都是根据出库表中的县筛选客户,不是根据当前表来筛选。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/5/27 17:29:00 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
wqb1102
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2210 威望:0 精华:0 注册:2008/8/31 22:37:00
  发帖心情 Post By:2013/5/27 20:04:00 [只看该作者]

那怎么会出现在其他表的窗口中录入省、市、县后,点击客户的下拉窗口,所筛选出来的客户是出库表中的县所属的客户。在没有使用第一个代码前,各窗口的客户是根据当前表中的县筛选出来的

 回到顶部
帅哥哟,离线,有人找我吗?
wqb1102
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2210 威望:0 精华:0 注册:2008/8/31 22:37:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2210 威望:0 精华:0 注册:2008/8/31 22:37:00
  发帖心情 Post By:2013/5/28 10:34:00 [只看该作者]

那位高手帮看一下?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2210 威望:0 精华:0 注册:2008/8/31 22:37:00
  发帖心情 Post By:2013/5/28 14:13:00 [只看该作者]

狐爸,我试了多次都没办法,才请教。
多谢了。

 回到顶部
帅哥哟,离线,有人找我吗?
wqb1102
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2210 威望:0 精华:0 注册:2008/8/31 22:37:00
  发帖心情 Post By: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() '将输入焦点返回下拉列表框

 回到顶部