【发布时间】:2018-01-30 16:20:17
【问题描述】:
我正在转换一些将 DAO 记录集上传到 Access 数据库的 Excel-VBA 代码。我的新代码使用 ADODB 对象,需要将数据推送到 Oracle 12c。
我查看了一些文章,并在此处找到了一个方便的等效图表:From-DAO-to-ADO。使用这些信息,我创建了以下代码。
第一个位只是加载源记录集。这里没有问题,但如果相关,请发布:
Dim CN As New ADODB.Connection, RS As New ADODB.Recordset
Dim SRC_CN As New ADODB.Connection, SRC_RS As New ADODB.Recordset, SRC_CMD As New ADODB.Command
strSQL = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Src_WB_nm & _
";Extended Properties='Excel 12.0 Xml;HDR=NO';"
SRC_CN.Open strSQL
Set SRC_CMD.ActiveConnection = SRC_CN
SRC_CMD.CommandType = adCmdText
SRC_RS.Close
Set SRC_RS = Nothing
strSQL = "SELECT * FROM [" & TableNm & "]"
SRC_CMD.CommandText = strSQL
With SRC_RS
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open SRC_CMD
End With
在此段中,我打开目标连接并尝试打开目标记录集。当我在 DAO 中时,这种方法(AddNew、RS...value = RS.value、RS.Update...)有效。我预计它可能需要进行一些修改,但它是我现在无法通过的 RS.Open 命令。
CN.Open CSTRG
strSQL = "DELETE FROM DFSTOOL.C_QUERYLIST"
Set RS = CN.Execute(strSQL)
Set RS = Nothing
RS.Open "DFSTOOL.C_QUERYLIST", CN, adCmdTable
Do Until SRC_RS.EOF
RS.AddNew
RS.Fields(0).Value = SRC_RS.Fields(0).Value
RS.Update
SRC_RS.MoveNext
Loop
RS.Close
SRC_RS.Close
Set RS = Nothing
Set SRC_RS = Nothing
感谢您提供的任何帮助!
【问题讨论】: