请教VB中如何查看access的前/后记录
我用VB+access写了一个图片的查看器,希望能够前后查看图片的,可是一点击前后翻看的按钮时,总是出现“实时错误‘424’,要求对象”,请教该如何解决呢,谢谢!代码如下:
Private Sub Command1_Click()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set conn = CreateObject("Adodb.connection")
Set rs = CreateObject("Adodb.recordset")
conn.Open "provider=Microsoft.Jet.Oledb.4.0;data source=" & App.Path & "\vb.mdb"
rs.Open "select * from tupian", conn, 1, 3
If Text1(0).Text <> "" And Text1(1).Text <> "" Then
rs.AddNew
rs.Fields("mingchen").Value = Trim(Text1(0).Text)
rs.Fields("lujing").Value = Trim(Text1(1).Text)
rs.Update
MsgBox "数据添加成功!", vbInformation
Picture1.Picture = LoadPicture(App.Path & Text1(1).Text)
ElseIf Text1(0).Text = "" Then
Text1(0).SetFocus
Else
Text1(1).SetFocus
End If
rs.Close
End Sub
Private Sub Command2_Click()
Call connect
If Not (rs.BOF) Then
rs.MovePrevious
Else
rs.MoveLast
End If
Picture1.Picture = LoadPicture(App.Path & rs.Fields("lujing"))
End Sub
Private Sub Command3_Click()
Call connect
If Not (rs.EOF) Then
rs.MoveNext
Else
rs.MoveFirst
End If
Picture1.Picture = LoadPicture(App.Path & rs.Fields("lujing"))
End Sub
Private Sub Command4_Click()
Dim title As String
CommonDialog1.CancelError = False
CommonDialog1.InitDir = App.Path
CommonDialog1.ShowOpen
title = CommonDialog1.FileName
Text1(1).Text = Right(title, Len(CommonDialog1.FileName) - 17)
Text1(0).Text = CommonDialog1.FileTitle
End Sub
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set conn = CreateObject("Adodb.connection")
Set rs = CreateObject("Adodb.recordset")
conn.Open "provider=Microsoft.Jet.Oledb.4.0;data source=" & App.Path & "\vb.mdb"
rs.Open "select * from tupian", conn, 3, 1
rs.MoveFirst
Picture1.Picture = LoadPicture(App.Path & rs.Fields("lujing"))
rs.Close
End Sub
Function connect()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set conn = CreateObject("Adodb.connection")
Set rs = CreateObject("Adodb.recordset")
conn.Open "provider=Microsoft.Jet.Oledb.4.0;data source=" & App.Path & "\vb.mdb"
rs.Open "select * from tupian", conn, 1, 1
End Function
[解决办法]
http://download.csdn.net/detail/veron_04/1483930
[解决办法]
你的流程有问题。
1 数据库不要频繁地重复打开。
2 另外,你在一个函数(过程)内部定义的对象,其他过程中是无法访问的。
3 由于你的数据库表是每次重新打开的。即便能够访问,每次的当前记录都是第一条,所以相对你图片显示的上一幅和下一幅都无从说起。
所以,最好是小通用段声明一对数据库对象,事先打开。
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Private Sub Form1_Load()
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open "provider=Microsoft.Jet.Oledb.4.0;data source=" & App.Path & "\vb.mdb"
rs.Open "select * from tupian", conn, 1, 1
End Sub
此外,记录集指针移动后,才会更新此次移动引起的 EOF 或 BOF 属性。你在移动前判断是不对的。