在很多VB的MDB文件书籍中,都会很完整的提到:如何由其他种类的文件中將资料导入MDB文件,但是却很少有书提到:如何將MDB文件中的资料,导出到各种不同的文件类型的文件中,连VB的Help中也是这样!
或许是大家都认为MDB文件主题的重点是在MDB文件本身吧!
但是,在实际的MDB文件程式運用中,却常常需要將MDB文件导出到各种不同的文件类型的文件中,这些文件可能是DBase文件、文本文件(.Txt)、Excel文件、Html文件、Access文件或其他类型的MDB文件文件(ODBC)…等。
在本主题中,考虑到並不是每一个人都有Oracle或SQLServer的环境,为了让大家都能夠实行,我们將以AccessMDB文件来作练习,而练习的文件也使用VB本身提供的Biblio.mdb(位于各版本VB的目录下)。
预计要练习导出的文件类型有五种:DBase文件、文本文件(.Txt)、Html文件、Excel文件、Access文件。除了这五种之外,下面的命令可以將MDB文件导出到任一种VB支持的MDB文件或文件中。
在练习之前,要將导出文件的SQL命令先说明一下:
SELECTTable.FieldsINTO[dbmstype;DATABASE=path].[unqualifiedfilename]FROM[TableorTables]
SELECTTable.FieldsINTO[MDB文件种类;DATABASE=MDB文件路径].[MDB文件文件名称]FROM[TableorTables]
至于【MDB文件种类】及【MDB文件路径】,视MDB文件或文件类型之不同而异,详见【注一】。
如果上面说的都清楚了,那我们要开始这一个练习了!
在Form上放置一个CommandButton,加入MicrosoftDAO3.51ObjectLibrary,我们將使用Biblio.mdb的authorsTable,在Command1_Click中加入以下程序代码:
DimdbAsDatabase
Setdb=Workspaces(0).OpenDatabase(App.Path&”\biblio.mdb”)
db.execute”SELECTTable.FieldsINTO[dbmstype;DATABASE=path].[unqualifiedfilename]FROM[TableorTables]”
在以上程式中,db.execute指令行之指令依MDB文件或文件的种类说明如下:
一、DBase文件
SQL命令:SELECT*INTO[dBaseIII;DATABASE=MDB文件路径].[dbase文件名称]FROM[authors]
db.Execute”SELECT*INTO[dBaseIII;DATABASE=C:\test].[authors.DBF]FROM[authors]”
注意事項:
1、authors.DBF事先不可存在,否则会产生错误!
2、若您沒有Dbase,您可以使用Access来连結这个Table,以便观察結果!
二、文本文件(.Txt)
SQL命令:SELECT*INTO[Text;DATABASE=文本文件路径].[文本文件名称]FROM[authors]
db.Execute”SELECT*INTO[Text;DATABASE=C:\test].[authors.TXT]FROM[authors]”
注意事項:
1、authors.TXT事先不可存在,否则会产生错误!
2、此命令会产生的文件有二个,第一个就是文本文件authors.TXT,第二个是Schema.ini。
3、文本文件之格式为CSV之文件格式,以逗点分开,实际呈现方式如下:
”Au_ID”,”Author”,”YearBorn”
1,”Jacobs,Russell”,1950
2,”Metzger,PhilipW.”,1942
4、Schema.ini若事先不存在会新产生一个,若已存在,则会在原文件后面直接Append。
5、至于Schema.ini的內容为此次导出的相关资讯,格式同一般的Ini档,详細內容如下:
[authors.TXT]
ColNameHeader=True
CharacterSet=OEM
Format=CSVDelimited
Col1=Au_IDInteger
Col2=AuthorCharWidth50
Col3=”YearBorn”Short
三、Html文件
SQL命令:SELECT*INTO[Excel8.0;DATABASE=Html文件路径].[Html文件名称]FROM[authors]
db.Execute”SELECT*INTO[HTMLExport;DATABASE=C:\test].[authors.HTM]FROM[authors]”
注意事項:
1、authors.HTM事先不可存在,否则会产生错误!
2、此命令会产生的文件有二个,第一个就是文本文件authors.HTM,第二个是Schema.ini。
3、Schema.ini若事先不存在会新产生一个,若已存在,则会在原文件后面直接Append。
4、至于Schema.ini的內容为此次导出的相关资讯,格式同一般的Ini档,详細內容如下:
[authors.HTM]
ColNameHeader=True
CharacterSet=ANSI
Format=HTML
Col1=Au_IDInteger
Col2=AuthorCharWidth50
Col3=”YearBorn”Short
四、Excel文件
SQL命令:SELECT*INTO[Excel8.0;DATABASE=文件路径 档名].[工作表名称]FROM[authors]
db.Execute”SELECT*INTO[Excel8.0;DATABASE=C:\test\authors.XLS].[authors]FROM[authors]”
注意事項:
1、authors.XLS可事先存在,也可以不存在,会自动产生一个。
2、工作表authors事先不可存在,否则会产生错误!
五、Access文件
SQL命令:SELECT*INTO[新MDB文件路径 档名][新表名称]FROM[authors]
导出到同一MDB文件(新Table为authors1)
新Tableauthors1事先不可存在,否则会产生错误!
db.Execute”SELECT*INTO[authors1]FROM[authors]”
导出到不同的MDB文件(新MDB文件为db1,新Table为authors)
新MDB文件db1事先必須存在,否则会产生错误!
但是其中新Tableauthors事先不可存在,否则会产生错误!
db.Execute”SELECT*INTO[C:\test\db1.mdb].[authors]FROM[authors]”
注一:各种可能的MDB文件种类Connect属性設定方式:
MDB文件种类MDB文件宣告方式MDB文件路径(或加上档名)
MicrosoftJetDatabase[database];drive:\path\filename.mdb
dBASEIIIdBASEIII;drive:\path
dBASEIVdBASEIV;drive:\path
dBASE5dBASE5.0;drive:\path
Paradox3.xParadox3.x;drive:\path
Paradox4.xParadox4.x;drive:\path
Paradox5.xParadox5.x;drive:\path
MicrosoftFoxPro2.0FoxPro2.0;drive:\path
MicrosoftFoxPro2.5FoxPro2.5;drive:\path
MicrosoftFoxPro2.6->