0

私はここで私がばかであることを知っています、そして私はそれを解決することができません. しかし、vb.net データベースからデータを取り戻そうとしています。オブジェクトエラーのインスタンスに設定されていないオブジェクト参照で失敗しています。そして、コードが実行される前に、変数が設定される前に使用されていると言っていますが、その方法がわかりません。コード:

  Private taNotifications As dsDataTableAdapters.NotificationsTableAdapter = New dsDataTableAdapters.NotificationsTableAdapter 

   Dim notification As dsData.NotificationsDataTable = taNotifications.GetDataByClientID(userrow.UserID)

                If notification.Rows.Count > 0 Then

                    Dim notificationrow As dsData.NotificationsRow
                    Dim forwardURL As String = notificationrow.ForwardLocation

                End If

それは上に倒れますDim forwardURL As String = notificationrow.ForwardLocation

4

2 に答える 2

5

問題は、if ステートメント内で notificationRow をインスタンス化していないことです。あなたはそれを宣言しましたが、それは何にも属していません。このオブジェクトで何かを行う前に、割り当てを行うか、行をループする必要があります。

Dim notificationrow As dsData.NotificationsRow ' this is not instantiated
Dim forwardURL As String = notificationrow.ForwardLocation

この場合、本当に必要なのは次のとおりです。

For Each notificationRow As dsData.NotificationRow In notification

    Dim forwardURL As String = notificationRow.ForwardLocation        
    ' Do Something

Next

行が 1 つしかなく、1 行または 0 行しかないことがわかっている場合は、次のようにして if ステートメントを使用できます。

If notification.Rows.Count > 0 Then

    Dim notificationrow As dsData.NotificationsRow = _
        CType(notification.Rows(0), dsData.NotificationsRow)

    Dim forwardURL As String = notificationrow.ForwardLocation

End If

編集: 上記のコードでは、もともとnotification.Rows(0). これにより DataRow オブジェクトが生成されますが、厳密に型指定されません。CTypeカスタム プロパティを使用するには、追加したを実行する必要がありますForwardLocation

于 2012-06-13T15:07:57.437 に答える
1

あなたは何も設定notificationrowしません。このように設定するつもりでしたか?

Dim notificationrow As dsData.NotificationsRow = CType(notification.Rows(0), dsData.NotificationsRow)
于 2012-06-13T15:08:04.483 に答える