“对象变量或with块变量未设置”是什么意思?
用VB开发了一个小型的学生资料管理系统,进行查询时老是提示“对象变量或with块变量未设置”用DAO方法连接的数据库 问题点数:40、回复次数:14Top
1 楼MyLf(不睡觉的鱼)回复于 2001-12-02 15:01:01 得分 5
就是變量沒有定義啊,或者有的變量沒有設置新的實例(New) ,仔細檢查一下Top
2 楼IMHELLFIRE(真正的用户痛恨真正的程序员。)回复于 2001-12-02 15:02:19 得分 0
我想可能是没初始化好Top
3 楼Amoon(阿木(0_o 治安是我扰乱的 o_0))回复于 2001-12-02 15:07:03 得分 0
是你定义的对象变量没有实例化。
Top
4 楼bluebill(天蓝蓝,海蓝蓝)回复于 2001-12-02 15:09:36 得分 0
Option Explicit
Public db As Database
Public rs1 As Recordset, rs2 As Recordset, rs3 As Recordset
Private Sub Command1_Click()
Dim num As String
On Error GoTo commanderror
num = InputBox$("请输入学号", "学号搜索", "001")
If num <> "" Then
num = "学号=" & "'" & num & "'"
rs1.FindFirst num
If Not rs1.NoMatch Then
Displayrecord
Else
MsgBox "目前没有这个学号的学生数据“,vbokonly+vbexclamation,"""
End If
End If
Exit Sub
commanderror:
MsgBox Err.Description
End Sub
Private Sub Command8_Click()
On Error GoTo commanderror
Form2.Enabled = True
Unload Form1
Exit Sub
commanderror:
MsgBox Err.Description
End Sub
Private Sub Form_Load()
On Error GoTo loaderror
Dim sql As String
sql = "SElECT 学籍.* Form 学籍 order by 学籍.学号"
Set rs1 = db.OpenRecordset(sql, dbOpenDynaset)
If rs1.RecordCount > 0 Then
Displayrecord
Else
MsgBox "目前没有任何学生的学籍数据"
rs1.AddNew
End If
Exit Sub
loaderror:
MsgBox Err.Description
End Sub
Public Sub Displayrecord()
Dim i As Integer
For i = 0 To 18
If Not IsNull(rs1.Fields(i)) Then Text1(i) = rs1.Fields(i) Else Text1(i) = ""
Next
End Sub
Public Sub cleardisplay()
Dim i As Integer
For i = 0 To 18
Text1(i) = ""
Next
End Sub
Option Explicit
Public addrecord As Boolean
Public modifyrecord As Boolean
Public rs1 As Recordset, rs2 As Recordset, rs3 As Recordset
Public db As Database
Private Sub Command1_Click()
Form1.Show
Form2.Enabled = False
End Sub
Private Sub Command2_Click()
db.Close
End
End Sub
Private Sub Form_Load()
On Error GoTo loaderror
Set db = OpenDatabase("f:\myvb\学籍.mdb", True, False)
Exit Sub
loaderror:
MsgBox Err.Description
End Sub
Private Sub 学籍管理_Click()
Form1.Show
Form2.Enabled = False
End Sub
源码全部在这儿了,请两位高人赐教Top
5 楼bluebill(天蓝蓝,海蓝蓝)回复于 2001-12-02 15:10:51 得分 0
一共有两个窗体,一个access数据库。Top
6 楼atyzy(笑闹江湖)回复于 2001-12-02 15:11:00 得分 5
with 什么?
找一下哪个对象在你的程序里有没有,比如with adodc1.recordset
你就要找一下有没有adodc1Top
7 楼atyzy(笑闹江湖)回复于 2001-12-02 15:16:07 得分 0
好像是变量没有定义,找到那个变量,定义一下不就完了?
Top
8 楼bluebill(天蓝蓝,海蓝蓝)回复于 2001-12-02 15:19:27 得分 0
If num <> "" Then
num = "学号=" & "'" & num & "'"
rs1.FindFirst num
是不是&的错误Top
9 楼xiaojian(萧剑)回复于 2001-12-02 15:25:44 得分 10
问题出在你并没有很好地理解VB中变量的设置!!!
Form1中的公有db变量和Form2中的公有db变量是两码事,你如果想在Form1中使用Form2中的db变量,并不需要在Form1中再设置Public db as Datebase,而只要用下面这句话:
Private Sub Form_Load()
……
Set rs1 = Form2.db.OpenRecordset(sql, dbOpenDynaset)
~~~~~~
……
End SubTop
10 楼xiaojian(萧剑)回复于 2001-12-02 15:31:17 得分 20
顺便提醒一句:
以后在调试程序的时候可以先不设错误捕获(On Error Goto ...),这样你在调试过程中就可以知道错误发生在哪一行了。
如果你已经设置了错误捕获(或者你想先设置错误捕获,以防以后忘记),你可以在调试过程中,将错误捕获换种方式:在“代码”窗中点击右键-->“切换”-->“发生错误时中断”。Top
11 楼xiaojian(萧剑)回复于 2001-12-02 15:32:37 得分 0
哪个学校的?Top
12 楼bluebill(天蓝蓝,海蓝蓝)回复于 2001-12-02 15:39:48 得分 0
多谢各位,尤其是萧剑。
Top
13 楼bluebill(天蓝蓝,海蓝蓝)回复于 2001-12-02 15:42:42 得分 0
结帐!!!Top
14 楼bluebill(天蓝蓝,海蓝蓝)回复于 2001-12-02 15:48:11 得分 0
to :萧剑
郑州大学的 帮老师做得,以前没有系统看过VB,刚开始两个星期,以后还请多多指教!Top




