私はこれに対する解決策を見つけるために一生懸命努力してきましたが、運がありません。私は VB と SQL にかなり慣れていませんが、これはそれほど難しいことではありません。私は多くのコードを継承しており、db 属性の種類などを変更する余地はあまりありません。
次のように、Razor でパラメーターを使用して UPDATE クエリを実行しようとしています。
Dim updateCommand = "UPDATE [tblJobRating] SET [ProjectManagement] = @0, [ProjComments] = @1, [Schedule] = @2, [SchedComments] = @3 WHERE [JobRatingID] = @4"
問題のすべての列には INT 値が必要ですが、null 値を渡す必要がある例外が 1 つあります (別の数値またはゼロを渡すことはできません)。基本的に、ユーザーにとっては「N/A」の値です。
次のように、Post リクエストから変数を割り当てます。
Dim projMgmt = Request.Form('projMgmt')
' ...
Dim sched = Request.Form('sched')
「N/A」値が現在値を投稿していません (または、文字列にすることができ、必要に応じて IsNumber を確認できます)。しかし、クエリの実行を呼び出すと、値が 0 として入力されます。
db.Execute(updateCommand, projMgmt, projComments, sched, schedComments, ratingId)
バックエンドが正しく機能するには、NULL 値である必要があります。Nothing
、などを型チェックして渡してみましSystem.Data.SqlTypes.SqlInt32.Null
たが、変換エラーが発生するか、0 に設定されます。どうすれば正しく渡すことができますか?
編集: db.Execute メソッドの最初のパラメーターを省略し、updateCommand を渡しました。明確にするために編集されています。