以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请问怎么才能让未填写数据的格子参与的运算总是符合条件的 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=170448) |
-- 作者:i4whylg -- 发布时间:2021/7/27 2:14:00 -- 请问怎么才能让未填写数据的格子参与的运算总是符合条件的 数据表如下: 窗口如下: 查询按钮代码如下: For Each c As object In e.Form.Controls \'遍历所有控件不为空 If Typeof c Is WinForm.TextBox OrElse Typeof c Is WinForm.ComboBox OrElse Typeof c Is WinForm.NumericComboBox Then \'判断控件是否是文本框 If c.Value = Nothing Then MessageBox.Show("请填写完整所有的数据!") c.Select() Return End If End If Next Dim filter As String = CExp("[温度下限] >= {0} And [温度上限] <= {1} And [材料分类] = \'{2}\'", e.Form.Controls("NumericComboBox2").Value, e.Form.Controls("NumericComboBox2").Value, e.Form.Controls("TextBox4").Value) Dim drs As List(of DataRow) = DataTables("法规").SQLSelect(filter) For Each dr As DataRow In drs Dim s As String = dr("法规") MessageBox.Show(s) Next 有个问题是对于未填数据的格子,怎么才能不参与过滤条件,即无数据的格子总是符合条件的,true。 |
-- 作者:有点蓝 -- 发布时间:2021/7/27 8:36:00 -- 改为这种方式生成查询条件:http://www.foxtable.com/webhelp/topics/1058.htm |
-- 作者:i4whylg -- 发布时间:2021/7/27 10:27:00 -- 老师,我的跟您给的例子不一样,我是查询窗口都填满的,但被筛选的表里面是有为空的格子的 |
-- 作者:有点蓝 -- 发布时间:2021/7/27 10:37:00 -- 这种没有办法,只能减少查询的条件。只能根据条件来查询数据,无法根据数据来定义条件。 |
-- 作者:i4whylg -- 发布时间:2021/7/27 10:38:00 -- 我的意思是想让被筛选的表格里如果是空的,即使查询窗口有数值,跟这个空值比较,无论结果如何,都不影响筛选结果。现在的情况是空值参与比较,结果肯定是false,导致其他有值的格子即使条件符合,总的过滤条件也变得不符合了。 |
-- 作者:有点蓝 -- 发布时间:2021/7/27 10:43:00 -- 数据库查询无法忽略空值。不管是不是空值,符合条件肯定查的到,查不到就是不符合条件,只能减少查询的条件 |
-- 作者:i4whylg -- 发布时间:2021/7/27 11:10:00 -- 您看那我筛一列保存符合条件的行和空行,再在得到的行的集合里面筛下一列保存符合条件的行和空行,这样一列列筛过去可行么 [此贴子已经被作者于2021/7/27 11:10:52编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/7/27 11:13:00 -- 可以建一个临时表,先按第一个添加筛选,然后把数据填充到临时表,在按第二个添加筛选,然后把数据填充到临时表,以此类推 |
-- 作者:i4whylg -- 发布时间:2021/7/27 15:38:00 -- 老师,是用Fill方法填充到新建的临时表么? 我还想了一个方法,新增一个标记列,一列筛选后更改不需要的标记列,多轮筛选后剩下来的没有改变标记的行就是最后的结果。这种方法可以么?是不是效率不如第一种? 数据库大概1万行左右。
|
-- 作者:有点蓝 -- 发布时间:2021/7/27 15:44:00 -- 数据填充参考:http://www.foxtable.com/webhelp/topics/0680.htm、http://www.foxtable.com/webhelp/topics/1533.htm 如果这1万条数据不是必须同时处理的,可以分开,先筛选一部分,处理完毕,再筛选另外一部分来再处理 增加标记列也是一种方法,处理的好应该比使用填充效果要好
|