2012-05-11 14 views
18

bool travel = fill.travel.Value;は、私は次のようなエラーになっています:Nullableオブジェクトには値が必要ですか?行で

Nullable object must have a value

をし、私はなぜわかりません。私がやりたいことは、現在は間違っている旅行のデータベースの価値を得ることだけです。どんな助けもありがとう。

using (var db = new DataClasses1DataContext()) 
{ 
    var fill = (from f in db.expenseHdrs 
       where f.rptNo == getPkRowReport() 
       select f).FirstOrDefault(); 

    txtReportDesc.Text = fill.description; 
    txtPeriod.Text = fill.period; 
    txtPurpose.Text = fill.purpose; 

    bool travel = fill.travel.Value; 
    chkTravel.Checked = travel 
} 
+0

'何を返すgetPkRowReport'ん。ネット4を使用している場合

bool travel; bool? temptravel = fill.travel.Value; if(temptravel == true) travel = true; else travel = false; 

それともヴァルバフチンのソリューションを使用します。この場合は、明確にする

は、このコードを考えてみ? –

+8

fill.travelはnull可能なbool( 'bool?')で、データベースではNULLです。 – driis

+1

@driis、それは答えなので、下に移動することもできます。 –

答えて

30

あなたは常にデフォルト(偽)、またはデータベースからのブール列の値を提供するには

fill.travel.GetValueOrDefault() 

に切り替えることができます。または、デフォルトを過負荷で指定することもできます。どちらの方法でも、nullableは現在値を持っていないので、その例外が発生します。

3

hasValueはプロパティがfalseの場合、あなたがNullable.Valueプロパティにアクセスする場合は、InvalidOperationExceptionを取得します。

3

あなたが実際にデータベースからの値がNULL可能ブールある

if(fill.travel.HasValue) 
{ 
    bool travel = fill.travel.Value; 
} 
2

その値にアクセスする前にNULL可能変数は、このようないくつかの値を持っているかどうかを確認できます。 Nullable.Valueを呼び出すと、値がnullの場合、この例外が発生します。 .Valueを呼び出す前にNullable.HasValueプロパティをチェックすることを検討してください。

3

あなたが合体演算子(.NET 4.0)を使用することができます 、(あなたのfill.travelがnullの場合、あなたはそれから小道具を呼び出す)存在しないオブジェクトからプロパティにアクセスしようとしている。

bool travel = fill.travel ?? false; 
関連する問題