设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1903|回复: 8
打印 上一主题 下一主题

[Access本身] tabledefs 无效?

[复制链接]
跳转到指定楼层
1#
发表于 2006-11-3 20:07:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
tabledefs 无效dim aa as tabledefsset aa=currentdb.tabledefs("BB")debug.print aa.name则出现"3420"的错误.问题出现在 aa.name 上 "对象无效或不再设置"到底要如何解决?

[此贴子已经被作者于2006-11-3 14:23:32编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-11-3 20:16:00 | 只看该作者
dim aa as tabledef
3#
 楼主| 发表于 2006-11-3 22:19:00 | 只看该作者




改过一样tabledef 无效?



tabledefs 无效

dim aa as tabledef

set aa=currentdb.tabledefs("BB")

debug.print aa.name

则出现"3420"的错误.

问题出现在 aa.name 上 "对象无效或不再设置"

到底要如何解决?
4#
发表于 2006-11-4 00:23:00 | 只看该作者
debug.print aa.name
aa已经定义为tabledef,tabledef也能打印吗?也能 .name吗?你究竟想要得到什么呢?

5#
发表于 2006-11-4 00:26:00 | 只看该作者
你的目的?
6#
 楼主| 发表于 2006-11-4 00:44:00 | 只看该作者
  想用VBA编程,对一个现成的表增加一个字段,但过不了定意tabledefs("contract")这一关.

运行时会出现阶段"3420"的错误!不知道是软件问题还是别的问题?

下列代码选自<<MSDN Library for Visual Studio .NET 2003>>

MSDN Library -->

数据访问-->

DAO-->

技术文章-->

Migrating from DAO to ADO -->

Creating and Modifying Tables (增加和修改表)

中的内容Sub DAOCreateAutoIncrColumn()

   Dim db As DAO.Database
   Dim tbl As DAO.TableDef
   Dim fld As DAO.Field

   ' Open the database
   Set db = DBEngine.OpenDatabase(".\NorthWind.mdb")

   ' Get the Contacts table
   Set tbl = db.TableDefs("Contacts")

   ' Create the new auto increment column
   Set fld = tbl.CreateField("ContactId", dbLong)
   fld.Attributes = dbAutoIncrField

   ' Add the new table to the database.
   tbl.Fields.Append fld

   db.Close

End Sub


[此贴子已经被作者于2006-11-3 16:45:03编辑过]

7#
发表于 2006-11-4 00:48:00 | 只看该作者
对一个现成的表增加一个字段

用ALTER TABLE即可
8#
 楼主| 发表于 2006-11-5 02:59:00 | 只看该作者
我只会有简单的VBA编程,对 Microsoft Jet 数据库引擎 不太了解!我记得我以前在VFP用过ALTER TABLE语句,Access上就不用用了!





ALTER TABLE 语句


修改已用 [url=mkMSITStore:C:\Program%20Files\Common%20Files\Microsoft%20Shared\OFFICE11\2052\jetsql40.chm::/dasqlcreatetable.htm]CREATE TABLE 语句[/url]创建好的表设计。









注意 对于非微软数据库, Microsoft Jet 数据库引擎 不支持ALTER TABLE, 或 数据定义语言 (DDL) 语句的使用。而使用 DAO创建方法。









语法


ALTER TABLE 表 {ADD ADD{COLUMN 字段类型 [ (字长)] [NOT NULL]    [CONSTRAINT 索引 ] |
    ALTER COLUMN 字段类型 [(字长)] |
    CONSTRAINT 多重字段索引 } |
    DROP DROP{COLUMN 字段 I CONSTRAINT 索引名 } }


ALTER TABLE 语句分为以下几个部分:











部分


说明





table


欲修改的表之名称。





field


欲在内增加或删除的字段的名称。或表内欲被替换的字段名称。





type


字段的数据类型。





size


字段的字符长度 (文本及二进制字段)。





index


字段索引。欲了解更多有关如何构造本索引的信息,请看 [url=mkMSITStore:C:\Program%20Files\Common%20Files\Microsoft%20Shared\OFFICE11\2052\jetsql40.chm::/dasqlconstraint.htm]CONSTRAINT子句[/url]。





multifieldindex


欲增加至 中的多重字段索引的定义。欲了解更多有关如何构造本索引的信息,请看 [url=mkMSITStore:C:\Program%20Files\Common%20Files\Microsoft%20Shared\OFFICE11\2052\jetsql40.chm::/dasqlconstraint.htm]CONSTRAINT子句[/url]。





indexname


欲删除的多重字段索引的名称。



说明


使用 ALTER TABLE 语句,可用多种不同方法更改当前已存在的表:你可以:




  • 使用 ADD COLUMN 在表中添加新的字段。需要指定字段名、数据类型、还可以 (对文本和二进制字段)指定长度。例如,下列语句在员工表中增加一 25 个字符的、名为 Notes 的文本字段:


    ALTER TABLE Employees ADD COLUMN Notes TEXT(25)





    也可以定义此字段的索引。关于单一字段索引的详细信息,请参阅CONSTRAINT 子句主题。


    如果对一字段指定 NOT NULL,则在这字段中添加的新记录必须有有效的数据。

  • 使用ALTER COLUMN改变一个当前字段的数据类型,需要指定字段名、新数据类型、还可以 (对文本和二进制字段)指定长度。例如,下列语句把雇员表中一个字段的数据类型, 被称为ZipCode(最初被定义为整数),改变成一个10字符文本字段:


    ALTER TABLE Employees ALTER COLUMN ZipCode TEXT(10)




  • 使用 ADD CONSTRAINT 添加多重字段索引。关于多重字段索引的详细信息,请参阅 CONSTRAINT 子句主题。

  • 使用 DROP COLUMN 删除字段。只要指定欲删除的字段名即可。

  • 使用 DROP CONSTRAINT 删除多重字段索引。只要在 CONSTRAINT 保留字后面指定索引名即可。
9#
 楼主| 发表于 2006-11-5 03:12:00 | 只看该作者
以下是引用wwwwa在2006-11-3 16:48:00的发言:


对一个现成的表增加一个字段

用ALTER TABLE即可

最后用一句

currentdb.Execute "ALTER TABLE bb ADD COLUMN bb char(10)"

就完成任务

谢谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-10 20:59 , Processed in 0.126536 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表