 |
VB支持SQL语言的SELECT ... INTO语句,这使得你可以将一种数据库轻松地转换为另一种格式,也可以在同一种格式的数据库中进行转换。下面我们以将.MDB格式转换为Excel形式为例。
首先,打开.MDB文件。如
Dim dbSource As Database
Set dbSource = OpenDatabase("MY.MDB")
然后使用SELECT ... INTO语句转换文件。
dbSource.Execute("SELECT * INTO my IN 'c:\documents\xldata.xls' 'EXCEL 5.0;' FROM table1")
这里,IN子句后面是转换后的数据库文件名,'EXCEL 5.0;'表示Excel 5.0/95格式,也可以是其他VB支持的格式。
SELECT ... INTO建立新的表或数据库,而如果要将数据追加到已经存在的数据库中,可以使用INSERT ... INTO语句。
毛敏峰问:
编程工具: VB6.0
操作系统: PWIN98
在VB的例程中有VisData 使用了 ( Export 表名,数据库名 ) 实现表导出到另一数据库中。但我在编程使用Export 时,却报函数名未找到,为何?
回答:没有Export函数,实际上VisData就是利用上面的SELECT ... INTO语句实现的表导出。你可以参考VisData例子的VisData.bas的Export过程。
cobe问:
如果我改为dbSource.Execute("SELECT * INTO my IN 'c:\xldata.txt' 'Text;' FROM table1") 就会出现“不是合法的路径错误”,是否不支持导入为文本文件?
回答:是你的语法不正确,应该改为
dbSource.Execute("SELECT * INTO [xldata.txt] IN 'c:\' 'Text;' FROM table1")
IN后面是路径,而表名就是输出后的文件名。这样将在c:\目录下出现xldata.txt,其内容就是表的内容。
赵勤敏问:
我只找到Visdata.exe,没有找到Visdata.bas,是否有地方可以下载?
答:对于VB 5,VisData的源程序在Samples目录下。而对于VB 6,所有例子都在MSDN Library光盘上。
wyoo的意见:
在VB中用ACCESS转成EXCEL的好方法
Private Sub Command1_Click()
Dim acApp As Access.Application
Dim strReportName As String
Dim strReportPath As String
Const SAMPLE_DB_PATH As String = "c:\EastRiver.mdb"
strReportName = "akaoqin "
strReportPath = "c:\"
' Start Access and open Northwind Traders database.
Set acApp = GetObject(SAMPLE_DB_PATH, "Access.Application")
acApp.DoCmd.OutputTo acOutputQuery, strReportName, _
acFormatXLS, strReportPath & "autoxls.xls", True
End Sub
应该是效率最高的。TransferDatabase这条命令也能完成这个功能,用法一样,大家可以试试。
fly: 请问其中的路径'c:\documents\xldata.xls',为什么换成了string类型的变量就不达到预期的效果。比如
dim temp as string
temp = "c:\asjkd\sa.xls"
dbSource.Execute("SELECT * INTO my IN 'temp' 'EXCEL 5.0;' FROM table1")
得到的是temp.xls而不是as.xls.为什么啊,怎么改?
答:这样写:dbSource.Execute("SELECT * INTO my IN '" + temp +"' 'EXCEL 5.0;' FROM table1")
lzy问:何提示
Dim acApp As Access.Application
错误?
答:要使用这个例子,必须在工程中加入Access引用库。加入的方法为,在VB中选择菜单“工程|引用”,在对话框中选择“Microsoft Access 8.0 Object Library”。
sbwgi的意见:
一个将Access数据库转换为Excel的例子:
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim oldPointer As Integer 'used to save the current
Dim rPointer As Integer 'current saving record
Dim xlsPointer As Integer 'used to point out the position the current record saving
oldPointer = rs_com.Bookmark 'save current pointer of rs_com
xlsPointer = 2 'the first line of Excel sheet
Set xlApp = CreateObject("Excel.Application") 'create Excel application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
Hide
frmSaveProgress.Show 'show the progress status
rs_com.MoveFirst 'rs_com is a table of your database
Dim i As Integer
While Not rs_com.EOF 'save ecah record to Excel file
For i = 0 To x 'x =记录数
xlSheet.Cells(xlsPointer, i + 1) = rs_com.Fields(i)
Next
frmSaveProgress.nextStep (rs_com.Bookmark / rs_com.RecordCount)
rs_com.MoveNext
xlsPointer = xlsPointer + 1
Wend
Unload frmSaveProgress 'end save to Excel file
frmDataOper.Show
xlBook.SaveAs (xlsFileName)
xlBook.Close
xlApp.Quit
相关问题:
QA002093 "如何将数据库中的内容按一定格式存到文本文件中"
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 数据库, database, query, SQL查询, sql server, sql, query, select, Office开发, office, ms office, office xp, office 97。
|