【问题标题】:Error converting datatype nvarchar to bigint将数据类型 nvarchar 转换为 bigint 时出错
【发布时间】:2012-09-25 23:09:30
【问题描述】:

您好,我有一个从数据库中提取信息的 excel VB 程序。我的相关函数代码如下。这段代码工作了多年,现在我收到一个错误:“将数据类型 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

【问题讨论】:

标签: sql vb.net excel sql-server-2008-r2 vba


【解决方案1】:

如果以某种方式将非数字值插入到您的sCCNumber 字段中,就会发生这种情况。解决方法是找到该值并修复它。

或者你可以替换

and sCCNumber <> ''

and ISNUMERIC(sCCNumber) = 1

【讨论】:

    【解决方案2】:

    正如 James 所指出的,您可能在其中包含无效数据。可能是一个额外的前导空格,或者 web 不间断空格,或者一个逗号。

    我会更改最后一行,因为您需要它是 12 位数字。

    sSQL = sSQL & " and sCCNumber not like '%[^0-9]%' and len(sCCNumber) = 12"
    

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多