上一个问题的内容:
查询产生数据集
Dim rsIS
Set rsIS = CreateObject("ADODB.Recordset")
rsIS.Open "SELECT * FROM 表名",conn
条件:自定义数据库:zmx-sql,表:zmxzz-a(存放1号的数据)和zmxzz-b(存放2号的数据),字段名“sj”,数据类型:datetime,数据共计20列
目的:查找1号到2号的数据并存放在使用ole建立的excel表中,记录大概在30000条。
程序:日期使用windows的日历控件10.0提供开始日期和结束日期
Dim rsIS
Set rsIS = CreateObject("ADODB.Recordset")
is_sql="select*from zmxzz-a 'sj'>=00:00:01 and ''sj'<=23:59:59" and zmxzz-b 'sj'>=00:00:01 and ''sj'<=23:59:59"
rsIS.Open (is_sql),conn
结果:查询程序不执行
请问:哪里有例子或采用什么解决办法?
windows的日历控件怎么才可以执行?
按照你给的程序,我运行后可以。
现在有问题:
1、如果我想按照字段名“sj”的时间范围查询该怎么办?
2、时间给定使用windows的日历控件分别给定开始日期和结束日期进行查询?
图片说明:
最佳答案
首先要说的是,ADO的工作原理就相当于在vbs中构造好一个数据库查询语句,通过连接,发给SQL Server,执行查询是SQL Server的工作。
既然这样,那你在调试vbs过程中遇到了问题,你首先想到,把你的查询语句(sql语句)直接写在SQL Server中,用来定位是你vbs这边错了,还是你的sql写得有问题。
所以建议你先在SQL Server中实现查询,然后把你试验过的查询语句,复制在vbs里,但是要注意,你得写好了,构造的语句在vbs里看,是一个字符串。
然后针对你的问题,你要查询一个时间段,那它的查询语句结构无非是
select*from 表名 where sj>起始时间 and sj >中止时间,关键点显而易见,就是你的起始时间和中止时间哪里来的。(你的语句中第一个错误就是,where哪去了?)
说完了
下面是我的思路
dim startTime
dim stopTime
''''构造起始时间startTime
dim calendarName
calendarName = ScreenItems("你所建立的日历控件名")
''''这种写法只针对于你的日历控件和这段程序的按钮在同一画面的请况
dim startDate
startDate = calendarName.value ''''当前控件所选的日期,赋给startDate
dim startSJ
startSJ = 这里不清楚你的时间是怎么来的,不论常量变量写这就行了
startTime = str(startDate)&str(startSJ)
''''构造结束时间stopTime
思路同上,就是用calendar控件获得年月日,用你喜欢的方式获得时分秒,然后组合成时间(符合数据库中datetime变量类型的时间格式)即可。
is_sql="select*from zmxzz-a where sj>"&str(startTime)&"AND sj<"&str(stopTime)
还有就是,关于获取时间值的方法和采用的控件,可以参看以下
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=42245&cid=1032
另:我也是初学者,大家一起讨论,我觉得挺好。就是不要让管理员以为咱们是在作弊故意你问我答就行,哈哈哈。
提问者对于答案的评价:
你好:研究了好几天,还是不太明白。
如果我要是只查询到天,而时、分、秒不要的话,是不是就要修改sql的数据类型datetime,可是我无论怎么试验都是不行。
如果,可以的话,你再写一写按照天查询的办法,就是按照我提供的图片2,我选择日期后,旁边用ole建立的excel文件自动打开,将相应日期的数据取出来。
谢谢!实在是看不懂。拜托了。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc264112.html