With
块变量没有设置(错误
91)
创建对象变量有两个步骤。第一,必须先声明对象变量。然后必须用
Set
语句将一个正确的引用赋值给对象变量。同样地,With...End
With
块必须先用
With
语句进入点来执行初始化。此错误有以下的原因和解决方法:
试图使用的对象变量,还没有用一个正确对象的引用来赋值。
给对象变量指定或再指定一个引用。例如,如果在下列的代码中省略
Set
语句的话,那么引用
MyObject
将会产生错误:
Dim
MyObject
As
Object
'
创建对象变量。
Set
MyObject
=
Sheets(1)
'
创建一个正确的对象引用。
MyCount
=
MyObject.Count
'
计数值赋给
MyCount。
试图用的对象变量已经被设为
Nothing。
Set
MyObject
=
Nothing
'
释放此对象。
MyCount
=
MyObject.Count
'
引用了已释放的对象。
再指定引用给对象变量。例如,使用新的
Set
语句给对象设置新的引用。
此对象是正确的对象,但没有被设置,因为在对象库中,在
“引用”
对话框中没有被选取。
在
“添加引用”
对话框选择对象库。
在
With
块内GoTo
语句的去向。
不要跳进
With
块。确保块使用
With
语句进入点以执行初始化。
当选了
“设置下一条语句”
命令时,在
With
块内指定了一行。
With
块必须用
With
语句执行初始化。
==========================================
你的错误应该是:你定义了一个数据库链接(或者链接对象,或者控件)但是没有对这个链接初始化(如set
conn=createobject("adodb.connection"))或者赋值,导致该对象为空,所以当你使用这个对象的时候就会出问题。
一个窗口是无法直接使用另一个窗口上的ado控件的,需要引用的时候必须带上窗体名字,比如在form2中使用form1里的data1控件,就必须使用:
form1.Data1.<属性、方法>
这样的格式才是正确的,如果form1中的data1没有初始化或者这个窗口没有打开,则报错
你的代码没有错误,如果总是出现“对象变量或with块变量未设置”错误,只有一个可能,就是你的mshflexgrid
控件的问题。当用的是
msflexgrid
控件时,会出现你说的问题。
Private SqlRes As ADODB.RecordsetPrivate Sub StuUpd_Click()
Dim SqlStr As String
SqlStr = "select * from XS where XH='" + Trim(StuXH.Text) + "'"
SqlRes.Open "select * from XS where XH='" + Trim(StuXH.Text) + "'", SqlCon, adOpenDynamic, adLockPessimistic
If Not SqlRes.EOF Then
'修改
SqlRes("XM") = StuXM.Text
SqlRes("XB") = StuXB.Text
SqlRes("ZY") = StuZY.Text
SqlRes("ZXF") = CInt(StuZXF.Text)
SqlRes.Update
Else
'添加
SqlRes.AddNew
SqlRes("XH") = StuXH.Text
SqlRes("XM") = StuXM.Text
SqlRes("ZY") = StuZY.Text
SqlRes("XB") = StuXB.Text
SqlRes("CSSJ") = CDate(StuCSSJ.Text)
If Trim(StuZXF.Text) <>"" Then
SqlRes("ZXF") = CInt(StuZXF.Text)
End If
SqlRes("BZ") = StuBZ.Text
SqlRes.Update
End If
SqlRes.Close
StuADO.Refresh
End Sub
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)