У меня есть многомерный массив, который будет содержать 3 бита значения и значения, которые будут добавлены через цикл путем чтения из db. Когда он пришел эту строку кода:добавление значения к многомерному массиву
*MenuAccess(.Fields("GROUPNO").Value, .Fields("ITEMNO").Value, .Fields("SUBITEMNO").Value) = OKNO*
Это ударяя ошибка, "Ссылка на объект не указывает на экземпляр объекта.
Public MenuAccess(100, 30, 50) As Boolean
Private Sub RtGetMenu_Access()
Try
Dim OKNO As Boolean
Erase MenuAccess
DBMgr = New cAdodb
With DBMgr
.openCnn(cnnSPR)
.sql(rst1) = "Select * from BSMENU_ACCESS where LEVELCD = '" & Trim(UserTaskLevel) & "' Order by GROUPNO "
.openRstRead(rst1)
With .rst(rst1)
Do While Not .EOF
If .Fields("GROUPNO").Value.ToString.Trim <> "" And .Fields("ITEMNO").Value.ToString.Trim <> "" And .Fields("SUBITEMNO").Value.ToString.Trim <> "" Then
If .Fields("LEVEL1").Value.ToString.Trim = "Y" Then OKNO = True Else OKNO = False
'=> ERROR: 'Object reference not set to an instance of an object.'
MenuAccess(.Fields("GROUPNO").Value, .Fields("ITEMNO").Value, .Fields("SUBITEMNO").Value) = OKNO
End If
.MoveNext()
Loop
End With
.closeRst(rst1)
.closeCnn(rst1)
End With
DBMgr = Nothing
Catch ex As Exception
If DBMgr.cnn(cnnSPR).State <> 0 Then
DBMgr.closeCnn(cnnSPR)
DBMgr = Nothing
End If
End Try
End Sub
Option Строгое включение или выключение? – Steve
Очевидно, что одного из этих полей не существует. Не можете ли вы просто использовать отладчик IDE, чтобы определить, какой из них возвращает null? –
Поместите '.Fields (« GROUPNO »). Value',' .Fields («ITEMNO»). Value' и '.Fields (« SUBITEMNO »). Сначала сначала в локальные переменные, чтобы a) вы можете проверить' Nothing 'и b) вам не нужно дважды обращаться к ним в операциях 'IF' и' MenuAccess'. – ja72