C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: エラーの発生場所について


(過去ログ 136 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■80283 / inTopicNo.1)  エラーの発生場所について
  
□投稿者/ jack (1回)-(2016/06/27(Mon) 13:14:27)

分類:[VB.NET/VB2005 以降] 

VBで作成したバッチプログラムでエラーが発生しているのですが、どこでエラーが発生しているのかわからず困っています。
他の人が作ったプログラムのため、構造や原因がわからず調べているところなのですが、以下のようなメッセージです。
(****の部分には固有名詞が入っているので伏せています。)


System.Data.SqlTypes.SqlNullValueException: データが Null です。このメソッド、またはプロパティは Null 値で呼び出せません。
場所 System.Data.SqlTypes.SqlInt32.get_Value()
場所 ****.WorkManagement.Business.Impl.CommonLogicImpl.IsWorkableInWorkymd(Staff staffEntity, Int32 ymd)
場所 Seasar.Framework.Aop.Impl.MethodInvocationImpl.Proceed()
場所 Seasar.Framework.Aop.Interceptors.TraceInterceptor.Invoke(IMethodInvocation invocation)
場所 Seasar.Framework.Aop.Interceptors.TraceInterceptor.Invoke(IMethodInvocation invocation)
場所 Seasar.Framework.Aop.Proxy.AopProxy.Invoke(IMessage msg)
場所 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
場所 ****.WorkManagement.Business.ICommonLogic.IsWorkableInWorkymd(Staff staffEntity, Int32 ymd)
場所 ****.WorkManagement.Business.BatchService.Impl.CreateWorkPerformanceLogicImpl.CreateWorkPerformance(DateTime createDate)
場所 Seasar.Framework.Aop.Impl.MethodInvocationImpl.Proceed()
場所 Seasar.Framework.Aop.Interceptors.TraceInterceptor.Invoke(IMethodInvocation invocation)
場所 Seasar.Framework.Aop.Interceptors.TraceInterceptor.Invoke(IMethodInvocation invocation)
場所 Seasar.Framework.Aop.Proxy.AopProxy.Invoke(IMessage msg)
場所 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
場所 ****.WorkManagement.Business.BatchService.ICreateWorkPerformanceLogic.CreateWorkPerformance(DateTime createDate)
場所 ****.WorkManagement.Batch.CreateWorkPerformanceModule.main()


この場合、
 「IsWorkableInWorkymdを呼び出す時」にエラーが発生しているのでしょうか、それとも
 「IsWorkableInWorkymdの中のどこかの行」でエラーが発生しているのでしょうか。

前者だとすると「staffEntity」か「ymd」かどちらかがNULLなのでエラーが発生している
後者だとすると処理中のどこかでCint(項目)で項目がNULLなのでエラーが発生している
というふうに考えているのですが。

初心者のためおかしい質問になっているかもしれませんが、よろしくおねがいします。

引用返信 編集キー/
■80284 / inTopicNo.2)  Re[1]: エラーの発生場所について
□投稿者/ 魔界の仮面弁士 (752回)-(2016/06/27(Mon) 13:59:07)
No80283 (jack さん) に返信
> System.Data.SqlTypes.SqlNullValueException: データが Null です。このメソッド、またはプロパティは Null 値で呼び出せません。
> 場所 System.Data.SqlTypes.SqlInt32.get_Value()
> 場所 ****.WorkManagement.Business.Impl.CommonLogicImpl.IsWorkableInWorkymd(Staff staffEntity, Int32 ymd)

IsWorkableInWorkymd メソッドの中に、SQL Server の整数型データにアクセスしている箇所があり、
その呼び出し処理において、データが NULL かどうかを判定し忘れたまま Integr 値として扱っているため、
例外が発生している状況かと。
引用返信 編集キー/
■80285 / inTopicNo.3)  Re[2]: エラーの発生場所について
□投稿者/ jack (2回)-(2016/06/27(Mon) 18:46:04)
問題のメソッド内でCint(db項目)としている部分があり、そのdb項目がNULLだったのが原因でした。

エラーメッセージに「場所」がたくさん出ていたのと、
「どこそこメソッドの○行目」みたいに行番号が出ていなかったので、
メソッドを呼ぶときの問題なのか、メソッドの中での問題なのか混乱してしまいました。

おかげさまで解決しました。
ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -