gpt4 book ai didi

sql - VBA Excel错误将nvarchar值转换为int

转载 作者:行者123 更新时间:2023-12-03 07:54:07 25 4
gpt4 key购买 nike

我创建了一个Excel VBA代码来从服务器获取数据。在一年多的时间里效果很好。但是,关于“拒绝的名字(没有名字)”顾客的标准之一已经改变了。在我们为他们自动分配客户编号之前,但是随着新的更改,系统不会为这些客户分配任何客户编号客户编号,而是为其提供“R/N”代码。因此,现在我在从服务器提取数据时遇到了一些问题。我试图应用一些我在网上发现的“绕过技术”,但它们对我不起作用(谈论CAST)。
isnumeric([CustId])THEN CAST([CustId] AS int)时为case,否则为0结束

但它没有用。我收到此错误:“运行时错误-2147217913(80040e07)
[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]对话失败
在将nvarchar值'R/N转换为数据类型int时。 ”

我需要做的就是忽略客户ID字段中的“R/N”。请在下面查看我的vba代码。
先感谢您
巴哈

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DBFullName, TableName As String
Dim TargetRange As Range
Dim Conn As ADODB.Connection, intColIndex As Integer
Dim cel As Range
Dim TD As Double
Dim TD2 As Double
Dim qdate As Double
Dim qdate2 As Double
Dim lastrow As Long
Dim custid 'As String+


TD = DateSerial(Year(Now()), Month(Now()), 1)
TD2 = Target.Offset(-4, -2).Value
custid = Range("custid4").Text

Target.Cells(1, 1).Select
Selection.Activate
Set TargetRange = Range("custid4").Offset(2, 0)
Set Conn = New ADODB.Connection

Conn.Open "driver={SQL Server};" & _
"server=XXXX01\RPTDB;database=Reporting_ODS;"

Set RecSet = New Recordset
RecSet.Open "SELECT TOP(1)Baha_PM.Lname +' '+ Baha_PM.Fname FROM Reporting_ODS.TG.Baha_PM Baha_PM " & _
"WHERE Baha_PM.CustId='" & custid & "'", Conn, , , adCmdText
TargetRange.CopyFromRecordset RecSet

RecSet.Close
Set RecSet = Nothing
Conn.Close
' Trip

Set TargetRange = Range("custid4").Offset(14, 0)
Set Conn = New ADODB.Connection

Conn.Open "driver={SQL Server};" & _
"server=XXXX01\RPTDB;database=Reporting_ODS;"
Set RecSet = New Recordset

RecSet.Open "SELECT MAX(Baha_PM.Trip_Id) FROM Reporting_ODS.TG.Baha_PM Baha_PM " & _
"WHERE Baha_PM.CustId='" & custid & "'", Conn, , , adCmdText
TargetRange.CopyFromRecordset RecSet


RecSet.Close
Set RecSet = Nothing
Conn.Close
Set Conn = Nothing

End Sub

最佳答案

ISNUMERIC是SQL Server函数。您需要的是Excel VBA函数,以测试监护权是否为数字。有一个功能ISNumber。

使用此代码修复字符串值

If Not IsNumber(custid) Then
Custid = "0"
End If

在从范围文本中分配了CUSTID变量之后,直接插入此代码

关于sql - VBA Excel错误将nvarchar值转换为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33294369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com