如何在VB程序中实现新建一个新的access数据库文件,应该怎么做,谢谢大家了!

解决方案 »

  1.   

    我没有这样用过,楼主是不是要实现新建数据库的功能?
    我一直是这样做的,希望能给你一点帮助。
    在Access里面建立好空数据库,包括基本的表和查询,打包的时候一起打进去。用户需要新建数据库的时候,将建立好的空数据库复制到用户选择的路径就可以了。
      

  2.   

    我需要在程序中自动建立Access空数据库,文件名每次都是不一样的!
      

  3.   

    我需要导入、导出数据,所以每次都要一个新库。
    现在的解决办法是:
    在Access里面建立好空数据库,每次在程序中用filecopy复制一个文件,再用name重新命名。
      

  4.   

    Option Explicit
    '===================================================================================
    '引用:Microsoft DAO 3.51 Object Library
    '===================================================================================
    Private dbDataBase As DAO.Database '本模块内的数据库对象
    Private tdTable As DAO.TableDef '本模块内的表对象
    Private fldField As DAO.Field '本模块内的字段对象
    '新建一个数据库,cDataBase(数据库的路径,数据库的密码(可选,默认空))
    Public Function cDataBase(ByVal PathFile As String, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set dbDataBase = CreateDatabase(PathFile, dbLangGeneral, dbEncrypt)
        dbDataBase.NewPassword "", Password
        Set dbDataBase = Nothing
        cDataBase = (Err.Number = 0)
    End Function
    '新建一个表,必须有一个字段,cTable(数据库的路径,新建的表名,第一个字段名,字段的类型,字段的大小,这个数据库的密码(可选,默认空))
    Public Function cTable(ByVal MdbFile As String, ByVal TableName As String, ByVal DefaultFieldName As String, ByVal FieldType As DAO.DataTypeEnum, ByVal FieldSize As Long, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set dbDataBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        Set tdTable = dbDataBase.CreateTableDef(TableName)
        Set fldField = tdTable.CreateField(DefaultFieldName, FieldType, FieldSize)
        tdTable.Fields.Append fldField
        dbDataBase.TableDefs.Append tdTable
        Set fldField = Nothing
        Set tdTable = Nothing
        Set dbDataBase = Nothing
        cTable = (Err.Number = 0)
    End Function
    '重命名一个表,ReNameTable(数据库的路径,旧的表名,新的表名,这个数据库的密码(可选,默认空))
    Public Function ReNameTable(ByVal MdbFile As String, ByVal OldTable As String, ByVal NewTable As String, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set dbDataBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        Dim i As Long
        For i = 0 To dbDataBase.TableDefs.Count - 1
            Set tdTable = dbDataBase(i)
            If tdTable.Name = OldTable Then Exit For
            Set tdTable = Nothing
        Next
        tdTable.Name = NewTable
        ReNameTable = (Err.Number = 0)
    End Function
    '新建一个字段,cField(数据库的路径,表名,字段名,字段的类型,字段的大小,这个数据库的密码(可选,默认空))
    Public Function cField(ByVal MdbFile As String, ByVal TableName As String, ByVal FieldName As String, ByVal FieldType As DAO.DataTypeEnum, ByVal FieldSize As Long, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set dbDataBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        Dim i As Long
        For i = 0 To dbDataBase.TableDefs.Count - 1
            Set tdTable = dbDataBase(i)
            If tdTable.Name = TableName Then Exit For
            Set tdTable = Nothing
        Next
        Set fldField = tdTable.CreateField(FieldName, FieldType, FieldSize)
        tdTable.Fields.Append fldField
        Set fldField = Nothing
        Set tdTable = Nothing
        Set dbDataBase = Nothing
        cField = (Err.Number = 0)
    End Function'删除一个表,dTable(数据库的路径,删除的表名,这个数据库的密码(可选,默认空))
    Public Function dTable(ByVal MdbFile As String, ByVal TableName As String, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set dbDataBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        dbDataBase.TableDefs.Delete (TableName)
        Set dbDataBase = Nothing
        dTable = (Err.Number = 0)
    End Function
    '删除一个字段,dField(数据库的路径,表名,字段名,这个数据库的密码(可选,默认空))
    Public Function dField(ByVal MdbFile As String, ByVal TableName As String, ByVal FieldName As String, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set dbDataBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        Dim i As Long
        For i = 0 To dbDataBase.TableDefs.Count - 1
            Set tdTable = dbDataBase(i)
            If tdTable.Name = TableName Then Exit For
            Set tdTable = Nothing
        Next
        tdTable.Fields.Delete (FieldName)
        Set tdTable = Nothing
        Set dbDataBase = Nothing
        dField = (Err.Number = 0)
    End Function
      

  5.   

    [转]
    当你很好的理解了DAO后,对学习新的RDO和ADO也有很大的帮助。并且DAO和ADO可以同时使用,DAO的缺陷在于查找功能不强,没有ADO方便,但动态创建数据库却远超ADO,因此有时二者结合更强大。