1

私はVB.NettOrderでLightSwitch (Learning..) を使用しています。これが私の質問ですtProduct
UNITPRICE と TOTALPRICE を持つ tOrder で計算されたプロパティを作成しました。合計価格は簡単に作成できました。

Private Sub totalPrice_Compute(ByRef result As Decimal)
    result = quantity * unitPrice
End Sub

問題はそれにありunitPriceます。ユーザーの選択に応じてPriceinの値を自動的に割り当てる方法が見つかりません。tProductに 3 つの製品があるとしtProductます。価格が 5 の製品 A、価格が 10 の製品 B、および値が 20 の製品 C。ユーザーの選択に従って、「新規注文」の画面でそれが必要です (ユーザーが製品 A/製品を希望する場合)。 B/製品 C)の実際の価格をユーザーが確認できるように、 が自動的UnitPriceに変更されます。tOrderPricetProduct

私が試した:

Private Sub unitPrice_Compute(ByRef result As Decimal)
            result = Me.tProduct.price
End Sub

しかし、次のようなエラーが表示されます。NullReferenceException was unhandled by user code

また、私は試しました:

Private Sub unitPrice_Compute(ByRef result As Decimal)
  If Me.tProduct.nameProduct <> Nothing Then
     result = tProduct.price
  Else
     result = 0
  End If
End Sub

しかし、同じエラー..

それを解決する方法、またはどこで、いつ、どのように解決するかわかりません..私は LightSwitch の初心者であり、あなたが私を助けてくれればとても感謝しています..

どうもありがとう!

4

1 に答える 1

1

tProductが実際に値を持つ前にコードが呼び出されているため、そのPriceプロパティを参照しようとするとエラーが発生します。

あなたは 2 番目のコードに非常に近づいていました。必要なのは次のとおりです。

Private Sub unitPrice_Compute(ByRef result As Decimal)
  If (Me.tProduct IsNot Nothing) Then
     result = Me.tProduct.price
  Else
     result = 0
  End If
End Sub

プロパティを使用する前に、常にnull (またはVB ではNothing )、つまりエンティティに値があることを確認する必要があります。また、 Nothingとの比較で<>を使用することはできません。 IsまたはIsNotを使用する必要があります。

より簡単な代替方法は、次のようなコードを記述することです (ただし、上記のバージョンでも問題ありません)。

Private Sub unitPrice_Compute(ByRef result As Decimal)
  result = If(Me.tProduct Is Nothing, 0, Me.tProduct.price)
End Sub
于 2012-12-08T12:36:26.627 に答える