Foxtable(狐表)用户栏目专家坐堂 → [求助]两表两列取值目录树


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

主题:[求助]两表两列取值目录树

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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
[求助]两表两列取值目录树  发帖心情 Post By:2019/4/18 11:48:00 [只看该作者]

表A地区列,下拉取表B与表A国家列一样值的地区列值,如果表A国家列值在表B中不存在,就取值表B国家列“其他”值对应的地区列值

 

同时还想实现,如果表A地区列已录入地区值,只能下拉目录树选择录入排在当前值后面的值,比如表A 国家列:中国,地区列当前值是2,下拉目录树只能录入3(可能是中文)

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表下拉单选.foxdb

[此贴子已经被作者于2019/4/18 11:48:41编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/18 12:32:00 [只看该作者]

prepareEdit事件

 

static flag As Boolean = False

If e.Col.name = "地区" Then
    If e.IsFocusCell And flag = False Then
        Dim tb As New DropTreeBuilder
        tb.SourceTable = DataTables("表B") '指定目录树表
        tb.TreeCols = "地区" '指定用于生成目录树的列
        tb.ReceiveCols = "地区" '指定数据接收列
       
        Dim fdr As DataRow = DataTables("表B").find("国家='" & e.Row("国家") & "'")
        If fdr IsNot Nothing Then
            Dim dq As Integer = e.Table.DataTable.Compute("max(地区)", "国家='" & e.Row("国家") & "' and _Identify <> " & e.Row("_Identify"))
            tb.TreeFilter = "国家='" & e.Row("国家") & "' and 地区 > " & dq
        Else
            Dim dq As Integer = e.Table.DataTable.Compute("max(地区)", "国家='其他' and _Identify <> " & e.Row("_Identify"))
            tb.TreeFilter = "国家='其他' and 地区 > " & dq
        End If
        e.Col.DropTree = tb.Build()
        flag = True
    End If
Else
    flag = False
End If


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)prepareEdit事件?static fl...  发帖心情 Post By:2019/4/18 14:19:00 [只看该作者]

版主,上面代码下拉目录树一样,不能根据国家列不同,下拉显示不同

如果要在窗口里面下拉,代码怎么写呢?

 

我的版本不能升级了,回复辛苦贴出代码了

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表下拉单选.foxdb

[此贴子已经被作者于2019/4/18 14:20:43编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/18 15:00:00 [只看该作者]

1、

 

static flag As Boolean = False
If e.Col.name = "地区" Then
    If e.IsFocusCell And flag = False Then
        Dim tb As New DropTreeBuilder
        tb.SourceTable = DataTables("表B") '指定目录树表
        tb.TreeCols = "地区" '指定用于生成目录树的列
        tb.ReceiveCols = "地区" '指定数据接收列
       
        Dim fdr As DataRow = DataTables("表B").find("国家='" & e.Row("国家") & "'")
        If fdr IsNot Nothing Then
            Dim dq As Integer = e.Table.DataTable.Compute("max(地区)", "国家='" & e.Row("国家") & "' and _Identify <> " & e.Row("_Identify"))
            tb.TreeFilter = "国家='" & e.Row("国家") & "' and 地区 > " & dq
        Else
            Dim dq As Integer = e.Table.DataTable.Compute("max(地区)", "国家='其他' and _Identify <> " & e.Row("_Identify"))
            tb.TreeFilter = "国家='其他' and 地区 > " & dq
        End If
        e.Col.DropTree = tb.Build()
        flag = True
    Else
        flag = False
    End If
Else
    flag = False
End If

 

2、窗口的下拉目录树,参考

 

http://www.foxtable.com/webhelp/scr/2350.htm

 

 


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)1、?static flag As Boolea...  发帖心情 Post By:2019/5/23 18:36:00 [只看该作者]

改了两个表列名不一样,PrepareEdit上楼代码报错,求助

窗口的下拉目录树,还需其它代码才能实现PrepareEdit条件下拉嘛?

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:下拉目录树2.foxdb

[此贴子已经被作者于2019/5/23 19:07:42编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/23 19:13:00 [只看该作者]

static flag As Boolean = False
If e.Col.name = "工程状态" Then
    If e.IsFocusCell And flag = False Then
        Dim tb As New DropTreeBuilder
        tb.SourceTable = DataTables("下拉目录树") '指定目录树表
        tb.TreeCols = "县市" '指定用于生成目录树的列
        tb.ReceiveCols = "工程状态" '指定数据接收列
        Dim fdr As DataRow = DataTables("下拉目录树").find("省市='" & e.Row("设计任务要求_设计类别") & "'")
        If fdr IsNot Nothing Then
            Dim dq As DataRow = e.Table.DataTable.find("设计任务要求_设计类别='" & e.Row("设计任务要求_设计类别") & "' and _Identify <> " & e.Row("_Identify"), "_Identify desc")
            If dq IsNot Nothing Then
                Dim fdr1 As DataRow = DataTables("下拉目录树").find("省市='" & e.Row("设计任务要求_设计类别") & "' and 县市 = '" & dq("工程状态") & "'")
                tb.TreeFilter = "省市='" & e.Row("设计任务要求_设计类别") & "' and _Identify > " & fdr1("_Identify")
            Else
                tb.TreeFilter = "省市='" & e.Row("设计任务要求_设计类别") & "'"
            End If
        Else
            tb.TreeFilter = "省市='其他'"
        End If
        e.Col.DropTree = tb.Build()
        flag = True
    Else
        flag = False
    End If
Else
    flag = False
End If

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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)static flag As Boolean = FalseIf e...  发帖心情 Post By:2019/5/23 19:22:00 [只看该作者]

坛主,上楼代码在窗口2,中失效 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:下拉目录树3.foxdb

窗口1 AfterLoad 下面代码要怎么修改,实现上楼prepareEdit功能,求助

 

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("下拉目录树","省市|县市")

[此贴子已经被作者于2019/5/24 10:39:22编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/24 10:44:00 [只看该作者]

dropDownOpening 事件

 

Dim erow As Row = Tables("室内设计项目").Current
Dim filter As String = ""
Dim fdr As DataRow = DataTables("下拉目录树").find("省市='" & eRow("设计任务要求_设计类别") & "'")
If fdr IsNot Nothing Then
    Dim dq As DataRow = erow.Table.DataTable.find("设计任务要求_设计类别='" & eRow("设计任务要求_设计类别") & "' and _Identify <> " & eRow("_Identify"), "_Identify desc")
    If dq IsNot Nothing Then
        Dim fdr1 As DataRow = DataTables("下拉目录树").find("省市='" & eRow("设计任务要求_设计类别") & "' and 县市 = '" & dq("工程状态") & "'")
        Filter = "省市='" & eRow("设计任务要求_设计类别") & "' and _Identify > " & fdr1("_Identify")
    Else
        Filter = "省市='" & eRow("设计任务要求_设计类别") & "'"
    End If
Else
    Filter = "省市='其他'"
End If
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("下拉目录树","省市|县市", filter)


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


加好友 发短信
等级:四尾狐 帖子:812 积分:6676 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)dropDownOpening 事件 Dim ...  发帖心情 Post By:2019/9/11 11:43:00 [只看该作者]

师傅,按上楼代码,报错如下,求助

 

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2019.9.8.1
错误所在事件:DropBox1,DropDownOpening
详细错误信息:
未将对象引用设置到对象的实例。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:下拉目录树3.foxdb


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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/11 13:40:00 [只看该作者]

Dim erow As Row = Tables("室内设计项目").Current
If erow Is Nothing Then Return
Dim filter As String = ""
Dim fdr As DataRow = DataTables("下拉目录树").find("省市='" & eRow("设计任务要求_设计类别") & "'")
If fdr IsNot Nothing Then
    Dim dq As DataRow = erow.Table.DataTable.find("设计任务要求_设计类别='" & eRow("设计任务要求_设计类别") & "' and _Identify <> " & eRow("_Identify"), "_Identify desc")
    If dq IsNot Nothing Then
        Dim fdr1 As DataRow = DataTables("下拉目录树").find("省市='" & eRow("设计任务要求_设计类别") & "' and 县市 = '" & dq("工程状态") & "'")
        If fdr1 IsNot Nothing Then
            Filter = "省市='" & eRow("设计任务要求_设计类别") & "' and _Identify > " & fdr1("_Identify")
        Else
            Filter = "省市='" & eRow("设计任务要求_设计类别") & "'"
        End If
    Else
        Filter = "省市='" & eRow("设计任务要求_设计类别") & "'"
    End If
Else
    Filter = "省市='其他'"
End If
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("下拉目录树","省市|县市", filter)

 回到顶部
总数 23 1 2 3 下一页