日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ACCESS 文本文件导入和导出指定字段类型的方法

發布時間:2023/12/19 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ACCESS 文本文件导入和导出指定字段类型的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
導入文本文件時如何指定字段類型? 2008-01-05 00:34

問題:

我有一個文本文件需要導入 Access ,但是文本文件中有一列數據原本是文本,但是導入數據庫后自動變成了“雙精度”類型,我該如何讓各個字段按我需要的數據類型生成哪?
如何讓 ACCESS 按照我規定的構架、規格從文本文件、XLS文檔中導入數據?

?

?

?

方法一:

Access 本身就有導入導出向導,里面得高級選項中就可以自定義需要導入數據得詳細規格。

?

操作步驟如下:

菜單 -> 文件 -> 獲取外部數據 -> 導入(或者是“鏈接表”) -> 選擇你需要得格式得文件 -> 高級

菜單 -> 文件 -> 獲取外部數據 -> 導入(或者是“鏈接表”)
圖片如下:

選擇你需要得格式得文件
圖片如下:

點擊“高級”按鈕
圖片如下:

在“導入規格”中定義字段規格,定義完成后按“保存”按鈕
圖片如下:

選擇合適得規格名
圖片如下:

定義完成后得字段規格存儲在 MSysIMEXColumns 以及 MSysIMEXSpecs 表中
圖片如下:

完成上述操作后,以后就不用再重新定義了,可以使用以下語句鏈接或者導入文本文件

DoCmd.TransferText acLinkDelim, "list1 導入規格", "list1", "C:\list1.txt"
DoCmd.TransferText acImportDelim, "list1 導入規格", "list1", "C:\list1.txt"

關于 TransferText 方法請參考以下資料(摘自 Access XP 幫助)

?

TransferText 方法

在 Visual Basic 中,TransferText 方法執行 TransferText 操作。

expression.TransferText(TransferType, SpecificationName, TableName, FileName, HasFieldNames, HTMLTableName, CodePage)
expression??? 必需。返回“Applies To”列表中的一個對象的表達式。

TransferType?? 可選 AcTextTransferType。

AcTextTransferType 可以是下列 AcTextTransferType 常量之一:
acExportDelim
acExportFixed
acExportHTML
acExportMerge
acImportDelim 默認
acImportFixed
acImportHTML
acLinkDelim
acLinkFixed
acLinkHTML
如果將該參數留空,則采用默認常量 (acImportDelim)。

注意??? 可以鏈接到文本文件或 HTML 文件中的數據上,但數據在 Microsoft Access 中是只讀的。

在 Microsoft Access 項目(Microsoft Access 項目:與 Microsoft SQL Server 數據庫連接且用于創建客戶/服務器應用程序的 Access 文件。項目文件中不包含任何數據或基于數據定義的對象(如表或視圖)。) (.adp) 中僅支持 acImportDelim、acImportFixed、acExportDelim、acExportFixed 或 acExportMerge 轉換類型。

SpecificationName?? 可選 Variant 型。字符串表達式(字符串表達式:任一求值為一列連續字符的表達式。表達式的元素可以包括:返回字符串或字符串 Variant (VarType 8) 的函數;字符串字面值、常量、變量或 Variant。),表示在當前數據庫中創建并保存的導入或導出規格的名稱。對于固定長度的文本文件, 必須指定參數或使用 schema.ini 文件,該文件還必須保存在導入、鏈接或導出的文本文件的同一個文件夾中。若要創建一個方案文件, 可使用文本導入/導出向導創建此文件。對于分隔的文本文件和 Microsoft Word 郵件合并數據文件,可以將該參數留空,以便選擇默認的導入/導出規格。

TableName?? 可選 Variant 型。字符串表達式,表示要向其導入文本數據、從中導出文本數據或鏈接文本數據的 Microsoft Access 表的名稱,或者要將其結果導出到文本文件的 Microsoft Access 查詢(查詢:有關表中所存數據的問題,或要對數據執行操作的請求。查詢可以將多個表中的數據放在一起,以作為窗體、報表或數據訪問頁的數據源。)的名稱。

FileName?? 可選 Variant 型。字符串表達式,表示要從中導入、導出到或鏈接到的文本文件的完整名稱(包括路徑)。

HasFieldNames?? 可選 Variant 型。使用 True (-1) 可以在導入、導出或鏈接時,使用文本文件中的第一行作為字段名。使用 False (0) 可以將文本文件中的第一行看成普通數據。如果將該參數留空,則采用默認值 (False)。該參數將被 Microsoft Word 郵件合并數據文件忽略,這些文件的第一行中必須包含字段名。

HTMLTableNam?? 可選 Variant 型。字符串表達式,表示要導入或鏈接的 HTML 文件中的表或列表的名稱。除非 transfertype 參數設為 acImportHTML 或 acLinkHTML,否則該參數將被忽略。如果將該參數留空,則導入或鏈接 HTML 文件中的第一個表或列表。如果 HTML 文件中存在 <CAPTION> 標記,則 HTML 文件的表或列表名稱取決于該標記指定的文本。如果沒有 <CAPTION> 標記,則名稱由 <TITLE> 標記指定的文本決定。如果有多個表或列表具有相同的名稱,則 Microsoft Access 將通過給每個表或列表名稱結尾添加一個數字,如“雇員1”和“雇員2”來區分它們。

CodePage?? 可選 Variant 型。Long(Long 數據類型:存儲大型整數的基礎數據類型。Long 變量存儲為 32 位數的值,范圍介于 2,147,483,648 到 2,147,483,647 之間。) 型值,用于標識代碼頁的字符集。

說明
有關該操作及其參數如何使用的詳細信息,請參閱該操作的主題。

語法中的可選參數允許留空,但是必須包含參數的逗號。如果將位于末端的參數留空,則在指定的最后一個參數后面不需使用逗號。

注意??? 通過設置 Recordset 對象的 ActiveConnection 屬性,也可使用 ActiveX 數據對象 (ADO)(數據訪問對象 (DAO):一種數據訪問接口,與 Microsoft Jet 和符合 ODBC 的數據源通訊,以連接到、檢索、操作和更新數據和數據庫結構。) 來創建鏈接。

示例
下面的示例使用規范“標準輸出”,從 Microsoft Access 表“外部報表” 將數據導出到帶有分隔符的文本文件 April.doc 中:

DoCmd.TransferText acExportDelim, "Standard Output", _
???? "External Report", "C:\Txtfiles\April.doc"

?

?

?

方法二:

用 Schema.ini 文件也可以達到要求。

?

作用:Schema.ini用于提供文本文件中記錄的構架信息。每個 Schema.ini 項都用于指定表的五個特征之一:
1、文本文件名
2、文件格式
3、字段名、字段長度、字段類型
4、字符集
5、特別數據類型轉換

?

指定文件名
文件名要用方括號括起來,例如如果要對 Sample.txt 使用數據構架信息文件,那么它的對應的項應該是

[Sample.txt]


指定文件格式

格式說明表格式Schema.ini 格式描述
Tab 制表符分隔文件中的字段用制表符分隔Format=TabDelimited
CSV 分隔文件中的字段用逗號來分隔Format=CSVDelimited
自定義分隔文件中的字段可以用任何字符來分隔,所有的字符都可以用來分隔,包括空格,但是雙引號 ( " ) 除外

Format=Delimited(自定義分隔符)

- 或者沒有分隔符 -

Format=Delimited( )

固定寬度文件中的字段為固定長度cg1留言,經測試,參數為:Format=FixedLength


指定字段

你可以有兩種方法在一個字符分隔的文本文件中指定字段名

1、在文本文件中的第一行包含字段名,并且設置 ColNameHeader 為 True 。
2、用數字編號指定每一列并且指定每一列的名字以及數據類型

你必須用數字編號指定每一列并且指定每一列的名字、數據類型以及長度(在固定長度分隔的文本文件中需要指定長度)

注意,設定了 ColNameHeader 選項,在 Schema.ini 中 Windows 注冊時會忽略 FirstRowHasNames 選項。

你也可以指定字段的數據類型,使用 MaxScanRows 選項用來指定在確定列的數據類型時要掃描多少行數據。設置 MaxScanRows 為 0 將掃描整個文件。

如果文本文件第一行包含字段名,并且要掃描整個文件,改項目就要定義如下:

ColNameHeader=True
MaxScanRows=0

接下來的項目用來指定表中的字段,使用列編號(Coln)選項來指定列。字段長度在“固定分隔文本文件中”是必填項目,在“字符分隔文本文件”中是可選項目。
示例:定義 2 個字段,CustomerNumber 是長度為 10 的文本字段、CustomerName 是長度為 30 的文本字段。

Col1=CustomerNumber Text Width 10
Col2=CustomerName Text Width 30

語法如下:
Coln=ColumnName type [Width #]

參數解釋如下:

參數說明
ColumnName文本,標識字段名,如果包含空格要用雙引號括起來
type

數據類型包括:

Microsoft Jet 數據類型:Bit Byte Short Long Currency Single Double DateTime Text Memo

ODBC 數據類型: Char (same as Text) Float (same as Double) Integer (same as Short) LongChar (same as Memo) Date date format

其中date format 是日期的格式字符串例如:Date YYYY-MM-DD

Width字符串的長度,后面的數字用來指定字段的長度(“固定分隔文本文件”為必填,“文字分隔文本文件”為可選)
#整形數字,標識字段長度

指定字符集
CharacterSet 項有兩個選擇:ANSI | OEM
選擇 ANSI 字符集用如下方法:

CharacterSet=ANSI


特別數據類型轉換
特別數據類型轉換主要是定義比如日期、貨幣型數據如何轉換或者如何顯示的,你可以參考下面這張表:

選項說明
DateTimeFormatCan be set to a format string indicating dates and times. You should specify this entry if all date/time fields in the import/export are handled with the same format. All Microsoft Jet formats except A.M. and P.M. are supported. In the absence of a format string, the Windows Control Panel short date picture and time options are used.
DecimalSymbolCan be set to any single character that is used to separate the integer from the fractional part of a number.
NumberDigitsIndicates the number of decimal digits in the fractional portion of a number.
NumberLeadingZerosSpecifies whether a decimal value less than 1 and greater than –1 should contain leading zeros; this value can either be False (no leading zeros) or True.
CurrencySymbolIndicates the currency symbol to be used for currency values in the text file. Examples include the dollar sign ($) and Dm.
CurrencyPosFormatCan be set to any of the following values:

· Currency symbol prefix with no separation ($1)

· Currency symbol suffix with no separation (1$)

· Currency symbol prefix with one character separation ($ 1)

· Currency symbol suffix with one character separation (1 $)

CurrencyDigitsSpecifies the number of digits used for the fractional part of a currency amount.
CurrencyNegFormatCan be one of the following values:

· ($1)

· –$1

· $–1

· $1–

· (1$)

· –1$

· 1–$

· 1$–

· –1 $

· –$ 1

· 1 $–

· $ 1–

· $ –1

· 1– $

· ($ 1)

· (1 $)

This example shows the dollar sign, but you should replace it with the appropriate CurrencySymbol value in the actual program.

CurrencyThousandSymbolIndicates the single-character symbol to be used for separating currency values in the text file by thousands.
CurrencyDecimalSymbolCan be set to any single character that is used to separate the whole from the fractional part of a currency amount.

 


下面給出一個簡單的例子,假設有一個表Contacts.txt類似下面:

姓名 單位 聯系日期
王海 上海有機化學研究所 2002-1-1
羅炙 數字化機床研究院 2004-1-1

導入 Access 應該類似下面表格:

姓名單位聯系日期
王海上海有機化學研究所2002-1-1
羅炙數字化機床研究院2004-1-1


那么 Schema.ini 則是類似下面的INI文件:

[Contacts.txt]
ColNameHeader=True
format=Delimited(" ")
MaxScanRows=0
CharacterSet=ANSI
Col1="姓名" Char Width 10
Col2="單位" Char Width 9
Col3="聯系日期" Date Width 8

注釋如下:

[Contacts.txt] ///文本文件名
ColNameHeader=True ///帶有表頭
format=Delimited( ) ///空格作為分隔符,如果是分號,請用format=Delimited(;) 來解決
MaxScanRows=0 ///掃描整個文件
CharacterSet=ANSI ///ANSI 字符集
Col1="姓名" Char Width 10 ///字段1
Col2="單位" Char Width 9 ///字段2
Col3="聯系日期" Date Width 8 ///字段3
///如果有更多字段可 Col4 .... ColN

注意,Schema.ini 必須和需要導入的文本文件在同一目錄。

此后,我們就可以利用下面的語句來導入數據了:

CurrentProject.Connection.Execute "SELECT * INTO NewContact FROM [Text;FMT=Delimited;HDR=Yes;DATABASE=C:\;].[Contacts#txt];"

注意,到 2000 格式的 MDB 為止,以下語句都會導致導入失敗,應該是 Access 本身的問題:
到 Access XP / access 2003 出現不知道是否已經解決該問題,大家可以在“評論”中告訴我測試結果。

DoCmd.TransferText acImportFixed, , "Contacts", "C:\contacts.txt"

或者
DoCmd.TransferText acImportFixed, "C:\.ini", "Contacts", "C:\Documents.txt"

轉載于:https://www.cnblogs.com/nieyj/archive/2009/08/03/1537632.html

總結

以上是生活随笔為你收集整理的ACCESS 文本文件导入和导出指定字段类型的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。