这个VB6错误是什么意思?

这个VB6错误是什么意思?,vb6,Vb6,运行时错误“91”: 对象变量或未设置块变量 我正在使用VB6 好的,这是我的代码 Private Sub Form_Load() lblIDNumber.Caption = UserID With datPersonal.Recordset .Index = "idxid" .Seek "=", UserID LockTextboxes End With End Sub Public Sub LockTextbo

运行时错误“91”:

对象变量或未设置块变量

我正在使用VB6

好的,这是我的代码

Private Sub Form_Load()
    lblIDNumber.Caption = UserID

    With datPersonal.Recordset
        .Index = "idxid"
        .Seek "=", UserID

        LockTextboxes

    End With

End Sub

Public Sub LockTextboxes()
    With txtDateHired
        .Locked = True
    End With

    With txtBirthday
        .Locked = True
    End With

    With txtGender
        .Locked = True
    End With

    With txtAddress
        .Locked = True
    End With

    With txtContact
        .Locked = True
    End With

    With txtStatus
        .Locked = True
    End With

    With txtPosition
        .Locked = True
    End With

    With txtBasicSalary
        .Locked = True
    End With

    With txtReligion
        .Locked = True
    End With
End Sub

这意味着您正在尝试使用一个变量,但尚未将该变量设置为任何值。具体来说,变量引用的是对象而不是值类型


通常的原因是做一些类似于将对象作为SomeClass设置为Dim obj的事情,而不是将对象作为新SomeClass设置为Dim obj,也就是说,在使用对象之前未能将变量设置为对象的引用。

这通常发生在您调用未设置的对象的方法时。

您尚未初始化datPersonal.Recordset。

您需要先初始化类,然后才能使用它们。假设datPersonal.Recordset实际上是一个Recordset类,则需要执行以下操作:

Set datPersonal.Recordset = New ADODB.Recordset
您还需要确保在项目中添加了对ActiveX数据对象的引用

请看以下内容:

Set datPersonal.Recordset = New ADODB.Recordset


根据前面的问题,我假设datPersonal指的是ADO数据控件。 datacontrol的connectionstring和选择标准可以在设计时设置,并且当应用程序启动时,会自动打开连接和记录集

出现此错误表明未指定connectionstring和selection,或者执行了以下代码:

Set datPersonal.Recordset = Nothing

可能问题已经用另一种方法解决了,但您可以尝试将代码从form_load移动到form_activate

此错误意味着某些对象变量或with block变量未初始化。有时候错误反映了现实,你知道:)@Arvo-确实如此,但有时候人们需要朝着正确的方向努力。VB6没有最有用的错误消息。我在那里发布了我的代码。。。错误发生在
.Index=“idxid”
上。在访问成员字段之前,您应该
设置datPersonal.Recordset=new Recordset
。@'Lenik,很抱歉,我使用的是DataControl而不是Adodb…为什么?我已将
idxid
设置为表中的索引。我已。。。请看一看我的代码,并请告诉我发生这种情况的可能原因。@Aerohn在您提供的代码中,记录集没有初始化,请相信我们。。。。datPersonal和datPersonal.Recordset都是需要使用
Set datPersonal=…
Set datPersonal.Recordset=…
行初始化的类。@Dabblernl在该代码中,我知道记录集未初始化,但DataControl在设计时编辑过[属性].I'v已在设计时修改了DataControl的属性。我已经编辑了它的数据库名、记录源和记录集类型。。。是的,我用这种方式完成了一个运行程序。我明白了。您需要确定连接是否在启动时成功打开。一旦表单加载,您能检查DataControl.Recordset是否为空吗?