ImportText.exe 範例會示範文字檔案匯入 Microsoft Access 資料庫中的各種方法。有很多方法可用來匯入文字資料至 Access 資料庫,而且通常是最佳的選項由工作需求。
範例應用程式附加上述程式碼撰寫選項的詳細資訊。
從 「 Microsoft 下載中心 」 下載下列檔案有:
TextImport.exe
(http://download.microsoft.com/download/vb60pro/sample/1/w9xnt4/en-us/textimport.exe)
如需有關如何下載 Microsoft 支援檔案的詳細資訊,按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
119591?
(http://support.microsoft.com/kb/119591/EN-US/
)
如何從線上服務取得 Microsoft 支援檔案
Microsoft 已掃描這個檔案有無病毒。Microsoft 使用已張貼檔案的日期中的 [可用的最新病毒偵測軟體。檔案儲存在安全性強化的伺服器上,以避免任何未經授權的更改至檔案。
摺疊此表格展開此表格
| 檔案名稱 | 大小 |
|---|
| ImportText.vbp | 1,464 |
| ImportText.vbw | 56 |
| Sample.out | 3,346 |
| Sample.txt | 3,346 |
| Sample_Header.txt | 3,708 |
| Schema.ini | 422 |
| Schema_Header.ini | 420 |
| TextImport.frm | 28,678 |
| TextImport.frx | 84 |
| TextImport.mdb | 108,544 |
所有檔案應都位於相同的資料夾。執行範例應用程式 ImportText.vbp 並檢查不同的匯入/匯出選項。範例 TextImport.mdb 用,並且應該位於應用程式路徑。預設樣本文字檔案是 Sample.txt。Sample_Header.txt 檔案是包含在內,且包含資料行標頭,對於文字檔案。替代結構描述檔案,Schema_Header.ini,可能會使用在示範如何使用 [ColNameHeader = True Sample_Header.txt 檔案的對應結構描述檔中的選項。
在資料之間匯入所示範的選項,DAO 是可能最有效率 (最低層次) 或最小記憶體耗用量 ; 特別是如果匯入到 Access 資料庫。
請參閱下列的清單,如載入每個資料存取方法的程式庫的概觀。
- FileSys 物件範例: 指令碼執行階段 + DAO 程式庫 + Jet 的程式庫
- RDO 範例: RDO 程式庫 + ODBC 程式庫 + ODBC Jet 庫 + Jet 的程式庫 + 文字 ISAM 驅動程式
- ADO (預設值的範例): ADO 程式庫 (OLEDB + MSDASQL) + ODBC 程式庫 + ODBC Jet 庫 + Jet 的程式庫 + 文字 ISAM 驅動程式
- 自動化範例: MSOffice 執行階段程式庫。DAO 範例: DAO 程式庫 + Jet 的程式庫 + 文字 ISAM 驅動程式
下列函式是 DAO 物件範例 TextImport.vbp 應用程式中。這個程式碼時使用應用程式中匯入之前按一下 [DAO] 選項按鈕。您可以加入資料錄集和資料操作按照 FileSys 物件範例只是一個迴圈,來修改 DAO 範例。
Sub DAOOpenTextFileImport()
On Error GoTo ErrHandler
lblAction.Caption = "DAO Import..."
Dim daoDB As DAO.Database
Dim strSQL As String
If chkCreateTbl.Value = 1 Then
DBEngine.IniPath = App.Path & "\Schema_Header.ini"
Else
DBEngine.IniPath = App.Path & "\Schema.ini"
End If
Set daoDB = OpenDatabase(App.Path, False, False, _
"Text;Database=" & App.Path & ";table=" & txtFile.Text)
If chkCreateTbl.Value = 1 Then
'Use this if you do not already have a table created in Access.
'Creates and appends the data in one step.
strSQL = "SELECT * INTO [" & txtTable.Text & "] IN '" & _
App.Path & "\" & txtDatabase.Text & " '"
strSQL = strSQL & "FROM " & txtFile.Text
daoDB.Execute strSQL
Else
'Delete data before importing - use if necessary.
strSQL = "DELETE FROM [" & txtTable.Text & "] IN '" & _
App.Path & "\" & txtDatabase.Text & "'"
daoDB.Execute strSQL
'Append data to Access table.
strSQL = "INSERT INTO [" & txtTable.Text & "] IN '" & _
App.Path & "\" & txtDatabase.Text & "'"
strSQL = strSQL & "SELECT * FROM " & txtFile.Text
daoDB.Execute strSQL
End If
GoTo ExitSub
ErrHandler:
lblAction.Caption = "DAO Import - Error."
MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
ExitSub:
lblAction.Caption = "Complete..."
daoDB.Close
Set daoDB = Nothing
End Sub
下列函式是 FileSys 物件範例 TextImport.vbp 應用程式中的。應用程式中使用此程式碼,當您匯入之前選取 FileSys 選項按鈕。請注意範例程式碼中在依據 Schema_Header.ini] 檔案的 Access 中建立的表格版面配置有是標頭檔執行迴圈,並以手動方式建立資料表,如果您使用文字 ISAM 驅動程式不需要。雖然,如果您使用的文字 ISAM 驅動程式就會有不需要使用 FileSystemObject (和也就是將點的一部分) 除非您
必須 使用 [FileSystemObject 來匯入,然後再使用 DAO,現在就在一個 DAO 程式碼範例所示。因為您必須使用 DAO 還是 (若要建立資料錄集物件) 即使您在進行匯入的資料操作,再使用 DAO 整個處理序因為您已經有它載入到建立資料錄集的記憶體中。
Private Sub FileSysImport()
On Error GoTo ErrHandler
lblAction.Caption = "FileSys Import..."
Dim daoDB As DAO.Database
Dim daoRs As DAO.Recordset
Dim fs As FileSystemObject
Dim ts As TextStream
Dim inLine As Variant
Dim strSQL As String
Dim i As Integer
If chkCreateTbl.Value = 1 Then
'This is an eazy way to create the Table layout in Access based on the Schema_Header.ini file.
DBEngine.IniPath = App.Path & "\Schema_Header.ini"
Set daoDB = OpenDatabase(App.Path, False, False, "Text;Database=" & App.Path & ";table=" & txtFile.Text)
strSQL = "SELECT * INTO [" & txtTable.Text & "] IN '" & App.Path & "\" & txtDatabase.Text & " '"
strSQL = strSQL & "FROM " & txtFile.Text & " WHERE 1=0"
daoDB.Execute strSQL
Set daoDB = Nothing
Set daoDB = OpenDatabase(App.Path & "\" & txtDatabase.Text, False, False)
Else
DBEngine.IniPath = App.Path & "\Schema.ini"
Set daoDB = OpenDatabase(App.Path & "\" & txtDatabase.Text, False, False)
strSQL = "DELETE * FROM [" & txtTable.Text & "] IN '" & App.Path & "\" & txtDatabase.Text & "'"
daoDB.Execute strSQL, dbFailOnError
End If
strSQL = "SELECT * FROM [" & txtTable.Text & "] WHERE 1=0"
Set daoRs = daoDB.OpenRecordset(strSQL, dbOpenDynaset, dbAppendOnly)
Set fs = New FileSystemObject
Set ts = fs.OpenTextFile(App.Path & "\" & txtFile.Text, ForReading, False, TristateUseDefault)
'This skips the column header.
If chkColHeader.Value = 1 Then
inLine = Split(ts.ReadLine, ",")
End If
While Not ts.AtEndOfStream
inLine = Split(ts.ReadLine, ",")
daoRs.AddNew
For i = 0 To UBound(inLine) - 1
daoRs.Fields(i).Value = Left(inLine(i), daoRs.Fields(i).Size)
Next i
daoRs.Update
Wend
GoTo ExitSub
ErrHandler:
lblAction.Caption = "FileSys Import - Error."
MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
ExitSub:
lblAction.Caption = "Complete..."
If Not ts Is Nothing Then ts.Close
If Not daoRs Is Nothing Then daoRs.Close
daoDB.Close
Set daoRs = Nothing
Set daoDB = Nothing
Set ts = Nothing
Set fs = Nothing
End Sub
自動化範例就是最簡單的例子。用 TextImport.mdb 的範例和範例匯入/匯出規格已建立範例.mdb 檔案中: 範例和範例 w/資料行。您可以在
索引標籤 控制項的 [
屬性] 索引標籤上找到規格屬性設定值。匯入具有或沒有資料行第一列中的名稱建立另一個匯入/匯出規格,並在 [文字] 方塊 txtSpecName 的該規格名稱置於] 索引標籤控制項。範例規格包含在範例.mdb 檔案中: 範例 w/資料行。匯入文字檔案,與 Access 自動化,您可以只需執行 Access 物件 DoCmd.TransferText 的方法。
Private Sub AccessAutomateImport()
'Assumes table already exists.
On Error GoTo ErrHandler
lblAction.Caption = "Access Automation..."
Dim AccessApp As access.Application
Dim strDB As String
strDB = App.Path & "\" & txtDatabase.Text
Set AccessApp = New access.Application
AccessApp.OpenCurrentDatabase strDB
'To Import with/without Column names in first row create another Import/Export Specification
'and put the name of that specification in the Text box 'txtSpecName' on the Tab Control.
'An example Specification is included in the sample MDB - 'Sample w/columns'.
AccessApp.DoCmd.TransferText acImportDelim, txtSpecName.Text, txtTable.Text, App.Path & "\" & txtFile.Text
AccessApp.CloseCurrentDatabase
GoTo ExitSub
ErrHandler:
lblAction.Caption = "Access Automation - Error."
MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
ExitSub:
lblAction.Caption = "Complete..."
appAccess.Quit
Set appAccess = Nothing
End Sub
其他詳細資料和程式碼請參閱範例應用程式 TextImport.exe。
如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
149090?
(http://support.microsoft.com/kb/149090/EN-US/
)
ACC: 如何使用 Schema.ini 來進行存取文字資料
155512?
(http://support.microsoft.com/kb/155512/EN-US/
)
ACC: 如何以程式設計方式建立 Schema.ini 檔案
205439?
(http://support.microsoft.com/kb/205439/EN-US/
)
PRB: 使用非標準的文字分隔符號的文字檔進行不剖析正確與 Microsoft 文字驅動程式