Foxtable(狐表)用户栏目专家坐堂 → 请问怎么才能让未填写数据的格子参与的运算总是符合条件的


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

主题:请问怎么才能让未填写数据的格子参与的运算总是符合条件的

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


加好友 发短信
等级:童狐 帖子:281 积分:3183 威望:0 精华:0 注册:2014/2/19 10:32:00
请问怎么才能让未填写数据的格子参与的运算总是符合条件的  发帖心情 Post By: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。

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/27 8:36:00 [只看该作者]

改为这种方式生成查询条件:http://www.foxtable.com/webhelp/topics/1058.htm

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


加好友 发短信
等级:童狐 帖子:281 积分:3183 威望:0 精华:0 注册:2014/2/19 10:32:00
  发帖心情 Post By:2021/7/27 10:27:00 [只看该作者]

老师,我的跟您给的例子不一样,我是查询窗口都填满的,但被筛选的表里面是有为空的格子的

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/27 10:37:00 [只看该作者]

这种没有办法,只能减少查询的条件。只能根据条件来查询数据,无法根据数据来定义条件。

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


加好友 发短信
等级:童狐 帖子:281 积分:3183 威望:0 精华:0 注册:2014/2/19 10:32:00
  发帖心情 Post By:2021/7/27 10:38:00 [只看该作者]

我的意思是想让被筛选的表格里如果是空的,即使查询窗口有数值,跟这个空值比较,无论结果如何,都不影响筛选结果。现在的情况是空值参与比较,结果肯定是false,导致其他有值的格子即使条件符合,总的过滤条件也变得不符合了。

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/27 10:43:00 [只看该作者]

数据库查询无法忽略空值。不管是不是空值,符合条件肯定查的到,查不到就是不符合条件,只能减少查询的条件

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


加好友 发短信
等级:童狐 帖子:281 积分:3183 威望:0 精华:0 注册:2014/2/19 10:32:00
  发帖心情 Post By:2021/7/27 11:10:00 [只看该作者]

您看那我筛一列保存符合条件的行和空行,再在得到的行的集合里面筛下一列保存符合条件的行和空行,这样一列列筛过去可行么
[此贴子已经被作者于2021/7/27 11:10:52编辑过]

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


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

可以建一个临时表,先按第一个添加筛选,然后把数据填充到临时表,在按第二个添加筛选,然后把数据填充到临时表,以此类推

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


加好友 发短信
等级:童狐 帖子:281 积分:3183 威望:0 精华:0 注册:2014/2/19 10:32:00
  发帖心情 Post By:2021/7/27 15:38:00 [只看该作者]

老师,是用Fill方法填充到新建的临时表么?
我还想了一个方法,新增一个标记列,一列筛选后更改不需要的标记列,多轮筛选后剩下来的没有改变标记的行就是最后的结果。这种方法可以么?是不是效率不如第一种?
数据库大概1万行左右。

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/7/27 15:44:00 [只看该作者]

数据填充参考:http://www.foxtable.com/webhelp/topics/0680.htmhttp://www.foxtable.com/webhelp/topics/1533.htm

如果这1万条数据不是必须同时处理的,可以分开,先筛选一部分,处理完毕,再筛选另外一部分来再处理

增加标记列也是一种方法,处理的好应该比使用填充效果要好

 回到顶部