我想把"交通调查"这个表里的数据按15MIN时间段将各列数值相加后放到"数据统计"这个表里面,共有2各问题,一个50分,呵呵,代码如下;
Private Sub Command1_Click()
Dim db As Database
Dim rs As Recordset
Dim Sql1 As String, Sql2 As String, TimeInt As String
Dim bTime As Date, eTime As Date, mTime As Date, iTime As Date
Set db = OpenDatabase(App.Path & "\交通调查.mdb")
Set rs = db.OpenRecordset("数据统计")
For i = 1 To rs.RecordCount
rs.MoveFirst
rs.Delete
Next i
bTime = TimeValue("7:15")
endTime = TimeValue("18:15")
mTime = TimeValue("0:01")
iTime = TimeValue("0:15")
While bTime < endTime - iTime
bTime = bTime + iTime
eTime = bTime + iTime - mTime
Debug.Print eTime
TimeInt = CStr(bTime) & "-" & CStr(eTime)
Debug.Print TimeInt
Sql1 = "insert into 数据统计(小汽车,小货车,中货车,大货车,中客车,大客车,摩托车,自行车,行人) select sum(小汽车),sum(小货车),sum(中货车),sum(大货车),sum(中客车),sum(大客车),sum(摩托车),sum(自行车),sum(行人) from 城市道路 where 时间 between " & bTime & " and " & eTime & ""
Sql2 = "update 数据统计 set 时段='" & TimeInt & "'"
db.Execute Sql1
db.Execute Sql2
Wend
End Sub
Q1:关于sql1,运行后出现提示:语法错误(操作符丢失)在查询表达式'时间 between 7:30:00 and 7:44:00'中,也就是第一次循环执行sql1就没成功,哪里有问题啊?
Q2:关于sql2,为了避免问题1,我把sql1,中的between " & bTime & " and " & eTime & "换成一个特定时间between #7:55# and#8:00#,这次循环正常进行,但是最后sql2中时段那列所有值全都变成相同的时间18:15-18:29,而debug.print显示的是我要的连续时间段,我在sql2中使用的变量timeint啊,为什么和debug.print的不同呢?怎么改啊?
问题有点多,请各位慢慢看啊,谢谢!!
Private Sub Command1_Click()
Dim db As Database
Dim rs As Recordset
Dim Sql1 As String, Sql2 As String, TimeInt As String
Dim bTime As Date, eTime As Date, mTime As Date, iTime As Date
Set db = OpenDatabase(App.Path & "\交通调查.mdb")
Set rs = db.OpenRecordset("数据统计")
For i = 1 To rs.RecordCount
rs.MoveFirst
rs.Delete
Next i
bTime = TimeValue("7:15")
endTime = TimeValue("18:15")
mTime = TimeValue("0:01")
iTime = TimeValue("0:15")
While bTime < endTime - iTime
bTime = bTime + iTime
eTime = bTime + iTime - mTime
Debug.Print eTime
TimeInt = CStr(bTime) & "-" & CStr(eTime)
Debug.Print TimeInt
Sql1 = "insert into 数据统计(小汽车,小货车,中货车,大货车,中客车,大客车,摩托车,自行车,行人) select sum(小汽车),sum(小货车),sum(中货车),sum(大货车),sum(中客车),sum(大客车),sum(摩托车),sum(自行车),sum(行人) from 城市道路 where 时间 between " & bTime & " and " & eTime & ""
Sql2 = "update 数据统计 set 时段='" & TimeInt & "'"
db.Execute Sql1
db.Execute Sql2
Wend
End Sub
Q1:关于sql1,运行后出现提示:语法错误(操作符丢失)在查询表达式'时间 between 7:30:00 and 7:44:00'中,也就是第一次循环执行sql1就没成功,哪里有问题啊?
Q2:关于sql2,为了避免问题1,我把sql1,中的between " & bTime & " and " & eTime & "换成一个特定时间between #7:55# and#8:00#,这次循环正常进行,但是最后sql2中时段那列所有值全都变成相同的时间18:15-18:29,而debug.print显示的是我要的连续时间段,我在sql2中使用的变量timeint啊,为什么和debug.print的不同呢?怎么改啊?
问题有点多,请各位慢慢看啊,谢谢!!
解决方案 »
- 在设计ACTIVEX控件的时候,怎么让控件中的一个from1调用控件中的函数?
- 关于ActiveX和数据库连接问题
- 串口通讯问题,如何实现Com1,com2同时通讯,接收两个不同终端的数据?在线等待
- 我用c来返回一个值,怎样用vb来接收这个值? 高分!!!!!
- 惊世之作!VD3.0!(Visual DBTOOLS 3.0)
- 如何直接将txt文件里的数据读入ADO记录集?
- 还是VB和EXCEL的问题
- 求救,哪有 gantt ocx 1.2 版???
- ★★★★★★:现在用vb做什么软件最吃香?
- 如何连接internet上的Sql服务器?
- VB程序生成.EXE后,在其它机子不能用?
- 如何将查询结果以XML格式输出?
between " & bTime & " and " & eTime & ""==>
between '" & bTime & "' and '" & eTime & "'"
Q2:
Sql2 = "update 数据统计 set 时段='" & TimeInt & "'"==>
Sql2 = "update 数据统计 set 时段='" & TimeInt & "'" & From 数据统计 Where 你的条件
between bTime and eTime 2》Sql2 = update 数据统计 set 时段=TimeInt
第一个问题按一楼的添上单引号后还是不行啊,提示"标准表达式中数据类型不匹配",怎么回事啊,?
第二个问题我知道原因了,是因为我用update没有制定条件,所以就是整列修改
现在问题还没有解决,100分等着大家呢!!
我把问题说的更清楚点吧,两个表的结构如下,我本想用循环一条一条的添记录,先用sql1把数据统计表中的除时段外个列都填上,再用sql2添加时段,一直循环下去.
由于要分2次完成这个表,这个方法不好实现,于是我在数据统计这个表里面加了一个序号字段用修改后的sql2对时段的进行添加,具体代码如下:城市道路:表
时间 小汽车 小货车 .........
7:30 0 1 ...
7:31 1 0
7:35 1 0
.... .. ...数据统计:表
序号 时段 小汽车 小货车 ....
1 7:30-7:44 12 6 ..
2 7:45-8:00 5 23 ..
.....
Private Sub Command1_Click()
Dim db As Database
Dim rs As Recordset
Dim Sql As String, Sql1 As String, Sql2 As String, TimeInt As String
Dim bTime As Date, eTime As Date, mTime As Date, iTime As Date
Dim i As Integer, j As Integer
Set db = OpenDatabase(App.Path & "\交通调查.mdb")
Set rs = db.OpenRecordset("数据统计")
For i = 1 To rs.RecordCount
rs.MoveFirst
rs.Delete
Next i
rs.Close '关闭rs,否则将于sql的执行冲突
Sql = "ALTER Table 数据统计 ALTER COLUMN 序号 COUNTER (1, 1)" '序号归1
db.Execute Sql
bTime = TimeValue("7:15")
endTime = TimeValue("18:15")
mTime = TimeValue("0:01")
iTime = TimeValue("0:15")
While bTime < endTime - iTime
j = j + 1
bTime = bTime + iTime
eTime = bTime + iTime - mTime
Debug.Print j
Debug.Print eTime
TimeInt = CStr(bTime) & "-" & CStr(eTime)
Debug.Print TimeInt
Sql1 = "insert into 数据统计(小汽车,小货车,中货车,大货车,中客车,大客车,摩托车,自行车,行人) select sum(小汽车),sum(小货车),sum(中货车),sum(大货车),sum(中客车),sum(大客车),sum(摩托车),sum(自行车),sum(行人) from 城市道路 where 时间 between '" & bTime & "' and '" & eTime & "'"
Sql2 = "update 数据统计 set 时段='" & TimeInt & "' where 序号=" & j & "" 'j为整数,不用加单引号
db.Execute Sql1
db.Execute Sql2
Wend
End Sub因此现在只要解决第一个问题就行了,一个问题一百分啊!!!!我就奇怪了,sql2中的那个时间变量都可以正常运行,为什么sql1中的那个不行?大家花点时间仔细看看问题出在哪里,谢谢!
2.用一个固定值取代你的bTime,eTime测试一下看看
3.取消时间部分看看是不是正常插入
哪里的问题啊?????
还有,能否换一种方法来避开这个问题又能达到同样的效果?请指教
2 表“城市道路”中的“时间”字段的数据类型是什么?(我估计是字符型)
3 如果是字符型,将 where 时间 between '" & bTime & "' and '" & eTime & "'"
改成:where 时间 between '" & cstr(bTime) & "' and '" & cstr(eTime) & "'"试试
结贴了,感谢大家帮忙,每人5分,乘下的就给ctseu(点水清荷)了!!