以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 查询按钮出错 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=21731) |
-- 作者:kmzb56 -- 发布时间:2012/7/23 11:05:00 -- 查询按钮出错 我在一个窗口上设了三个控件,ComboBox2,设了代码项:客户名称,地址,电话,等TextBox1,和一个“查询”按钮 在查询按钮上设置了如下代码: Dim Filter2 As String Dim tx As String= Forms("客户查询").Controls("ComboBox2")
想达到目的,选择客户名称时,在文本框中输入名称支持模糊查询,选地址时,在文本框中输入文本时可以查地址,但实际执行时出错,如图, 请问是什么原因?感觉是定义变量出错了,但试了几下都不行,请指点一下,谢谢! |
-- 作者:狐狸爸爸 -- 发布时间:2012/7/23 11:23:00 -- 你错得一塌糊涂,想帮你都无从下手,蒙一下:
Dim tx As String = Forms("客户查询").Controls("ComboBox2").Value
建议你看看:
http://www.foxtable.com/help/topics/1284.htm http://www.foxtable.com/help/topics/1058.htm http://www.foxtable.com/help/topics/1534.htm
|
-- 作者:kmzb56 -- 发布时间:2012/7/24 10:39:00 -- 谢谢!狐爸:你可能没明白我的意思,我是要在ComboBox2 下拉出客户名称时:在TextBox1 输入字符筛选出符合条件的记录,当下拉列表项是 地址时,在TextBox1 输入字符筛选出符合条件的记录,而我的代码中的tx 实际就是控件ComboBox2的列表项值,同时到了like语句中用tx代表列,我也知道不对,便就是找不出原因。我现在改了代码: Dim Filter2 As String 主联系人 Like " & txt & " Or 办公电话 Like " & txt & " Or 手机 Like " & txt
虽然能查,但实际还是没达到我想要的那种效果。请指点一下。 |
-- 作者:kmzb56 -- 发布时间:2012/7/24 10:41:00 -- 以上方法能查,但并没有缩小查的范围,当我选择客户名称时,在文本框中输入 XXx客户时能查到,当我选择“地址“时,在文本框中输入XXx客户也可以查到,这样就没达到效果了。 |
-- 作者:狐狸爸爸 -- 发布时间:2012/7/24 11:53:00 -- Dim colname As String= e.Form.Controls("ComboBox2").text
|
-- 作者:kmzb56 -- 发布时间:2012/7/24 13:45:00 -- 谢谢!狐爸:还是不行,我把图截上来,你看一下,我觉得应该是我的表达你没清楚。你看图应该明白我想达到的功能 此主题相关图片如下:客户查询出错2.jpg |
-- 作者:don -- 发布时间:2012/7/24 14:08:00 -- Dim Filter2 ,colname ,txt As String colname =Forms("客户查询").Controls("ComboBox2").Value txt = e.Form.Controls("TextBox1").Text txt = "\'*" & txt & "*\'" If colname Is Nothing Then Filter2="客户名称 Like " & txt & " Or 地址 Like " & txt & " Or 主联系人 Like " & txt & " Or 办公电话 Like " & txt & " Or 手机 Like " & txt Else Filter2=colname " Like " & txt End If Tables("客户查询_Table1").Filter = Filter2
|
-- 作者:kmzb56 -- 发布时间:2012/7/24 20:05:00 -- 谢谢!还是不对,我再说一下我的目的,当在控件ComboBox2中选择了“客户名称”时,在TextBox1 中输入 如 上海 就可以过滤出 上海XXX的公司,当在控件ComboBox2中选择了“地址”时,在TextBox1 中输入 如 松江 就可以过滤出 松江XXX的地址,我自己试了一下另的思路,还是不行,贴上来看一下。 Dim Filter2 As String End With
请问有谁知道方法?请说明一下。 |
-- 作者:blackzhu -- 发布时间:2012/7/25 8:02:00 -- Dim Filter ,colname ,txt As String \'定义变量 colname =e.Form.Controls("ComboBox1").Value \'定义组合框的值 txt = e.Form.Controls("TextBox1").Value \'定义文本框的值 If colname Is Nothing Then \'如果组合框的值为空 Return \'返回 End If For Each dc As Col In Tables("表A").Cols \'遍历表的所有列 If dc.DataCol.IsDate OrElse dc.DataCol.IsBoolean OrElse dc.DataCol.IsNumeric Then \'如果是时间列,逻辑列,数值列 Continue For \'排除 End If If dc.Name = colname Then \'如果列名和组合框的值相符 If Filter > "" Then Filter = Filter & " Or " End If Filter = Filter & "[" & dc.Name & "] Like \'*" & txt & "*\'" \'定义筛选字符串 End If \'根据控件值迷糊筛选 Next Tables("表A").Filter = Filter \'将数据筛选出来 自己改改!我测试好上来的.
|
-- 作者:kmzb56 -- 发布时间:2012/7/25 15:26:00 -- 感谢天感谢地!终于实现这个功能了,感谢所有支持这本贴的人员,我也在这个过程中学习了不少,感觉自己还是看帮助文件基本功扎得不好,谢谢! |