Dim rs as New ADODB.Recordset
rs.Save "c:\yourFile.adtg", adPersistADTG
使用 Recordset.Open 打开持久文件:
Dim rs as New ADODB.Recordset
rs.Open "c:\yourFile.adtg", "Provider='MSPersist'",,,adCmdFile
此外,如果 Recordset 不包含活动的连接,那么您可以接受所有默认值并编写如下简单代码:
Dim rs as New ADODB.Recordset
rs.Open "c:\yourFile.adtg"
使用 Connection.Execute 打开持久文件:
Dim conn as New ADODB.Connection
Dim rs as ADODB.Recordset
conn.Open "Provider='MSPersist'"
Set rs = conn.execute("c:\yourFile.adtg")
使用 RDS.DataControl 打开持久文件:
在本范例中,未设置 Server 属性。
Dim dc as New RDS.DataControl
dc.Connection = "Provider='MSPersist'"
dc.SQL = "c:\yourFile.adtg"
dc.Refresh
Save 不关闭 Recordset 或 Destination,因此您可以继续使用 Recordset 并保存最近所做的更改。Destination 保持打开,直至 Recordset 关闭。
为安全起见,Save 方法只允许使用由 Microsoft Internet Explorer 执行的脚本中的低和自定义级别安全设置。有关安全问题的详细说明,请参阅 Microsoft Data Access Technical Articles 中的 ActiveX Data Objects (ADO) Technical Articles 下面的“ADO and RDS Security Issues in Microsoft Internet Explorer”。
如果在异步 Recordset 提取、执行或更新操作时调用 Save 方法,那么 Save 将一直等到该异步操作完成后才执行。
从 Recordset 的第一行开始保存记录。当完成 Save 方法时,当前行位置将移动到 Recordset 的第一行。
要得到最佳结果,请用 Save 将 CursorLocation 属性设置为 adUseClient。如果提供者不支持保存 Recordset 对象所必需的所有功能,Cursor Service 将提供该功能。
'得到所有数据类型,有些数据类型EXCEL不支持,已经替换掉
Public Function f_FieldType$(ByVal sType&)
Dim iRe$
Select Case sType
Case 2, 3, 20
iRe = "int"
Case 5
iRe = "float"
Case 6
iRe = "money"
Case 131
iRe = "numeric"
Case 4
iRe = "real"
Case 128
iRe = "binary"
Case 204
iRe = "varbinary"
Case 11
iRe = "bit"
Case 129, 130
iRe = "char"
Case 17, 72, 131, 200, 202, 204
iRe = "varchar"
Case 201, 203
iRe = "text"
Case 7, 135
iRe = "datetime"
Case 205
iRe = "image"
Case 128
iRe = "timestamp"
End Select
f_FieldType = iRe
End Function
'导出ADO记录集到EXCEL
Public Function f_Export2Excel(ByVal sRecordSet As ADODB.Recordset, ByVal sExcelFileName$ _
, Optional ByVal sTableName$, Optional ByVal sOverExist As Boolean = False) As Boolean
'On Error GoTo lbErr
Dim iConcStr, iSql$, iFdlist$, iDB As ADODB.Connection
Dim iI&, iFdType$, j, TmpField, FileName
Dim iRe As Boolean
'检查文件名
If Dir(sExcelFileName) <> "" Then
If sOverExist Then
Kill sExcelFileName
Else
iRe = False
GoTo lbexit
End If
End If
'生成创建表的SQL语句
With sRecordSet
For iI = 0 To .Fields.Count - 1
iFdType = f_FieldType(.Fields(iI).Type)
Select Case iFdType
Case "char", "varchar", "nchar", "nvarchar", "varbinary"
If .Fields(iI).DefinedSize > 255 Then
iSql = iSql & ",[" & .Fields(iI).Name & "] text"
Else
iSql = iSql & ",[" & .Fields(iI).Name & "] " & iFdType & _
"(" & .Fields(iI).DefinedSize & ")"
End If
Case "image"
Case Else
iSql = iSql & ",[" & .Fields(iI).Name & "] " & iFdType
End Select
Next
If sTableName = "" Then sTableName = .Source
iSql = "create table [" & sTableName & "](" & Mid(iSql, 2) & ")"
End With