我是一个出学者,我在连接数据库的过程中,总是出现编译错误:无效的外部过程,我在模块中定义的数据库打开文件
Sub InitProgram()
'初始化系统
'打开数据库连接、设置初始变量
Global cnExam As New ADODB.Connection
Dim islocked As Boolean
DbPath = SERVER.MapPath("exam.mdb")
cnExam.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DbPath
islocked = False
End Sub然后我在每个窗体前加上了 initprogram就会出错! 我不知道为什么,谢谢各位高手帮帮小弟。
Sub InitProgram()
'初始化系统
'打开数据库连接、设置初始变量
Global cnExam As New ADODB.Connection
Dim islocked As Boolean
DbPath = SERVER.MapPath("exam.mdb")
cnExam.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DbPath
islocked = False
End Sub然后我在每个窗体前加上了 initprogram就会出错! 我不知道为什么,谢谢各位高手帮帮小弟。
Dim Rs As New ADODB.Recordset CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\student.mdb" CN.Open
Rs.CursorLocation = adUseClient
Rs.Open "select * from employees", CN, adOpenDynamic, adLockOptimistic
public sub InitProgram()cnExam是在模块的一个函数中声明的,即使每个窗体都加上了initprogram也不能在窗体里用,要实现你的想法,我认为要把数据连接作为参数传给initProgrampubic sub initprogram(cnExam as AdoDb.Connection)
...
end sub还有你声明的islocked根本没有起到任何的作用啊,出了这个函数就不起作用了
'初始化系统
'打开数据库连接、设置初始变量 Dim islocked As Boolean
DbPath = SERVER.MapPath("exam.mdb")
cnExam.Open 连接符串
islocked = False
End Sub
------------------------
然后在每个窗体中就不用再建立连接了,直接用cnExam这个全局的连接,如:Dim Rs As New ADODB.Recordset
Rs.Open "select * from employees", cnExam, adOpenDynamic, adLockOptimistic
你肯定没有引用。工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)
工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)Option ExplicitDim WithEvents adoRS As Recordset
Dim db As Connection
'提数据事件
Set db = New Connection
db.CursorLocation = adUseClient
db.Open"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\db1.mdb;Jet OLEDB:Database Password=1234;"
' ##########################################
'打开密码是1234的Access2000数据库db1.mdb
'不需要密码,就把Jet OLEDB:Database Password=1234;这段去掉 Set adoRS = New Recordset
adoRS.Open "SELECT * FROM 表", db, adOpenStatic, adLockOptimistic
'赋值给 DataGrid 表
Set DataGrid1.DataSource = adoRS
'表刷新
DataGrid1.Refresh
'添加事件和保存
adoRS.AddNew
'保存
adoRS![字段a] = text1.Text
adoRS![字段b] = text2.Text
adoRS.UpdateBatch adAffectAll'删除
adoRS.Delete
'重新赋值给表
adoRS.Requery
Set DataGrid1.DataSource = adoRS
DataGrid1.Refresh '其他相关操作:
'上一条
If Not adoRS.BOF Then adoRS.MovePrevious
If adoRS.BOF And adoRS.RecordCount > 0 Then
'已到最后返回
adoRS.MoveFirst
End If
'下一条
If Not adoRS.EOF Then adoRS.MoveNext '下一条
If adoRS.EOF And adoRS.RecordCount > 0 Then
'已到最后返回
adoRS.MoveLast
End If
'第一条
If Not adoRS.BOF Then adoRS.MoveFirst
'最末
If Not adoRS.EOF Then adoRS.MoveLast