1

私はこれに対する解決策を見つけるために一生懸命努力してきましたが、運がありません。私は 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 を渡しました。明確にするために編集されています。

4

1 に答える 1

1

問題はvb変数の定義にあります。私はあなたが整数を持っていると仮定します、それはSQLに至るまで(整数の)null許容である必要があります。これは整数と書くこともできますか?

于 2013-01-12T01:29:13.453 に答える