Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

批量将字段名写入字段标题

周天华  发表于:2013-03-26 08:58:52  
复制

现在想把字段名全部写入字段标题,如何能批量做到?(我的数据库全是用中文命名的,写入标题后,我再改名称

 

Top
殷小宝 发表于:2013-03-26 17:33:30

dim dbs as DAO.database

dim tdf as DAO.tabledef

dim fd as DAO.field

set dbs=currentdb

set tdf=dbs.tabledefs(“表名”)

for each fd in tdf.fields

fd.caption=fd.name

next




周天华 发表于:2013-03-27 09:27:28
不行,对象不支持方法fd.caption=fd.name

叶海峰 发表于:2013-03-27 10:36:21
Dim dbs    As DAO.Database
    Dim tdf    As DAO.TableDef
    Dim fd     As DAO.Field
    Dim i
    On Error Resume Next
    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs("品类")
    For Each fd In tdf.Fields
        fd.Properties("Caption").Value = fd.Name
    Next


周天华 发表于:2013-03-27 12:51:13
谢谢,但但我试了,原标题为空的不行,只有原来标题不是空,才可批量标题。这样的话还是不能批量标题。

周天华 发表于:2013-03-27 13:09:25

原来为空的不可以,我查资料,这个网页上有C#的办法,http://social.msdn.microsoft.com/Forums/zh-CN/adonetzhchs/thread/7353074c-71b2-4549-aedb-990ad48e3e69?persist=True


我不懂语言,其中一段说:添加以下的代码就可以了,如何变为VB代码?


      try
      {        
        CaptionText = DAOField.Properties["Caption"].Value.ToString();
      }
      catch
      {
        dao.Property p;
        p = DAOField.CreateProperty("Caption", 12, "新加的标题", true);
        DAOField.Properties.Append(p);
        CaptionText = DAOField.Properties["Caption"].Value.ToString();
       // CaptionText = "新加的标题";



叶海峰 发表于:2013-03-27 13:24:28
Sub a()
    Dim dbs    As DAO.Database
    Dim tdf    As DAO.TableDef
    Dim fd     As DAO.Field
    Dim i
    Dim str
    Dim prpNew


    On Error Resume Next
    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs("品类")
    For Each fd In tdf.Fields
        str = fd.Properties("Caption").Value
        If Err = 3270 Then
            Set prpNew = fd.CreateProperty("Caption", DB_TEXT, fd.Name)
            fd.Properties.Append prpNew
        Else
            fd.Properties("Caption").Value = fd.Name
        End If
    Next
End Sub



周天华 发表于:2013-03-27 14:00:26

谢谢!这样可以了,那这样我就可以循环的方法把 这个查询SELECT MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Name) Not Like "MSys*") AND ((MSysObjects.Type)=1))语句中的所有表批量修改标题了,


嘿嘿,本人非IT,不懂代码,要用半天的时间死搬硬套的办法,才可写出,哪位能帮我写出,我非常感谢。



叶海峰 发表于:2013-03-27 14:20:45
 Dim dbs    As DAO.Database
    Dim tdf    As DAO.TableDef
    Dim fd     As DAO.Field
    Dim i
    Dim str
    Dim prpNew

    

On Error Resume Next

    Set dbs = CurrentDb
    For Each tdf In dbs.TableDefs
   ' Set tdf = dbs.TableDefs("品类")
    For Each fd In tdf.Fields
        str = fd.Properties("Caption").Value
        If Err = 3270 Then
            Set prpNew = fd.CreateProperty("Caption", DB_TEXT, fd.Name)
            fd.Properties.Append prpNew
        Else
            fd.Properties("Caption").Value = fd.Name
        End If
    Next
    Next



总记录:8篇  页次:1/1 9 1 :