2011-04-08 164 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