gpt4 book ai didi

sql-server - CopyFromRecordset 返回奇怪的字符

转载 作者:行者123 更新时间:2023-12-01 22:29:12 26 4
gpt4 key购买 nike

我有以下代码:

Function downloadsqltoexcel(conn As ADODB.Connection, sSQL As String, exceldestinationrangename As String, sqltablename As String, bDownload As Boolean, Optional ws As Worksheet) As Variant

'================================================================================================================================
'== Procedure Name: downloadsqltoexcel
'== Purpose: downloads SQL table data (or query data) to Excel named range or grabs a specific value from an SQL table
'== Notes: ensure that SQL table or query name and Excel named range are identical
'================================================================================================================================

Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset

Dim DestinationRange As Range

With rsPubs

.ActiveConnection = conn
.Open sSQL, conn, adOpenStatic, adLockReadOnly, adCmdText

If bDownload Then 'if download switch is on, dump into Excel named range

If ws Is Nothing Then
Set DestinationRange = Range(exceldestinationrangename)
Else
Set DestinationRange = ws.Range(exceldestinationrangename)
End If

With DestinationRange
.ClearContents
.CopyFromRecordset rsPubs
End With

.... more code follows, but not relevant

代码本身执行得很好。然而,当我指向新创建的 Prod SQLServer 数据库时,.CopyFromRecordset rsPubs 行返回非常奇怪的字符数据,该数据库也是直接从 SQLServer 中的 QA 数据库复制的。当我说非常奇怪时,我的意思是就像空格与日式字符或一些我什至不认识的字体集混合在一起。

rsPubs 按预期返回准确的记录计数,所以我知道我正在得到我想要的结果。还确认数据已根据需要写入 SQLServer DB。

有什么想法可以修复它,以便值从对 Prod SQLServer DB 的调用中按预期返回吗?

最佳答案

我也遇到了类似的问题,我强烈怀疑您的 RecordSet 中返回的记录数量相当大。因此,CopyFromRecordSet 不起作用。

我建议使用以下方法:

  1. 使用 RecordSet 数据填充 VBA 中的二维数组。

    将 arr 变暗为变体arr=rs.GetRows()rs.closeconn.close

  2. 转置数组(因为这会导致倒排数组)

    arr=Application.WorksheetFunction.Transpose(arr)

  3. 数组转置后,您可以将数组写入工作表范围。

    testWS.Range("A1").Resize(UBound(arr, 1) + 1, UBound(arr, 2)

这对我有用。希望这对你有用!

快乐编码!

关于sql-server - CopyFromRecordset 返回奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42261508/

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