Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • Access建表规范总结(..
  • 认识表
  • OrdinalPositi..
  • Word文本文件导入到Ac..
  • 如何设定表的某字段默认值?
  • 如何进行简单地筛选?

最新文章

  • Access用代码创建表
  • access表的设计技巧
  • access实现自动编号从..
  • Access2010出现“..
  • 使用输入掩码控制数据输入格..
  • 索引和主键的异同

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > 数据表 > 表设计
表设计

如何设置表的Caption和Description属性,即“标题”和“说明”属

问题:



  如何设置表的Caption和Description属性,即“标题”和“说明”属性

 


回答:

 
注意!无法通过 JET SQL 来设置或者修改上述属性,JET SQL 不支持此功能,你可以联系微软开发小组要他们在下一个版本中增加此功能。
Function AppendCaption()
    '引用DAO
    
    Dim Tbf As DAO.TableDef
    Dim fld As DAO.Field
    Dim p As DAO.Property
    Dim cp As DAO.Property
    On Error Resume Next
    Dim i As Integer
    
    Dim TableName As String
    Dim FieldName As String
    FieldName = "First_name"
    TableName = "test"
    
    For Each Tbf In CurrentDb.TableDefs
        'Debug.Print Tbf.Name
        For Each fld In Tbf.Fields
            'Debug.Print Fld.Name
            If fld.Name = FieldName And Tbf.Name = TableName Then
                Set cp = fld.CreateProperty("Caption", 12, "aa")
                fld.Properties.Append cp
                Set cp = fld.CreateProperty("Description", 10, "aa")
                fld.Properties.Append cp

 

            End If
            For Each p In fld.Properties
                If p.Name = "caption" Then
                    Debug.Print Tbf.Name & ":" & fld.Name & ":" & "pro:"; p.Name & "--" & p.Value
                    'Fld.Properties.Delete "Caption"        '删除属性
                End If
            Next
        Next
    Next
    
End Function


 


下面再给一段函数

 

Function GetFieldProperty(F As Field, _
                             ByVal PropName As String) As Variant
   '
   ' Returns NULL if the property doesn't exist
   '
     On Error Resume Next
     GetFieldProperty = F.Properties(PropName)
End Function

 

Sub ModifyFieldProperty(F As Field, ByVal PropName As String, _
                           ByVal PropType As Long, _
                           ByVal NewVal As Variant)
   Dim P As Property
     On Error Resume Next
     Set P = F.Properties(PropName)
     If Err Then
       '
       ' Add property (as long as NewVal isn't Null)
       '
       If Not IsNull(NewVal) Then
         On Error Goto 0      ' fail if can't add
         Set P = F.CreateProperty(PropName, PropType, NewDesc)
         F.Properties.Append P
       End If
     ElseIf IsNull(NewVal) Then
       '
       ' Delete property
       '
       On Error Goto 0      ' fail if can't delete
       F.Properties.Delete PropName
     Else
       '
       ' Modify property
       '
       On Error Goto 0      ' fail if can't alter
       P.Value = NewDesc
     End If
     Set P = Nothing
End Sub


                
调用函数如下:
    Sub Test()
      Dim db As Database, F As Field
      Dim v As Variant
      v = "This is a description"
      Set db = DBEngine(0).OpenDatabase("NWIND.MDB") ' change name/path
      Set F = db!Employees!Title
      ' Get existing description
      Debug.Print "Existing Title Description is: ";
      Debug.Print GetFieldProperty(F, "Description")
      ' Delete description
      ModifyFieldProperty F, "Description", dbText, v
      Debug.Print "After deleting Description: ";
      Debug.Print GetFieldProperty(F, "Description")
      ' Add description
      ModifyFieldProperty F, "Description", dbText, "Employee's Title"
      Debug.Print "After adding new Description: ";
      Debug.Print GetFieldProperty(F, "Description")
      ' Modify existing title
      ModifyFieldProperty F, "Description", dbText, "Emp Title"
      Debug.Print "After modifying Description: ";
      Debug.Print GetFieldProperty(F, "Description")
      ' Clean-up
      Set F = Nothing
      db.Close
   End Sub


再提供一个别人发表的代码(未测试)


'*******************************************************************************
'Function:       TableDefExist(strTableDef)
'Description:    Returns a Boolean value that indicates whether an table define
'                in currently database.
'Example:        TableDefExist("TEXT")=True
'*******************************************************************************
Function TableDefExist(ByVal strTableDef As String) As Boolean
On Error GoTo TableDefExist_Err
    If CurrentDb.TableDefs(strTableDef).Name = strTableDef Then
        TableDefExist = True
    End If
    TableDefExist = True
    Exit Function
TableDefExist_Err:
    TableDefExist = False
    Exit Function
End Function

 


Private Sub CreateTRDTableDef()

On Error GoTo Err_CreateTRDTableDef

Dim rstTRDTableSource As DAO.Recordset
Dim rstTableDefine As DAO.Recordset
Dim tdfTable As DAO.TableDef
Dim dbCurrentDatabase As DAO.Database
Dim fldField As Field
Dim intCount As Integer
Dim strTableName As String

    DoCmd.Echo True, "Creating table definition......"
    Set dbCurrentDatabase = CurrentDb
    Set rstTRDTableSource = dbCurrentDatabase.OpenRecordset("SELECT DISTINCT TRD_NAME,TABLE_NAME FROM TBL_TABLE_SOURCE", dbOpenDynaset)
    
    Do While Not rstTRDTableSource.EOF
        
        strTableName = rstTRDTableSource("TRD_NAME") & " - " & rstTRDTableSource("TABLE_NAME")
        DoCmd.Echo True, "Creating " & strTableName & " table definition....."
        If TableDefExist(strTableName) Then
            dbCurrentDatabase.TableDefs.Delete strTableName
        End If
        
        Set rstTableDefine = CurrentDb.OpenRecordset("SELECT * FROM TBL_TABLE_SOURCE WHERE TRD_NAME=" & "'" & _
            rstTRDTableSource("TRD_NAME") & "' AND TABLE_NAME='" & rstTRDTableSource("TABLE_NAME") & "' ORDER BY SEQUENCE", dbOpenDynaset)
        Set tdfTable = dbCurrentDatabase.CreateTableDef(strTableName)
        Set fldField = tdfTable.CreateField(rstTableDefine.Fields("FIELD_NAME"), GedFieldType(rstTableDefine.Fields("DATA_TYPE")), rstTableDefine.Fields("FIELD_SIZE"))
        
        tdfTable.Fields.Append fldField
        dbCurrentDatabase.TableDefs.Append tdfTable
        
        SetMyProperty fldField, "Caption", dbText, rstTableDefine.Fields("Caption")
        SetMyProperty fldField, "Description", dbText, rstTableDefine.Fields("DESCRIPTION")
        rstTableDefine.MoveNext
        
        With rstTableDefine
            Do While Not .EOF
                Set fldField = tdfTable.CreateField(.Fields("FIELD_NAME"), GedFieldType(.Fields("DATA_TYPE")), .Fields("FIELD_SIZE"))
                
                tdfTable.Fields.Append fldField
                SetMyProperty fldField, "Caption", dbText, rstTableDefine.Fields("Caption")
                SetMyProperty fldField, "Description", dbText, rstTableDefine.Fields("DESCRIPTION")
                
                .MoveNext
            Loop
        End With
        
        Set tdfTable = Nothing
        rstTableDefine.Close
        Set rstTableDefine = Nothing
        rstTRDTableSource.MoveNext
    Loop
    
    rstTRDTableSource.Close
    Set rstTRDTableSource = Nothing
    
    DoCmd.Echo True, "Ready"
    
    
Exit_CreateTRDTableDef:
    Exit Sub
    
Err_CreateTRDTableDef:
    MsgBox "Error: " & Err & vbCrLf & Err.Description
    Resume Exit_CreateTRDTableDef
    
End Sub

'*******************************************************************************
'Function:       GedFieldType(strDataType)
'Description:    Returns a integer value that indicates data types
'Example:        GedFieldType("dbText")=10
'*******************************************************************************

Function GedFieldType(strDataType As String) As Integer
Select Case strDataType
    Case "dbText"
        GedFieldType = 10
    Case "dbDate"
        GedFieldType = 8
    Case "dbDouble"
        GedFieldType = 7
    Case "dbFloat"
        GedFieldType = 21
    Case "dbInteger"
        GedFieldType = 3
    Case "dbLong"
        GedFieldType = 4
    Case "dbMemo"
        GedFieldType = 12
    Case "dbNumeric"
        GedFieldType = 6   'old is 19
    Case "dbSingle"
        GedFieldType = 6
    Case "dbTime"
        GedFieldType = 22
    Case "dbChar"
        GedFieldType = 18
    Case "dbCurrency"
        GedFieldType = 5
    Case Else
        GedFieldType = 0
End Select

End Function


'*******************************************************************************
'Sub:            SetMyProperty(Obj,Name,Type,Setting)
'Description:    Custom a user property
'Example:        SetMyProperty fldField, "Caption", dbText, "Test Information"
'*******************************************************************************

Sub SetMyProperty(Obj As Object, strName As String, intType As Integer, strSetting As String)
    Dim Prp As Property
    Const PrpFail As Integer = 3270
    On Error GoTo Err_SetMyProperty
    
    Obj.Properties(strName) = strSetting
    Obj.Properties.Refresh

Exit_SetMyProperty:
    Exit Sub

Err_SetMyProperty:

    If Err = PrpFail Then
      Set Prp = Obj.CreateProperty(strName, intType, strSetting)
      Obj.Properties.Append Prp
      Obj.Properties.Refresh
    Else
      MsgBox "Error: " & Err & vbCrLf & Err.Description
    End If
    
    Resume Exit_SetMyProperty

End Sub

发布人:cg1翻译-access911.net  
分享到:
点击次数:  更新时间:2009-04-01 14:32:19  【打印此页】  【关闭】
上一条:如何设定表的某字段默认值?  下一条:外部驱动程序(8961)中的意外错误



相关文章

  • • Access用代码创建表
  • • access表的设计技巧
  • • access实现自动编号从1开始排序且不中断
  • • Access2010出现“错误一对多” 调试解决办法
  • • 使用输入掩码控制数据输入格式
  • • 索引和主键的异同
  • • “排队不长,只是很粗”——浅谈化宽为长
  • • Access数据表能做什么

热门文章

  • [2017-09-04] access实现自动编号从1开始排序且不中断access数据库
  • [2008-12-20] 表中字段名命令的注意事项access数据库
  • [2009-04-02] 如何用程序调用链接表管理器?access数据库
  • [2005-02-04] 读取表中不重复的记录且显示全部字段access数据库
  • [2016-01-29] Access建表规范总结(四)——适当冗余access数据库
  • [2016-01-29] Access建表规范总结(三)——主子表拆分access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn