以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]后台数据统计 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114084) |
-- 作者:沪上游客 -- 发布时间:2018/1/28 14:04:00 -- [求助]后台数据统计 老师你好! 我原来在项目中设置了按窗口控件条件筛选数据,如下图: Dim Filter As String With e.Form.Controls("CheckedComboBox2") If .Value IsNot Nothing Then Filter = "所属省份 in (\'" & .Value.Replace(",", "\',\'") & "\')" End If End With With e.Form.Controls("CheckedComboBox1") If .Value IsNot Nothing Then Filter = "项目类型 In (\'" & .Value.Replace(",", "\',\'") & "\')" End If End With With e.Form.Controls("TextBox2") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "施工区域 = \'" & .Value & "\'" End If End With With e.Form.Controls("TextBox1") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "最大承载力KN >= \'" & .Value & "\'" End If End With With e.Form.Controls("TextBox3") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "最深桩长m >= \'" & .Value & "\'" End If End With With e.Form.Controls("TextBox4") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "最大桩径mm >= \'" & .Value & "\'" End If End With With e.Form.Controls("TextBox5") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "基坑深度m >= \'" & .Value & "\'" End If End With With e.Form.Controls("NumericComboBox1") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "工程造价 >= \'" & .Value & "\'" End If End With With e.Form.Controls("StartDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "开工日期 >= #" & .Value & "#" End If End With With e.Form.Controls("EndDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "竣工日期 <= #" & .Value & "#" End If End With If e.Form.Controls("在建工程").Checked = True \' 如果选择了"在建工程" If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "竣工日期 >= #" & Date.Today & "#" End If If Filter > "" Then Tables("工程技术参数").Filter = Filter End If Dim t As Table = Tables("工程技术参数") Dim n As Integer = t.DataTable.GetValues("合同编号", t.filter).count Dim lbl As WinForm.Label lbl = e.Form.Controls("Label5") lbl.Text = "符合条件工程数:" & n & "个," & "记录数:" & Tables("工程技术参数").Rows.Count & "条." 现在我的项目是按照条件加载数据,以上代码是按照已加载数据执行,需要按照后台数据筛选,代码应该怎么改? 谢谢老师!
[此贴子已经被作者于2018/1/28 14:07:50编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/1/28 14:59:00 -- Tables("工程技术参数").Filter = Filter
改成
Tables("工程技术参数").DataTable.LoadFilter = Filter Tables("工程技术参数").DataTable.Load |
-- 作者:沪上游客 -- 发布时间:2018/1/29 10:04:00 -- 老师还是不行,代码改后还是和原来一样,没有显示未加载数据。 另外我这个表是和“工程合同基础数据”(主表)有关联,有表达式列公式。 是不是要生成一个临时表,再生成? 谢谢!
[此贴子已经被作者于2018/1/29 10:06:15编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/1/29 10:06:00 -- 那改成
Tables("工程技术参数").DataTable.LoadPage = 0 Tables("工程技术参数").DataTable.LoadTop = "" Tables("工程技术参数").DataTable.LoadFilter = Filter Tables("工程技术参数").DataTable.Load |
-- 作者:沪上游客 -- 发布时间:2018/1/29 11:56:00 -- 老师还是不行 |
-- 作者:有点甜 -- 发布时间:2018/1/29 12:08:00 -- 以下是引用沪上游客在2018/1/29 11:56:00的发言:
老师还是不行
那是否报错?如果不报错,那不应该,实例发上来测试。 |
-- 作者:沪上游客 -- 发布时间:2018/1/29 12:53:00 -- 老师你好!我已发邮件给您了,请查收帮我看一下整个项目有什么问题?谢谢! |
-- 作者:沪上游客 -- 发布时间:2018/1/29 13:05:00 -- 老师你好!能给个QQ吗?传不上,文件太大了。 |
-- 作者:有点甜 -- 发布时间:2018/1/29 14:40:00 -- 1、贴出你写的全部代码;
2、加入msgbox,看弹出的filter是什么,有没有执行里面改的Load代码? |
-- 作者:沪上游客 -- 发布时间:2018/1/29 15:23:00 -- Dim Filter As String With e.Form.Controls("CheckedComboBox2") If .Value IsNot Nothing Then Filter = "所属省份 in (\'" & .Value.Replace(",", "\',\'") & "\')" End If End With With e.Form.Controls("CheckedComboBox1") If .Value IsNot Nothing Then Filter = "项目类型 In (\'" & .Value.Replace(",", "\',\'") & "\')" End If End With With e.Form.Controls("TextBox2") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "施工区域 = \'" & .Value & "\'" End If End With With e.Form.Controls("TextBox1") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "最大承载力KN >= \'" & .Value & "\'" End If End With With e.Form.Controls("TextBox3") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "最深桩长m >= \'" & .Value & "\'" End If End With With e.Form.Controls("TextBox4") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "最大桩径mm >= \'" & .Value & "\'" End If End With With e.Form.Controls("TextBox5") If .Value IsNot Nothing Then If Filter > "" Then Filter = Filter & " And " End If Filter = Filter & "基坑深度m >= \'" & .Value & "\'" End If End With With e.Form.Controls("NumericComboBox1") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "工程造价 >= \'" & .Value & "\'" End If End With With e.Form.Controls("StartDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "开工日期 >= #" & .Value & "#" End If End With With e.Form.Controls("EndDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "竣工日期 <= #" & .Value & "#" End If End With If e.Form.Controls("在建工程").Checked = True \' 如果选择了"在建工程" If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "竣工日期 >= #" & Date.Today & "#" End If If Filter > "" Then Tables("工程技术参数").DataTable.LoadTop = Nothing Tables("工程技术参数").DataTable.LoadFilter = "" Tables("工程技术参数").DataTable.Load End If Dim t As Table = Tables("工程技术参数") Dim n As Integer = t.DataTable.GetValues("合同编号", t.filter).count Dim lbl As WinForm.Label lbl = e.Form.Controls("Label5") lbl.Text = "符合条件工程数:" & n & "个," & "记录数:" & Tables("工程技术参数").Rows.Count & "条."
|