2011-04-08 114 views
0

运行时错误“91”:这个VB6错误是什么意思?

对象变量或带块变量未设置

我使用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 
+0

请发布代码段 – BugFinder 2011-04-08 08:03:08

+1

此错误表示某个对象变量或块变量未初始化。有时候错误反映了现实,你知道:) – Arvo 2011-04-08 08:04:43

+0

@阿尔沃 - 他们这样做,但有时候人们需要向正确的方向推动。 VB6没有最有用的错误消息。 – mdm 2011-04-08 08:07:01

回答

1

这意味着你正在尝试使用变量,但没有将该变量设置为任何值。具体而言,变量引用对象而不是值类型。

通常的原因是做了类似Dim obj As SomeClass而不是Dim obj As New SomeClass,即在使用它之前无法将变量设置为对象的引用。

+0

怎么回事?我已将idxid设置为我的表格的索引。 – aer 2011-04-08 08:28:01

2

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

2

您还没有初始化datPersonal.Recordset。

+0

我有...看看我的代码,并给我一些可能的原因,为什么发生。 – aer 2011-04-08 08:34:47

+0

@Aerohn在你提供的代码中,记录集没有被初始化,相信我们...... datPersonal.Recordset都是需要用Set SetPersonal = ...或者Set DatPersonal.Recordset = ....'线。 – Dabblernl 2011-04-08 10:14:17

+0

@Dabblernl在那段代码中,我知道记录集没有被初始化,但DataControl是在设计时编辑的[properties]。 – aer 2011-04-09 01:00:31

1

您需要初始化类才可以使用它们。假设datPersonal.Recordset实际上是一个记录集类,那么你将需要做类似如下:

Set datPersonal.Recordset = New ADODB.Recordset 

您还需要确保在你的项目,你已经添加到ActiveX数据对象的引用。

看一看下面:

Add reference to ADO

Using a recordset

1

从以前的问题,我假设datPersonal指ADO数据控件。 可以在设计时设置datacontrol的连接字符串和选择条件,并在应用程序启动时自动打开连接和记录集。

您收到此错误的事实表明,要么ConnectionString中和选择未指定或在执行以下代码:

Set datPersonal.Recordset = Nothing 
+0

我已经在设计时修改了DataControl的属性。我已经编辑了它的DatabaseName,RecordSource和RecordSetType ...是的,我用这种方式完成了一个正在运行的程序。 – aer 2011-04-09 01:02:05

+0

我明白了。您需要确定连接在启动时是否成功打开。你可以检查是否DataControl.Recordset什么也没有加载窗体? – jakdep 2011-04-09 17:00:55

1

也许问题就以另一种方式已经解决了,但你可以尝试将代码从form_load移动到form_activate