我毕业设计的题目是通用人事管理,想请教一下怎样实现通用性,即变化的数据结构,用人单位可根据自己的需要添加,删改字段?谢谢指教!

解决方案 »

  1.   

    转莫依代码:
    '===================================================================================
    '**准备工作:1 引用Microsoft DAO 3.6 Object Library 及以上版本
    '===================================================================================
    '**控件名称:DAO
    '**模 块 名:DaoConnAccess
    '**描    述:操作数据库的系列方法,公用的模块
    '*************************************************************************
    Private DefDAOBase As DAO.Database  '本模块内的数据库对象
    Private DefDAOTable As DAO.TableDef '本模块内的表对象
    Private DefDAOField As DAO.Field    '本模块内的字段对象'*************************************************************************
    '**过 程 名:bCreatBase
    '**返 回 值:布尔值。创建成功返回True;失败返回False
    '**参    数:(数据库的路径+文件名,数据库的密码(可选,默认空))
    '==================================================
    '**功    能:新建一个数据库
    '*************************************************************************
    Public Function bCreatBase(ByVal BaseFile As String, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set DefDAOBase = CreateDatabase(BaseFile, dbLangGeneral, dbEncrypt)
        DefDAOBase.NewPassword "", Password
        Set DefDAOBase = Nothing
        bCreatBase = (Err.Number = 0)
    End Function'*************************************************************************
    '**过 程 名:bCreatTable
    '**返 回 值:布尔值。创建成功返回True;失败返回False
    '**参    数:(数据库的路径,新建的表名,第一个字段名,字段的类型,字段的大小,此数据库的密码(可选,默认空))
    '==================================================
    '**功    能:新建一个表,必须有一个字段
    '*************************************************************************
    Public Function bCreatTable(ByVal MdbFile As String, ByVal TableName As String, ByVal DefFieldName As String, ByVal FieldType As DAO.DataTypeEnum, ByVal FieldSize As Long, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set DefDAOBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        Set DefDAOTable = DefDAOBase.CreateTableDef(TableName)
        Set DefDAOField = DefDAOTable.CreateField(DefFieldName, FieldType, FieldSize)
        DefDAOTable.Fields.Append DefDAOField
        DefDAOBase.TableDefs.Append DefDAOTable
        Set DefDAOField = Nothing
        Set DefDAOTable = Nothing
        Set DefDAOBase = Nothing
        bCreatTable = (Err.Number = 0)
    End Function'*************************************************************************
    '**过 程 名:bReTableName
    '**返 回 值:布尔值。命名成功返回True;失败返回False
    '**参    数:(数据库的路径,旧的表名,新的表名,此数据库的密码(可选,默认空))
    '==================================================
    '**功    能:重命名一个表
    '*************************************************************************
    Public Function bReTableName(ByVal MdbFile As String, ByVal OldTable As String, ByVal NewTable As String, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set DefDAOBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        Dim i As Long
        For i = 0 To DefDAOBase.TableDefs.Count - 1
            Set DefDAOTable = DefDAOBase(i)
            If DefDAOTable.Name = OldTable Then Exit For
            Set DefDAOTable = Nothing
        Next
        DefDAOTable.Name = NewTable
        bReTableName = (Err.Number = 0)
    End Function'*************************************************************************
    '**过 程 名:bAddNewField
    '**返 回 值:布尔值。创建成功返回True;失败返回False
    '**参    数:(数据库的路径,表名,字段名,字段的类型,字段的大小,此数据库的密码(可选,默认空))
    '==================================================
    '**功    能:新建一个字段
    '*************************************************************************
    Public Function bAddNewField(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 DefDAOBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        Dim i As Long
        For i = 0 To DefDAOBase.TableDefs.Count - 1
            Set DefDAOTable = DefDAOBase(i)
            If DefDAOTable.Name = TableName Then Exit For
            Set DefDAOTable = Nothing
        Next
        Set DefDAOField = DefDAOTable.CreateField(FieldName, FieldType, FieldSize)
        DefDAOTable.Fields.Append DefDAOField
        Set DefDAOField = Nothing
        Set DefDAOTable = Nothing
        Set DefDAOBase = Nothing
        bAddNewField = (Err.Number = 0)
    End Function'*************************************************************************
    '**过 程 名:bDelTable
    '**返 回 值:布尔值。删除成功返回True;失败返回False
    '**参    数:(数据库的路径,删除的表名,此数据库的密码(可选,默认空))
    '==================================================
    '**功    能:删除一个表
    '*************************************************************************
    Public Function bDelTable(ByVal MdbFile As String, ByVal TableName As String, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set DefDAOBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        DefDAOBase.TableDefs.Delete (TableName)
        Set DefDAOBase = Nothing
        bDelTable = (Err.Number = 0)
    End Function'*************************************************************************
    '**过 程 名:bDelField
    '**返 回 值:布尔值。删除成功返回True;失败返回False
    '**参    数:(数据库的路径,表名,字段名,这个数据库的密码(可选,默认空))
    '==================================================
    '**功    能:删除一个字段
    '*************************************************************************
    Public Function bDelField(ByVal MdbFile As String, ByVal TableName As String, ByVal FieldName As String, Optional ByVal Password As String = "") As Boolean
        On Error Resume Next
        Set DefDAOBase = DAO.OpenDatabase(MdbFile, True, False, ";pwd=" & Password & ";")
        Dim i As Long
        For i = 0 To DefDAOBase.TableDefs.Count - 1
            Set DefDAOTable = DefDAOBase(i)
            If DefDAOTable.Name = TableName Then Exit For
            Set DefDAOTable = Nothing
        Next
        DefDAOTable.Fields.Delete (FieldName)
        Set DefDAOTable = Nothing
        Set DefDAOBase = Nothing
        bDelField = (Err.Number = 0)
    End Function