如何在程序中改变表的结构?

cowbaby 2003-10-16 11:19:01
数据库:Access
首先看一段VFP的代码:
SELE 1
USE DATABASE\OUT1
SET uniq on
INDE on field1 + field2 to ind
COPY TO tmp
SET INDE TO
SET uniq off
INDE on field1 + field2 to ind

SELE 2
USE DATABASE\OUT2
ZAP
APPE from tmp

这段代码,在程序运行过程中改变了表的结构,tmp表里field1 + field2 是唯一的
但是后来又对表out1解除了uniq
我在VB中用到了这段代码,但是我无法在程序运行过程中改变表的结构
表OUT1中原来有一万条记录,其中field1 和 field列有很多是重复的,我在Access
中对有数据的表OUT1创建:索引:field1无重复,field2无重复
这时Access提示错误,不允许更改表的结构。
但是如果我在VB程序中不改变表OUT1的结构,那么
所得到的表OUT2的记录数目和表OUT1的记录数目是一样的(正确结果肯定是OUT2的记录数目肯定比OUT1少)
而那一段VFP的代码才是正确的,
请问有什么办法???
能使得VB中也能得到同样的结果??
...全文
39 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cowbaby 2003-10-18
  • 打赏
  • 举报
回复
TO cuizm(射天狼):
非常感谢你的回答,很详细,
请问有两个字段组成的索引怎么写??
数据过滤Filter功能,怎么写??
cowbaby 2003-10-18
  • 打赏
  • 举报
回复
TO cuizm(射天狼):
非常感谢你的回答,很详细,
请问有两个字段组成的索引怎么写??
数据过滤Filter功能,怎么写??
射天狼 2003-10-18
  • 打赏
  • 举报
回复
此示例在员工表中增加 Currency 数据类型的一个工资字段。

Sub AlterTableX1()

Dim dbs As Database

'在您的计算机中修改此行使其正确指到 Northwind
'的路径。
Set dbs = OpenDatabase("Northwind.mdb")

'添加工资字段至员工表中,
'并且设置为 Currency 数据类型。
dbs.Execute "ALTER TABLE Employees " _
& "ADD COLUMN Salary CURRENCY;"

dbs.Close

End Sub

此示例从员工表中删除工资字段。

Sub AlterTableX2()

Dim dbs As Database

'在您的计算机中修改此行使其正确指到 Northwind
'的路径。
Set dbs = OpenDatabase("Northwind.mdb")

'从员工表中删除工资字段。
dbs.Execute "ALTER TABLE Employees " _
& "DROP COLUMN Salary;"

dbs.Close

End Sub

此示例在订单表中增加一外部键。这个外部键是基于员工编号字段和引用至员工的表中的员工编号字段。此示例中,在 REFERENCES 子句中并没有列出员工表的员工编号字段,这是因为员工编号为员工表的主键。

Sub AlterTableX3()

Dim dbs As Database

'在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")

'在订单表中添加外部键。
dbs.Execute "ALTER TABLE Orders " _
& "ADD CONSTRAINT OrdersRelationship " _
& "FOREIGN KEY (EmployeeID) " _
& "REFERENCES Employees (EmployeeID);"

dbs.Close

End Sub

此示例从订单表中删除外部键。

SubSub()

Dim dbs As Database

'在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")

'由订单表中删除 OrdersRelationship 外部键。
dbs.Execute "ALTER TABLE Orders " _
& "DROP CONSTRAINT OrdersRelationship;"

dbs.Close

End Sub
射天狼 2003-10-18
  • 打赏
  • 举报
回复
ALTER TABLE 语句

修改已用 CREATE TABLE 语句创建好的表设计。

注意 Microsoft Jet 数据库引擎并不支持使用 ALTER TABLE,或任何非 Microsoft Jet 数据库数据定义语言 (DDL) 语句。而由 DAO Create 方法取代。

语法

ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] |
CONSTRAINT multifieldindex} |
DROP {COLUMN field I CONSTRAINT indexname} }

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

部分 说明
table 欲修改的表之名称。
field 欲在表内增加或删除的字段的名称。
type 字段的数据类型。
size 字段的字符长度 (仅文本字段及二进制字段)。
index 字段索引。关于如何构造字段索引的详细信息,请参阅 CONSTRAINT 子句主题。
multifieldindex 欲增加至表 中的多重字段索引的定义。关于如何构造此子句的详细信息,请参阅 CONSTRAINT 子句主题。
indexname 欲删除的多重字段索引的名称。
说明

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

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

ALTER TABLE Employees ADD COLUMN Notes TEXT(25)

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

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

?使用 ADD CONSTRAINT 添加多重字段索引。关于多重字段索引的详细信息,请参阅 CONSTRAINT 子句主题。
?使用 DROP COLUMN 删除字段。只要指定欲删除的字段名即可。
?使用 DROP CONSTRAINT 删除多重字段索引。只要在 CONSTRAINT 保留字后面指定索引名即可。

注意

?不能同时添加或删除一个以上的字段或索引。
?可以使用 CREATE INDEX 语句添加单一或多重字段索引至一表,也可以用 ALTER TABLE 或 DROP语句来删除用 ALTER TABLE 或 CREATE INDEX 创建的索引。
?可以在单一字段上使用 NOT NULL,或在名为 CONSTRAINT 的子句中使用 NOT NULL,这个名为 CONSTRAINT 的子句应用于单一字段或名为 CONSTRAINT
的多重字段。不管怎样,只能在一字段上使用 NOT NULL 一次,否则将发生执行时的错误。
cowbaby 2003-10-18
  • 打赏
  • 举报
回复
用alter table tablename方法怎样创建索引和过滤数据??
cowbaby 2003-10-17
  • 打赏
  • 举报
回复
用alter table tablename方法怎样创建索引和过滤数据??
MSSQL 2003-10-16
  • 打赏
  • 举报
回复
ALTER TABLE example
可以修改表结构
sword281 2003-10-16
  • 打赏
  • 举报
回复
alter table tablename <add column_name data_type | modify column_name data_type>
zjcxc 2003-10-16
  • 打赏
  • 举报
回复
不怅VFP,UP
yunfeng007 2003-10-16
  • 打赏
  • 举报
回复
具体查sql server帮助中的alter table部分
cowbaby 2003-10-16
  • 打赏
  • 举报
回复
能具体一点吗?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧