以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于“小白视频教学第一课”里的一些疑问  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=26345)

--  作者:laotianshun
--  发布时间:2012/12/1 0:11:00
--  关于“小白视频教学第一课”里的一些疑问

关于查询的代码

有点不明白这段,有些含糊,尤其是,为什么物料编号和型号规格要加like,而物料名称不用呢?

Tables("物料信息表").Filter ="供货厂家 = \'" & cj.Text & "\' and 物料名称 =\'" & wlmc.Text & "\' and 物料编号 like \'*" & wlbh.Text & "\' and 型号规格 like \'*" & xhge.Text & "\'"

 

另外,显示“全部”的代码

视频的代码是:

Dim cj As WinForm.ComboBox = e.Form.Controls("厂家")
Dim wlmc As WinForm.ComboBox = e.Form.Controls("物料名称")
Dim wlbh As WinForm.TextBox = e.Form.Controls("物料编号")
Dim xhgg As WinForm.TextBox = e.Form.Controls("型号规格")

cj.Text = ""
wlmc.Text = ""
wlbh.Text = ""
xhgg.Text = ""

Tables("物料信息表").Filter = ""

 

 

 

而我这样写,发现也能显示

Dim cj As WinForm.ComboBox = e.Form.Controls("厂家")
Dim wlmc As WinForm.ComboBox = e.Form.Controls("物料名称")
Dim wlbh As WinForm.TextBox = e.Form.Controls("物料编号")
Dim xhge As WinForm.TextBox = e.Form.Controls("型号规格")

Tables("物料信息表").Filter =""

 

中间那段的作用是什么呢?


--  作者:paullqxp
--  发布时间:2012/12/1 7:59:00
--  

回复如下:

 

① 之所以物料编号和型号规格加like,是为了让这两个字段支持模糊查找

供货厂家和物料名称用的是=,是因为在界面设计时,这两个字段都有组合框可以供选择

且选择后,就是完整的值,而不是部分值(选择车把,就是对车把做精确查询,而不是对“车”或是“把”的模糊查询)

后来有狐友在效仿时,发现,若不选择厂家或者物料名称,则查不到值,原因就是因为这两个字段用了=,没有这两个字段为空的物料信息

若你想不选择厂家和物料名称,直接输入型号规格即可进行模糊查询,则厂家和物料名称也用like

 

② 你说的“中间那段代码”是指:cj.Text = ""、wlmc.Text = ""、wlbh.Text = ""、xhgg.Text = ""这几句吧

这是为了让这四个字段在“显示全部”操作后,自动清空查询值,方便下次的重新输入值,当然这个是可有可无的,看你需要

若你不想清除已输入的查询值,则代码中的四个DIM语句都可以省了

直接用Tables("物料信息表").Filter =""即可达到取消查询的功能

 

③ 若你能坚持看到我最后几集视频,我有对语法做修正

取控件的值,应该用value,而不是text,虽然多数情况两者使用效果相同,但已有狐友在用text时出错了,请改用value

 

若在看我视频中还有其他疑问,请发帖提问,我一定尽力解答,共同进步。

 


--  作者:LGBC
--  发布时间:2012/12/1 8:25:00
--  

两个问题的回复说得很明白。如果在当场就讲解出来,那你这个视频教学效果会更好,毕竟初学者还没有掌握那些命令语句的作用和用法。


--  作者:paullqxp
--  发布时间:2012/12/1 9:06:00
--  
以下是引用LGBC在2012-12-1 8:25:00的发言:

两个问题的回复说得很明白。如果在当场就讲解出来,那你这个视频教学效果会更好,毕竟初学者还没有掌握那些命令语句的作用和用法。

我很赞同

当时录视频时,还没有对代码作注释的习惯,若加了注释或者视频里多说几句,可能初学者更能明白一些

 


--  作者:hpilkjun
--  发布时间:2012/12/1 10:28:00
--  

"物料信息表"中的"厂家"、"物料名称"、"物料编号"、"型号规格"单元格中必须填有内容后才能查询到该行,即如果某行没有填写"型号规格"或"物料编号",该行就无法在查询中显示。如何做到这4个单元格填写不完整也同样能查询?谢谢!


--  作者:paullqxp
--  发布时间:2012/12/1 10:47:00
--  
以下是引用hpilkjun在2012-12-1 10:28:00的发言:

"物料信息表"中的"厂家"、"物料名称"、"物料编号"、"型号规格"单元格中必须填有内容后才能查询到该行,即如果某行没有填写"型号规格"或"物料编号",该行就无法在查询中显示。如何做到这4个单元格填写不完整也同样能查询?谢谢!

用like啊

Tables("物料信息表").Filter ="供货厂家 like  \'*" & cj.vaule & "*\' and 物料名称 like \'*" & wlmc.value & "*\' and 物料编号 like \'*" & wlbh.value & "*\' and 型号规格 like \'*" & xhgg.value & "*\'"


--  作者:laotianshun
--  发布时间:2012/12/1 13:24:00
--  

非常感谢您的详细回答,另外我想问,你下面回复别人的这段代码和您视频里的那段代码有什么作用上的区别吗?

Tables("物料信息表").Filter ="供货厂家 like  \'*" & cj.vaule & "*\' and 物料名称 like \'*" & wlmc.value & "*\' and 物料编号 like \'*" & wlbh.value & "*\' and 型号规格 like \'*" & xhgg.value & "*\'"


--  作者:lin_hailun
--  发布时间:2012/12/1 13:50:00
--  
 没有什么区别。
--  作者:paullqxp
--  发布时间:2012/12/1 14:08:00
--  

没啥大区别

用=就是精确查询,若该控件值为空,则查询空值,很可能查不到结果;

用like是模糊查询,若该控件值为空,则忽略该字段,不影响其他控件的查询

引用控件值的话,尽量用value,别用text


--  作者:laotianshun
--  发布时间:2012/12/1 16:02:00
--  
谢谢