软件注册站
热情软件屋

 
在VB中如何实现把当前库或表转换为另外一种数据库文件
编号: QA000115    
建立日期: 1998年11月20日 最后修改日期: 2003年12月20日
所属类别: Visual Basic - 数据库
Visual Basic - SQL查询
Visual Basic - Office开发
   
    在VB中如何实现把当前库或表转换为另外一种数据库文件。例如把MY.MDB中的表MYTABLE1转换为EXCEL中的表或DBF文件。
    (戴华)
   
    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

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio