1

これはasp.netアプリケーションにあります

私はこの例外を抱えています System.OverflowException: Arithmetic operation resulted in an overflow。しかし、奇妙なことに、関数が呼び出されて結果が返されると、このエラーが発生するように見えますが、関数を介さずに関数コードを直接記述した場合、コードの下に書き留めるだけで、このエラーは発生しません。コード

Dim MyItem As New Item    
If MyItem.GetQtyInBin(bran_code.Text, itcode.Text, binloc.Text) <= 0 Then

    ...............

    Exit Sub

ここにメソッドのコードがあります

'this method gets the qty of a certain item in a certainn location and returns it
 Public Function GetQtyInBin(ByVal Branch As String, ByVal Item As Integer, ByVal Bin As String) As Integer

    cn = New OleDb.OleDbConnection("provider=msdaora; Data Source=llmw; User Id=xxxx;Password=xxxx")
    cmd = New OleDb.OleDbCommand("select Qty from Binprmast where Bin_No='" & Bin & "' and item_Code='" & Item & "' and Bran_Code='" & Branch & "'", cn)
    cn.Open()
    Dim qty As Double
    qty = cmd.ExecuteScalar
    Return qty

End Function

4

2 に答える 2

0

あなたの質問でGetQtyInBinは、 を返すように定義されていIntegerますが、戻り値qtyは として定義されてい Doubleます。

Double は Integer より大きいため、オーバーフローが発生します。

このように修正

Public Function GetQtyInBin(ByVal Branch As String, ByVal Item As Integer, ByVal Bin As String) As Double
        cn = New OleDb.OleDbConnection("provider=msdaora; Data Source=llmw; User Id=boss;Password=boss")
        cmd = New OleDb.OleDbCommand("select Qty from Binprmast where Bin_No='" & Bin & "' and item_Code='" & Item & "' and Bran_Code='" & Branch & "'", cn)
        cn.Open()
        Dim qty As Double
        qty = cmd.ExecuteScalar
        Return qty
    End Function
于 2012-08-18T04:59:51.547 に答える
0

関数は整数を返しますが、戻り値を Double に設定しています。一致するように、どちらか一方を変更する必要があります。

注: Option Strict On に切り替えると、そのままではコンパイルされないため、このエラーが警告されます。

于 2012-08-18T05:02:56.590 に答える