VB中出现对象变量或with变量未设定是啥原因

[复制链接]
查看11 | 回复1 | 2008-12-24 13:18:57 | 显示全部楼层 |阅读模式
我的代码如下:
Option Explicit
Dim rs As ADODB.Recordset
Dim SQL As String
Dim msg As String
Dim index As Integer
Dim flag As String
Private Sub Form_Load()
Call LoadData
Call ShowData
End Sub
Private Sub LoadData()
Dim list As ListItem
Dim key As String
Set rs = Nothing
SQL = "SELECT * FROM 班级信息表 ORDER BY 班级名称"
Set rs = SelectSQL(SQL, msg)
ListView1.ListItems.Clear
If rs.RecordCount = 0 Then运行后这里显示黄色
CmdAdd.Enabled = True: CmdModify.Enabled = False: CmdDelete.Enabled = False
CmdCancel.Enabled = False: CmdSave.Enabled = False
Else
rs.MoveFirst
Do Until rs.EOF
key = rs.Fields("班级名称")
Set list = ListView1.ListItems.Add(, , key, 1)
rs.MoveNext
Loop
rs.MoveFirst
CmdAdd.Enabled = True: CmdModify.Enabled = True: CmdDelete.Enabled = True
CmdCancel.Enabled = False: CmdSave.Enabled = False
End If
Call ControlEnable(False)
End Sub
Private Sub ControlEnable(flag As Boolean)
For index = 0 To 3
txt(index).Enabled = flag
Next index
End Sub
Private Sub ShowData()
If rs.RecordCount0 Then
txt(0).Text = rs.Fields("班级名称")
txt(1).Text = rs.Fields("班级人数")
txt(2).Text = rs.Fields("所在教室")
txt(3).Text = rs.Fields("班主任")
End If
End Sub
Private Function CheckData() As Boolean
Dim rst As ADODB.Recordset
Dim msgt As String
msgt = ""
If Trim(txt(0).Text) = "" Then
msgt = "班级名称为空;"
txt(0).SetFocus
txt(0).SelStart = 0
txt(0).SelLength = Len(txt(0).Text)
ElseIf Not IsNumeric(Me.txt(1).Text) Then
msgt = msgt & "班级人数输入不合法;"
txt(1).Text = 0
ElseIf Trim(txt(2).Text) = "" Then
msgt = msgt & "所在教室为空;"
txt(2).SetFocus
txt(2).SelStart = 0
txt(2).SelLength = Len(txt(2).Text)
End If
If Not msgt = "" Then
MsgBox (msgt)
CheckData = False
Exit Function
End If
SQL = "SELECT *FROM班级信息表 where 班级名称='" & Trim(txt(0).Text) & "'"
Set rst = SelectSQL(SQL, msg)
If flag = "Add" And rst.RecordCount > 0 Then
MsgBox ("该信息已经存在,重新添加!")
txt(0).SetFocus
txt(0).SelStart = 0
txt(0).SelLength = Len(txt(0).Text)
rst.Close
CheckData = False
Exit Function
End If
CheckData = True
End Function
Private Sub ListView1_BeforeLabelEdit(Cancel As Integer)
Set Me.ListView1.Icons = Me.ImageList1
End Sub
Private Sub ListView1_Click()
Dim key As String
If rs.RecordCount > 0 Then
key = Trim(ListView1.SelectedItem)
SQL = "SELECT *FROM班级信息表 where 班级名称='" & key & "'"
Set rs = SelectSQL(SQL, msg)
Call ShowData
End Sub
Private Sub setData()
rs.Fields("班级名称") = Me.txt(0).Text
rs.Fields("班级人数") = Me.txt(1).Text
rs.Fields("所在课室") = Me.txt(2).Text
rs.Fields("班主任") = Me.txt(3).Text
End Sub

回复

使用道具 举报

千问 | 2008-12-24 13:18:57 | 显示全部楼层
formload 时,msg还没有被赋初值,SelectSQL无法下确返回,rs当然就会出错了....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行