VB连接Access数据库问题

liuyi0524 2015-12-28 11:32:09
如果按如下代码写的话,运行时会出连接无法用于执行此操作,在此上下文中它可能已被关闭或无效的错误

Dim rec As ADODB.Recordset
Dim Cnn As ADODB.Connection

Private Sub Command3_Click()
Dim MaxVal As Single

Set Cnn = New ADODB.Connection
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Common Files\ODBC\Data Sources\VBA.mdb;Persist Security Info=False"

Set rec = New ADODB.Recordset
rec.Open "Select Max(Val) As MaxVal From FloatTable where DateAndTime between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#"
rec.Close
End Sub

但是如果我只写
Private Sub Command3_Click()
Dim MaxVal As Single

Adodc1.RecordSource = "Select Max(Val) As MaxVal From FloatTable where DateAndTime between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#"

Adodc1.Refresh

End Sub

则运行正常,可以在DataGrid窗口显示结果

想问一下,我第二种方法并没有连接数据库为什么会有执行结果那?另外第一种方法的问题在哪?谢谢大家!!
...全文
164 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyi0524 2015-12-28
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
Set rec = New ADODB.Recordset
Set rec.ActiveConnection = Cnn '<-- 连接对象要用起来啊'
rec.Open "Select ..."
解决了,真想给你卡里汇点钱, 另外请问我的第二种方法为什么不用连接数据库就能获得结果那?
Tiger_Zhao 2015-12-28
  • 打赏
  • 举报
回复
Set rec = New ADODB.Recordset
Set rec.ActiveConnection = Cnn '<-- 连接对象要用起来啊'
rec.Open "Select ..."
liuyi0524 2015-12-28
  • 打赏
  • 举报
回复
坚持自力更生,代码如下,供大家参考 Private Sub Command1_Click() Adodc1.CommandType = adCmdText Adodc1.RecordSource = " select * from FloatTable where DateAndTime between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "# " Adodc1.Refresh Set Cnn = New ADODB.Connection Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Common Files\ODBC\Data Sources\VBA.mdb;Persist Security Info=False" Set rec = New ADODB.Recordset Set rec.ActiveConnection = Cnn rec.Open "Select Max(Val) From FloatTable where DateAndTime between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#" Text1.Text = (rec.Fields(0) & " N") rec.Close rec.Open "Select Min(Val) From FloatTable where DateAndTime between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#" Text2.Text = (rec.Fields(0) & " N") rec.Close rec.Open "Select Avg(Val) From FloatTable where DateAndTime between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#" Text3.Text = rec.Fields(0) Text3.Text = (Format(Text3.Text, "0.00") & " N") rec.Close End Sub
Tiger_Zhao 2015-12-28
  • 打赏
  • 举报
回复
你真有这个钱去请个家教才是正途。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧