Office中国论坛/Access中国论坛

标题: tabledefs 无效? [打印本页]

作者: wjerryho    时间: 2006-11-3 20:07
标题: tabledefs 无效?
tabledefs 无效dim aa as tabledefsset aa=currentdb.tabledefs("BB")debug.print aa.name则出现"3420"的错误.问题出现在 aa.name 上 "对象无效或不再设置"到底要如何解决?

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


作者: sgrshh29    时间: 2006-11-3 20:16
dim aa as tabledef
作者: wjerryho    时间: 2006-11-3 22:19




改过一样tabledef 无效?



tabledefs 无效

dim aa as tabledef

set aa=currentdb.tabledefs("BB")

debug.print aa.name

则出现"3420"的错误.

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

到底要如何解决?
作者: sgrshh29    时间: 2006-11-4 00:23
debug.print aa.name
aa已经定义为tabledef,tabledef也能打印吗?也能 .name吗?你究竟想要得到什么呢?


作者: wwwwa    时间: 2006-11-4 00:26
你的目的?
作者: wjerryho    时间: 2006-11-4 00:44
  想用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编辑过]


作者: wwwwa    时间: 2006-11-4 00:48
对一个现成的表增加一个字段

用ALTER TABLE即可
作者: wjerryho    时间: 2006-11-5 02:59
我只会有简单的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 语句,可用多种不同方法更改当前已存在的表:你可以:



作者: wjerryho    时间: 2006-11-5 03:12
以下是引用wwwwa在2006-11-3 16:48:00的发言:


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

用ALTER TABLE即可

最后用一句

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

就完成任务

谢谢!!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3