excel VBA SQL提取的数据返回为空

hgtggwj0  于 2022-11-26  发布在  其他
关注(0)|答案(1)|浏览(581)

我正在从SQL ADODB连接拉入Excel VBA,似乎有些字段返回时为空,但在SQL中有值。我对VBA非常绿色(只是回到旧版应用程序中,尝试将所有内容迁移到SQL数据库存储而不是CSV)
下面是返回值的示例(只是一个“我们应该拥有的位置“示例数据|QRSTE/ S179399”)

要提取的代码:

Sub GetDFInfoByDf(recordID As String, connectionString as String)

    Dim connectionString As String
    connectionString = connectionString

    Dim command As String
    command = "Select * FROM data_table WHERE id = '" & recordID & "'"
    
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset

    Set conn = New ADODB.Connection
    Set rs = New ADODB.Recordset

    conn.Open connectionString

    rs.CursorLocation = adUseClient
    rs.CursorType = adOpenStatic
    rs.LockType = adLockBatchOptimistic

    Set rs = conn.Execute(command)

    Dim rsMatrix As Variant
    rsMatrix = rs.GetRows(1)

    If IsNull(rs) Then
        'rs is null
        MsgBox "Pulled recordset is null"
    Else
        Call FillObjValuesFromRecordSet(rs)
    End If

我看到我们有一个有点特殊的角色在那里(|)
就任何SQL编码配置而言:它最有可能是UTF-8。我认为我必须在VBA或SQL端将其转换为ANSI,但我一直在兜圈子试图弄清楚这一点。
请注意,此字段在SQL中为NVARCHAR
关于如何处理这个问题有什么想法吗?据我所知,关于这个问题的文档非常少。
谢谢你!
我尝试过的事情:
1.添加会话模式=ANSI;连接字符串
预期结果:-SQL存储varchar“示例数据|QRSTE/ S179399”(字段中没有引号)-我希望Select返回确切的varchar/string值,而不是图像(“)中的返回值

fgw7neuy

fgw7neuy1#

解决方法:
带有varchar(max)或nvarchar(max)的SQL表列无法转换回来。
我的初始表的大小超出了需要的大小,因此将这些列更改为varchar(8000)和nvarchar(4000)解决了这个问题!
谢谢

相关问题