0

我正在使用 ADODB 连接从 Remedy (Oracle) 中提取数据,并且出现了一个奇怪的故障,这似乎是由查询中的两个字段引起的。如果我删除这两个问题字段,CopyFromRecordset 可以正常工作,并且我会获得所有行和列的数据。如果我将问题列留在:

  • 每条记录都将缺少两个问题列和右侧每一列的数据
  • 例外情况是每 93 行(第 94、187、289 行等)将包含其所有数据

我尝试过的事情:

  • 重命名字段名称以查看是否可行(不)
  • 循环遍历记录而不是 copyfromrecordset(这可行,但速度非常慢,可能是因为有 45 列)

我已经排除:

  • 字段中的数据太长(最大长度为 25 个字符)
  • 具有无效字符的字段中的数据(失败的一半行在这些列中没有数据)

更新:代码示例

Sub GetData()
Dim Conn1 as New ADOBD.Connection
Dim Cmd1 as New ADOBD.Command
Dim Rs1 as New ADODB.Recordset
Dim PlaceHere as New Worksheet
Dim strsql as string
Dim AccessConnect As String

AccessConnect = "Driver={AR System ODBC Driver};ARServer=Servername;UID=UserID;PWD=password;ARAuthentication=;RNameReplace=1;SERVER=Words"

Conn1.ConnectionString = AccessConnect
Conn1.Open
Cmd1.ActiveConnection = Conn1

strsql=Sheets("Sheet1").Range("A2").Value

Cmd1.CommandText = strsql
Set rs1=cmd1.Execute

Set PlaceHere = Sheets("Sheet2")

PlaceHere.Range("A2").CopyFromRecordSet Rs1

Rs1.Close
Conn1.Close

End Sub
4

1 回答 1

0

我意识到这个问题现在有点老了。

您是否尝试过直接连接到实际数据库而不是使用 ARODBC?ARODBC 为您做了一些好事,比如自动翻译选择字段和日期/时间字段,但您可以自己做一些工作。

直接访问数据库可能会让您的事情变得更容易,并且可能会使这个问题消失。

于 2018-08-09T15:57:18.393 回答