Private Sub Command1_Click() '打开错误处理陷阱 On Error GoTo ErrGoto '----------------------------------------------------
Open "1.mdb" For Input As #1 Close #1 '---------------------------------------------------- MsgBox "文件没打开" Exit Sub '----------------------------- ErrGoto: MsgBox "文件打开" End Sub
可以使用数据连接对象的State属性来做。 你首先要在VB菜单中: “工程”-->“引用”-->“Microsoft AxtiveX Data Objects 2.X Library” 注:2.X为版本号,如果你机子上有高版本的就用高版本的,如:2.5或2.6的。 "工程"-->“部件”-->“MicroSoft DataGrid Control 6.0” Private Sub ComOK_Click() Dim SQLstr As String,cnstr AS String Dim cn AS New ADODB.Connection'连接对象 Dim rs As New ADODB.Recordset'记录集对象 cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & App.Path & "\data\月欠税情况.mdb;" _ & "Persist Security Info=False"'连接字符串 if cn.State=AdStateOpen then '判段数据是否打开 msgbox "数据库已经打开!!!" exit sub else cn.open cnstr' 打开数据库连接 rs.CursorLocation =adUseClient sqlstr="slect * from XXX表" rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录 set datagrid1.datasource=rs datagrid1.refresh rs.close'关闭记录集对象 set rs=nothing end if End Sub
注:月欠税情况.mdb可以改成你的1.mdb
判断1.ldb是否存在(同一路径下)最简单
chenyu5188(来自东方的狼 的方法是对的,也很好.个别语句的个别地方还可以写的更简洁一些
chenyu5188(来自东方的狼) 的方法说什么呀,简直是不知所云。一塌糊涂!!!正确方法如下: 添加ADO引用 Private Sub ComOK_Click() Dim SQLstr As String,cnstr AS String Dim cn AS New ADODB.Connection'连接对象 Dim rs As New ADODB.Recordset'记录集对象 cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source="XX.mdb;" _ & "Persist Security Info=False"'连接字符串 on error resume next cn.open cnstr if err = -2147467259 then msgbox "数据库已经打开!!!" exit sub elseif err<>0 then err.raise err.number else msgbox "OK" end if on error goto 0 End Sub
忽略了一个地方 在 elseif err<> then on error goto 0 '添加这样一条语句,重要 err.raise err.number
两位大侠的方法都试过了,没有作用。 我是这样做的: 如果数据库已打开,则MsgBox,然后Unload Me 否则继续(打开数据库到表)可是我连续开了几遍同一个程序,照旧打开无误,没有任何MsgBox"数据库已打开"的提示。怎么回事 ???
'打开错误处理陷阱
On Error GoTo ErrGoto
'----------------------------------------------------
Open "1.mdb" For Input As #1
Close #1
'----------------------------------------------------
MsgBox "文件没打开"
Exit Sub
'-----------------------------
ErrGoto:
MsgBox "文件打开"
End Sub
你首先要在VB菜单中:
“工程”-->“引用”-->“Microsoft AxtiveX Data Objects 2.X Library”
注:2.X为版本号,如果你机子上有高版本的就用高版本的,如:2.5或2.6的。
"工程"-->“部件”-->“MicroSoft DataGrid Control 6.0”
Private Sub ComOK_Click()
Dim SQLstr As String,cnstr AS String
Dim cn AS New ADODB.Connection'连接对象
Dim rs As New ADODB.Recordset'记录集对象
cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & App.Path & "\data\月欠税情况.mdb;" _
& "Persist Security Info=False"'连接字符串
if cn.State=AdStateOpen then '判段数据是否打开
msgbox "数据库已经打开!!!"
exit sub
else
cn.open cnstr' 打开数据库连接
rs.CursorLocation =adUseClient
sqlstr="slect * from XXX表"
rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
set datagrid1.datasource=rs
datagrid1.refresh
rs.close'关闭记录集对象
set rs=nothing
end if
End Sub
的方法是对的,也很好.个别语句的个别地方还可以写的更简洁一些
的方法说什么呀,简直是不知所云。一塌糊涂!!!正确方法如下:
添加ADO引用
Private Sub ComOK_Click()
Dim SQLstr As String,cnstr AS String
Dim cn AS New ADODB.Connection'连接对象
Dim rs As New ADODB.Recordset'记录集对象
cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source="XX.mdb;" _
& "Persist Security Info=False"'连接字符串
on error resume next
cn.open cnstr
if err = -2147467259 then
msgbox "数据库已经打开!!!"
exit sub
elseif err<>0 then
err.raise err.number
else
msgbox "OK"
end if
on error goto 0
End Sub
在
elseif err<> then
on error goto 0 '添加这样一条语句,重要
err.raise err.number
我是这样做的:
如果数据库已打开,则MsgBox,然后Unload Me
否则继续(打开数据库到表)可是我连续开了几遍同一个程序,照旧打开无误,没有任何MsgBox"数据库已打开"的提示。怎么回事 ???
如果只是为了未打开时打开,可以先关闭连接,在打开连接
如:
cn.close
cn.open
if len(cn.connectionstring) > 0 then
msgbox "opened!"
end if
那我再好好研究一下。