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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

問題:

我有一個(gè)文本文件需要導(dǎo)入 Access ,但是文本文件中有一列數(shù)據(jù)原本是文本,但是導(dǎo)入數(shù)據(jù)庫后自動(dòng)變成了“雙精度”類型,我該如何讓各個(gè)字段按我需要的數(shù)據(jù)類型生成哪?
如何讓 ACCESS 按照我規(guī)定的構(gòu)架、規(guī)格從文本文件、XLS文檔中導(dǎo)入數(shù)據(jù)?

?

?

?

方法一:

Access 本身就有導(dǎo)入導(dǎo)出向?qū)?#xff0c;里面得高級(jí)選項(xiàng)中就可以自定義需要導(dǎo)入數(shù)據(jù)得詳細(xì)規(guī)格。

?

操作步驟如下:

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

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

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

點(diǎn)擊“高級(jí)”按鈕
圖片如下:

在“導(dǎo)入規(guī)格”中定義字段規(guī)格,定義完成后按“保存”按鈕
圖片如下:

選擇合適得規(guī)格名
圖片如下:

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

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

DoCmd.TransferText acLinkDelim, "list1 導(dǎo)入規(guī)格", "list1", "C:\list1.txt"
DoCmd.TransferText acImportDelim, "list1 導(dǎo)入規(guī)格", "list1", "C:\list1.txt"

關(guān)于 TransferText 方法請(qǐng)參考以下資料(摘自 Access XP 幫助)

?

TransferText 方法

在 Visual Basic 中,TransferText 方法執(zhí)行 TransferText 操作。

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

TransferType?? 可選 AcTextTransferType。

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

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

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

SpecificationName?? 可選 Variant 型。字符串表達(dá)式(字符串表達(dá)式:任一求值為一列連續(xù)字符的表達(dá)式。表達(dá)式的元素可以包括:返回字符串或字符串 Variant (VarType 8) 的函數(shù);字符串字面值、常量、變量或 Variant。),表示在當(dāng)前數(shù)據(jù)庫中創(chuàng)建并保存的導(dǎo)入或?qū)С鲆?guī)格的名稱。對(duì)于固定長度的文本文件, 必須指定參數(shù)或使用 schema.ini 文件,該文件還必須保存在導(dǎo)入、鏈接或?qū)С龅奈谋疚募耐粋€(gè)文件夾中。若要?jiǎng)?chuàng)建一個(gè)方案文件, 可使用文本導(dǎo)入/導(dǎo)出向?qū)?chuàng)建此文件。對(duì)于分隔的文本文件和 Microsoft Word 郵件合并數(shù)據(jù)文件,可以將該參數(shù)留空,以便選擇默認(rèn)的導(dǎo)入/導(dǎo)出規(guī)格。

TableName?? 可選 Variant 型。字符串表達(dá)式,表示要向其導(dǎo)入文本數(shù)據(jù)、從中導(dǎo)出文本數(shù)據(jù)或鏈接文本數(shù)據(jù)的 Microsoft Access 表的名稱,或者要將其結(jié)果導(dǎo)出到文本文件的 Microsoft Access 查詢(查詢:有關(guān)表中所存數(shù)據(jù)的問題,或要對(duì)數(shù)據(jù)執(zhí)行操作的請(qǐng)求。查詢可以將多個(gè)表中的數(shù)據(jù)放在一起,以作為窗體、報(bào)表或數(shù)據(jù)訪問頁的數(shù)據(jù)源。)的名稱。

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

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

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

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

說明
有關(guān)該操作及其參數(shù)如何使用的詳細(xì)信息,請(qǐng)參閱該操作的主題。

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

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

示例
下面的示例使用規(guī)范“標(biāo)準(zhǔn)輸出”,從 Microsoft Access 表“外部報(bào)表” 將數(shù)據(jù)導(dǎo)出到帶有分隔符的文本文件 April.doc 中:

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

?

?

?

方法二:

用 Schema.ini 文件也可以達(dá)到要求。

?

作用:Schema.ini用于提供文本文件中記錄的構(gòu)架信息。每個(gè) Schema.ini 項(xiàng)都用于指定表的五個(gè)特征之一:
1、文本文件名
2、文件格式
3、字段名、字段長度、字段類型
4、字符集
5、特別數(shù)據(jù)類型轉(zhuǎn)換

?

指定文件名
文件名要用方括號(hào)括起來,例如如果要對(duì) Sample.txt 使用數(shù)據(jù)構(gòu)架信息文件,那么它的對(duì)應(yīng)的項(xiàng)應(yīng)該是

[Sample.txt]


指定文件格式

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

Format=Delimited(自定義分隔符)

- 或者沒有分隔符 -

Format=Delimited( )

固定寬度文件中的字段為固定長度cg1留言,經(jīng)測試,參數(shù)為:Format=FixedLength


指定字段

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

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

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

注意,設(shè)定了 ColNameHeader 選項(xiàng),在 Schema.ini 中 Windows 注冊時(shí)會(huì)忽略 FirstRowHasNames 選項(xiàng)。

你也可以指定字段的數(shù)據(jù)類型,使用 MaxScanRows 選項(xiàng)用來指定在確定列的數(shù)據(jù)類型時(shí)要掃描多少行數(shù)據(jù)。設(shè)置 MaxScanRows 為 0 將掃描整個(gè)文件。

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

ColNameHeader=True
MaxScanRows=0

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

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

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

參數(shù)解釋如下:

參數(shù)說明
ColumnName文本,標(biāo)識(shí)字段名,如果包含空格要用雙引號(hào)括起來
type

數(shù)據(jù)類型包括:

Microsoft Jet 數(shù)據(jù)類型:Bit Byte Short Long Currency Single Double DateTime Text Memo

ODBC 數(shù)據(jù)類型: 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字符串的長度,后面的數(shù)字用來指定字段的長度(“固定分隔文本文件”為必填,“文字分隔文本文件”為可選)
#整形數(shù)字,標(biāo)識(shí)字段長度

指定字符集
CharacterSet 項(xiàng)有兩個(gè)選擇:ANSI | OEM
選擇 ANSI 字符集用如下方法:

CharacterSet=ANSI


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

選項(xiàng)說明
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.

 


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

姓名 單位 聯(lián)系日期
王海 上海有機(jī)化學(xué)研究所 2002-1-1
羅炙 數(shù)字化機(jī)床研究院 2004-1-1

導(dǎo)入 Access 應(yīng)該類似下面表格:

姓名單位聯(lián)系日期
王海上海有機(jī)化學(xué)研究所2002-1-1
羅炙數(shù)字化機(jī)床研究院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="聯(lián)系日期" Date Width 8

注釋如下:

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

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

此后,我們就可以利用下面的語句來導(dǎo)入數(shù)據(jù)了:

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

注意,到 2000 格式的 MDB 為止,以下語句都會(huì)導(dǎo)致導(dǎo)入失敗,應(yīng)該是 Access 本身的問題:
到 Access XP / access 2003 出現(xiàn)不知道是否已經(jīng)解決該問題,大家可以在“評(píng)論”中告訴我測試結(jié)果。

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

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

轉(zhuǎn)載于:https://www.cnblogs.com/nieyj/archive/2009/08/03/1537632.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。