VB 对象变量或with块变量未设置

来源:百度知道 编辑:UC知道 时间:2024/05/26 13:48:05
以下的代码怎么会出现上述的问题?
Public mrcc As ADODB.Recordset
Public myBookmark As Variant '定义一个书签

Function AddNew(xvehao As String, xingming As String)
Dim txtSQL As String
Dim MsgText As String
txtSQL = "select * from lixiaogui"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
mrcc.AddNew
mrcc.Fields(1) = Trim(xvehao)
mrcc.Fields(2) = Trim(xingming)
mrcc.Update
MsgBox "维修资料信息添加成功!", vbOKOnly + vbExclamation, "添加房屋资料信息"
mrcc.Close
End Function
第一个回答简直垃圾,里面是手机图片下载
谢谢各位的指点,我后来在网络论坛找到了答案
是因为没在工程引用(微软..2.0),大侠们应该知道是什么

你代码中缺少了与数据库的连接句。

下面给出一段代码供参考:
Option Explicit
Dim db As ADODB.Connection
Dim rs As ADODB.Recordset
Private Sub Form_Load()
Set db = New ADODB.Connection
Set rs = New ADODB.Recordset
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\hxrkglsjk\hxrkgl.mdb;Persist Security Info=False"
db.Open
rs.CursorLocation = adUseClient
rs.Open "select * from mdlk_sj where 批号='D111C' and 日期>='2005-01-01'", db, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = rs
'DataGrid1.Refresh
End Sub

txtSQL = "select * from lixiaogui" 是在mrcc已经连接数据库文件之后可以使用的,而你给的这段程序没有初始化数据库文件,程序不知道到那里去找表,所以你需要设置ConnectionString为你需要的数据库.还有mrcc.Close 最好不要写在ADDNEW里面,除非特殊需要,一般在FORM_UNLOAD中写mrcc.Close,以便保证程序运行的安全与完整.

也许错误出在自定义函数ExecuteSQL上,它应该返回一个adodb.recordset对象.但是由于系统的一些bug,很可能它返回的是nothing(而不是.eof=true的recordset)
用msgbox mrcc is nothing
跟踪一下,看mrcc