大家不用回复,直接就可以看到。如果觉得有用,就顶一下。
从1997年开始使用ACCESS,到如今已经10个年头了,开始学的时候,不知道怎么入门,就采用最笨的方法,把NORTHWIND原模原样的抄写了一遍,然后更改代码,运行,看看ACCESS报什么错误,就这样边改边学,VBA和SQL基本就入门了。
入门以后,一切就变的简单了。感觉每天都能学到新的东西,把这些知识再用到实际工作中,学以致用。学而时习之,不亦悦乎。
可是精通以后,人的惰性就来了,通常几个星期不写代码,不写SQL,因为工作中用到的查询、报表都已经完善了。开始吃老本。
言归正传,到底是什么问题要想10年呢?ACCESS论坛上经常有这样一个问题“怎么才能传递参数给IN查询呢”或者“有1个字符串,怎样才能才能转化成表呢?”,通常的答案是用VBA写动态SQL。我的做法也是用VBA处理。可是这个问题经常在脑海出现,难道真的只能用VBA吗?
比如这样的查询,当输入2,8,15时不会得到想要的结果
Parameters lngCaseNo string;
Select CaseNo
From Cases
where CaseNo in (lngCaseNo)
表CASES(辅助表,用来生成一些需要连续数字的查询),字段CASENO,值1到65536
CaseNo
1
2
3
4
5
6
...
65536
六一儿童节是个下雨的日子,好象自我记事以来,都是下雨天。坐在班车上,望着窗外的细雨绵绵。突然想起了什么。
Parameters lngCaseNo string;
Select *
from Cases
where CaseNo in (Select mid(lngCaseNo&',',first(CaseNo),Last(CaseNo)-first(CaseNo)) from Cases where CaseNo<=len(lngCaseNo)+1 Group by instr(CaseNo,lngCaseNo&',',','))
祝大家六一儿童节快乐
Parameters lngCaseNo string;
Select mid(lngCaseNo&',',first(CaseNo),Last(CaseNo)-first(CaseNo)) from Cases where CaseNo<=len(lngCaseNo)+1 Group by instr(CaseNo,lngCaseNo&',',',')
这句代码送给做物料管理的朋友,RABC*,REFG*,RDEF*,(物料代码)将会生成一个
RABC*
REFG*
RDEF*
的动态表,
[此贴子已经被作者于2007-6-2 12:34:50编辑过]
|