VBA/Excel/Access/Word/Access/Recordset Save

Материал из VB Эксперт
Перейти к: навигация, поиск

Copy Records to a Text File

   <source lang="vb">

Sub WriteToFile()

  Dim conn As ADODB.Connection
  Dim myRecordset As ADODB.Recordset
  Dim f As ADODB.Field
  Dim myFileSystemObject As Object
  Dim txtfile As Object
  Set conn = New ADODB.Connection
  conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.Path & "\mydb.mdb"
  Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
  Set txtfile = myFileSystemObject.CreateTextFile("c:\testfile.txt", True)
  Set myRecordset = New ADODB.Recordset
  myRecordset.Open "[Order Details]", conn
  With myRecordset
     For Each f In .Fields
        txtfile.Write (f.Name)
        txtfile.Write Chr(9)
     Next
     txtfile.WriteLine
     txtfile.Write myRecordset.GetString(adClipString)
     .Close
  End With
  txtfile.Close
  Set myRecordset = Nothing
  conn.Close
  Set conn = Nothing

End Sub

</source>
   
  


Saving Records to a Disk File

   <source lang="vb">

Sub SaveRecordsToDisk()

   Dim conn As ADODB.Connection
   Dim myRecordset As ADODB.Recordset
   Dim strFileName As String
   Dim strNorthPath As String
   strFileName = CurrentProject.Path & "\Companies.rst"
   strNorthPath = CurrentProject.Path & "\mydb.mdb"
    On Error GoTo ErrorHandle
    Set conn = New ADODB.Connection
    With conn
         .Provider = "Microsoft.Jet.OLEDB.4.0"
         .ConnectionString = "Data Source = " & strNorthPath
         .Mode = adModeReadWrite
         .Open
     End With
    Set myRecordset = New ADODB.Recordset
    With myRecordset
       .CursorLocation = adUseClient
       .Open "Customers", conn, adOpenKeyset, adLockBatchOptimistic, adCmdTable
       .ActiveConnection = Nothing
       .Save strFileName, adPersistADTG
       .Close
     End With
     Debug.Print "Records were saved in " & strFileName & "."

ExitHere:

   Set myRecordset = Nothing
   Exit Sub

ErrorHandle:

   If Not IsEmpty(Dir(strFileName)) Then
     Kill strFileName
     Resume
   Else
     MsgBox Err.Number & ": " & Err.Description
     Resume ExitHere
   End If

End Sub

</source>