0

こんにちは私はデータベースから情報を引き出すExcelVBプログラムを持っています。問題の関数の私のコードは以下のとおりです。このコードは何年も機能していましたが、「データ型nvarcharからbigintへの変換中にエラーが発生しました」というエラーが発生します。なぜこれが突然発生するのでしょうか。修正方法は何ですか。

Public Function GetGiftCardsRedeem(iColumn As Integer, sFrom As String, sTo As String)

    Dim rsResults As New ADODB.Recordset
    Dim sSQL As String
    Dim iRecordCount As Integer

    ' Assign the Connection object.
    rsResults.ActiveConnection = gcnnDB

    ' Extract the required records.
    sSQL = "Select Sum(dTotalAmount) as TotalAmount from GiftCardTransactions where dtCreated between '" & sFrom & " 00:00:00' and '" & sTo & " 23:59:59'"
    sSQL = sSQL & " and CONVERT(BigINT, sCCNumber) Between 800110110000 and 800110159999" '800110110000
    sSQL = sSQL & " and not sCCNumber is null and sCCNumber <> ''"


    rsResults.Open sSQL, gcnnDB, adOpenStatic, adLockReadOnly, adCmdText
    If Not rsResults.EOF Then
        'Let's Cycle through the records..
        'We need to move last and then move back first to get a correct recordCount.

        DoEvents: DoEvents

        Sheet1.Cells(MTD_FREEGIFTCARDS_QTY_ROW, iColumn) = rsResults.Fields("TotalAmount").Value
    End If
    rsResults.Close
End Function
4

2 に答える 2

1

どういうわけか非数値がsCCNumberフィールドに挿入された場合に発生します。修正は、その値を見つけて修正することです。

または、置き換えることができます

and sCCNumber <> ''

and ISNUMERIC(sCCNumber) = 1
于 2012-10-04T20:29:04.613 に答える
0

Jamesが指摘しているように、そこには無効なデータが含まれている可能性があります。おそらく、余分な先頭のスペース、またはWebの改行なしスペース、またはコンマです。

最後の行は12桁である必要があるため、変更します。

sSQL = sSQL & " and sCCNumber not like '%[^0-9]%' and len(sCCNumber) = 12"
于 2012-10-04T21:16:28.710 に答える