Excel VBA CopyFromRecordSet列失败

时间:2017-01-26 00:13:40

标签: excel oracle vba excel-vba remedy

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

  • 每个记录都会丢失两个问题列的数据
  • 的每一栏
  • 例外是第93行(第94,187,289等行)将拥有其所有数据

我尝试过的事情:

  • 重命名字段名称以查看是否可行(nope)
  • 循环记录而不是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

1 个答案:

答案 0 :(得分:0)

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

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

直接进入数据库可能会使您的工作变得容易得多,并且可能使此问题消失。