1

元の質問:

金額が$999,999,99を超える場合、Moneyデータ型を使用してADO.NETコードで数値をデータ型数値に変換する算術オーバーフローエラーが発生するのはなぜですか?


質問にあるように...データアクセス層に、SQLServer2008データベースと通信するADO.netコードが少しあります。テーブルには、データ型が「Money」のAmount列があります。金額が$1,000,000未満のレコードを挿入する場合、コードは正常に機能しますが、金額が$1,000,000を超える場合はこのエラーがスローされます。

「数値をデータ型数値に変換する際の算術オーバーフローエラー」

データベースに対して手動でt-sqlを実行し、金額を$ 1,000,000より大きい値に更新して、データベースが金額を細かく除外できるようにすることができます...エラーを発生させる次のSqlCommandについてはどうでしょうか。

        MyCommand.Parameters.Add(New SqlParameter("@Amount", SqlDbType.Money))
        If IsNothing(Amount) Then
            MyCommand.Parameters("@Amount").Value = Convert.DBNull
        Else
            MyCommand.Parameters("@Amount").Value = Amount
        End If
4

1 に答える 1

1

値を指定してストアド プロシージャを呼び出すとエラーが発生し、同じ値でテーブルを直接更新してもエラーが発生しない場合は、@Amount パラメータのデータ型が疑われます。Money としても定義されていることを確認します。

于 2009-12-16T16:32:31.357 に答える