Foxtable(狐表)用户栏目专家坐堂 → [求助]关于清除窗口中ComboBox值的代码


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

主题:[求助]关于清除窗口中ComboBox值的代码

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]关于清除窗口中ComboBox值的代码  发帖心情 Post By:2014/12/7 22:34:00 [显示全部帖子]

清除文本类型的ComboBox值时,用e.Form.Controls("ComboBox_牌号").Value = Nothing
但清除双精度与逻辑刑的ComboBox值时,用了上述代码后返回:无法在 System.Double 和 System.String 上执行“=”操作
请问老师我应该如何写代码才能正确的清除双精度与逻辑型的ComboBox值

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/7 22:59:00 [显示全部帖子]

还是出错,我有个清除筛选的按钮,在这里写了如下代码:
e.Form.Controls("ComboBox_公司").Value = Nothing
e.Form.Controls("ComboBox_牌号").Value = Nothing
e.Form.Controls("ComboBox_厚度").Text = Nothing
e.Form.Controls("ComboBox_审核").Text = Nothing
Tables("原料采购合同查询主窗口_Table_原料采购_副本").Filter=""

厚度在表上是双精度类型,审核是逻辑型,我在厚度中选了值后进行筛选,这一步还是正常的,但点了清除筛选按钮后,就弹出:无法在 System.Double 和 System.String 上执行“=”操作。

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/8 12:25:00 [显示全部帖子]

是的啊,是与 TextChanged 或 ValueChanged 事件有关。
我在一个窗口中有四个ComboBox控件,分别是公司(文本)、牌号(文本)、厚度(双精度)及审核(逻辑),操作流程如下:
通过选择公司的下拉项目,选择一个公司后表进行了按公司筛选,执行正确;
这时再对厚度进行筛选,也是执行正确;
再对公司进行筛选,就会弹出“无法在 System.Double 和 System.String 上执行“=”操作。”
原因应该出在以下代码中:
公司ComboBox的ValueChanged中有以下代码:
e.Form.Controls("ComboBox_牌号").Value = Nothing
e.Form.Controls("ComboBox_厚度").Text = Nothing
e.Form.Controls("ComboBox_审核").Text = Nothing
Tables("原料采购合同查询主窗口_Table_原料采购_副本").Filter="[公司] = '" & e.Form.Controls("ComboBox_公司").value & "'"

厚度ComboBox的ValueChanged中有以下代码:
e.Form.Controls("ComboBox_公司").Value = Nothing
e.Form.Controls("ComboBox_牌号").Value = Nothing
e.Form.Controls("ComboBox_审核").Text = Nothing
Tables("原料采购合同查询主窗口_Table_原料采购_副本").Filter="[厚度] = '" & e.Form.Controls("ComboBox_厚度").value & "'"

我在上面的代码中用= Nothing的目的是清除之前筛选时选择的文字,例如选择一个公司筛选后,这个公司名就一直在ComboBox文字框中了,再用其他ComboBox筛选时,之前的这个公司ComboBox中文字一直会在,我就是想用上面的代码清除掉其他ComboBox框中的文字。

问题应该就出在上面的代码中,请老师们指正,谢谢!
[此贴子已经被作者于2014-12-8 12:26:34编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/8 12:58:00 [显示全部帖子]

刚又做了下测试,我把四个ComboBox中“= Nothing”这些代码全部去掉,在清除筛选的按钮中写下如下代码:
e.Form.Controls("ComboBox_公司").Value = Nothing
e.Form.Controls("ComboBox_牌号").Value = Nothing
e.Form.Controls("ComboBox_厚度").Text = Nothing
e.Form.Controls("ComboBox_审核").Text = Nothing
Tables("原料采购合同查询主窗口_Table_原料采购_副本").Filter=""

我如果对厚度进行了筛选,再点清除筛选按钮把筛选全部关闭,之后再点厚度ComboBox就会弹出:无法在 System.Double 和 System.String 上执行“=”操作。同理,用上面流程点审核ComboBox,就会弹出:无法在 System.Boolean 和 System.String 上执行“=”操作。

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/8 13:28:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:combobox故障.rar

我做了个例子上传上来了,请老师看下。进行以下操作会出现问题:

1、筛选公司

2、筛选厚度

3、筛选公司

4、再进行筛选厚度时弹出出错信息:无法在 System.Double 和 System.String 上执行“=”操作。


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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/8 19:54:00 [显示全部帖子]

附件我下载看了,是可以用了,但我的代码错在哪里呢?请指导一下,谢谢!

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/8 20:59:00 [显示全部帖子]

附件中看过代码了,知道不同的地方,现在就是想不通我所写的代码问题出在哪?
为什么要选择下拉列表内容前要先判断这个控件是不是已经有TEXT,为什么我在二个文本控件中反复切换没有问题,而在一个文本、一个双精或逻辑上切换筛选时会报错,而加了IF判断后又可以运行了,百思不得其解,请老师疏导一下,谢谢!

以下是老师给的代码:
If e.Form.Controls("ComboBox1").value > "" Then
Tables("表A").Filter="[公司] = '" & e.Form.Controls("ComboBox1").value & "'"
End If

以下是我写的代码
Tables("表A").Filter="[公司] = '" & e.Form.Controls("ComboBox1").value & "'"

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/8 21:16:00 [显示全部帖子]

明白了,想通了,谢谢!

 回到顶部