DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: david_
今日帖子: 3
在线用户: 19
导航: 论坛 -> 论坛精华贴 斑竹:liumazi,iamdream  
作者:
男 lqg0528 (kk) ★☆☆☆☆ -
普通会员
2003/5/7 0:44:21
标题:
动态改变据库表(Access库)的索引 浏览:4016
加入我的收藏
楼主: 如何在delphi程序里实现:

1.动态改变据库表的索引,如删除索引。

2.动态改变数据库表(Access库)间关联的属性,如把级联更新加上。
我的QQ号:31989727。
   
                                                          谢谢!
                                                           kk
----------------------------------------------
各位老兄好!谢谢大家帮助支持,希望我们互相学习,共同畅游这知识的海洋。
作者:
男 mantousoft (孜孜不倦的馒头) ★☆☆☆☆ -
盒子活跃会员
2003/5/7 12:11:52
1楼: 抄的,你研究一下:

---- 以Paradox数据表为例
索引分为主索引(Primary Index)即关键字(Primary Key)索引和次索引(Secondary Index), 其中主索引对应.PX文件,次索引对应.XG*和.YG*文件. 

一. 创建表索引 
---- (1)用Table.AddIndex来实现 
---- 方 法:AddIndex( IndexName,FieldNames,Options ) 
---- 其 中:( 详见Delphi 帮助) 
---- IndexName: 索引名称,仅在指定次索引时有作用. 
---- FieldNames: 索引域, 可指定多个域,各域之间用分号隔开, 如'Field1;Field2;Field3' 
---- Options: 索引选项, 可为[ixPrimary, ixUnique, ixDescending, ixCaseInsensitive, ixExpression] 
---- 下面是一个例子: 

---- 假设有一个存放通讯录数据表MyComm.DB(类型为Paradox)存放于本地目录d:\mynote下,现建立一个主索引(索引域为编号ID)和一个次索引(索引域为编号ID和姓名Name, 索引名称为NameIndex). 

  with table1 do
     begin
   close;
   Exclusive := true;
   DatabaseName := 'd:\MyNote';
   TableName := 'MyComm.DB';
   Open;

   {建立主索引 }
   AddIndex(','ID',[ixPrimary]);

   {建立次索引 }
   AddIndex('NameIndex','ID;Name',[]);
   close;
     end;

  (2)用SQL来实现
 对Paradox数据表来说,用SQL只能建立次索引.
 在SQL语法中,用来建立索引的语句是:
  Create Index IndexName On TableName
  (IndexField1,IndexField2,..)
 其中:
  IndexName为一个次索引的名称,如MySecIndex1等.
  TableName为对应数据表的名称,如MyTable等.
  TableName后面为索引域列表,所有索引域有圆括号括起来,
   各索引域之间用逗号隔开.
 
---- 下面是一个例子: 

---- 假设有一个存放通讯录数据表MyComm.DB(类型为Paradox)存放于本地目录d:\mynote下,现建立一个次索引(索引域为编号ID和姓名Name,索引名称为NameIndex). 

 with query1 do
 begin
 close;
 DatabaseName := 'd:\MyNote';

{建立次索引NameIndex}
  sql.clear;
  sql.add( 'Create Index NameIndex On MyComm(ID,Name)' );
     execSql;
 end;
 

二. 删除表索引 
---- (1) 用Table.DeleteIndex 来实现 
---- DeleteIndex只能删除次索引名称. 
---- 方 法:DeleteIndex( IndexName ) 
---- 其 中:( 详见Delphi 帮助) 
---- IndexName: 次索引名称. 

---- 下面是一个例子: 

---- 假设有一个存放通讯录数据表MyComm.DB(类型为Paradox)存放于本地目录d:\mynote下,现有一个次索引(索引域为编号ID和姓名Name,索引名称为NameIndex), 将删除之. 

  with table1 do
     begin
   close;
   Exclusive := true;
   DatabaseName := 'd:\MyNote';
   TableName := 'MyComm.DB';
   Open;

   {删除次索引}
   DeleteIndex('NameIndex');
   
   close;
     end;
 

---- (2) 用SQL来实现 
---- 在SQL语法中,用来删除索引的语句是: 
---- Drop Index TableName.IndexName 
---- 要删除次索引时,IndexName 为一个次索引的名称, 如'MyTable.MySecIndex1' 等. 
---- 要删除主索引时,IndexName 为'primary', 如'MyTable.primary'; 值得注意的是,在删除主索引成功后,数据表的所有次索引也自动删除. 

---- 下面是一个例子: 
---- 假设有一个存放通讯录数据表MyComm.DB(类型为Paradox)存放于本地目录d:\mynote下,已定义一个主索引(索引域为编号ID)和一个次索引(索引域为编号ID和姓名Name,索引名称为NameIndex). 
---- 现在因为索引损坏,要删除索引,以便重新索引. 

  with query1 do
     begin
   close;
   DatabaseName := 'd:\MyNote';

   {删除次索引NameIndex }
          sql.clear;
          sql.add( 'Drop Index MyComm.NameIndex' );
          execSql;

   {删除主索引 }
          sql.clear;
          sql.add( 'Drop Index MyComm.Primary' );
          execSql;
     end;

三. 注 意 事 项: 
---- (1) 在索引更改时,应保证对应的数据表可以以独占方式(Exclusive=true)打开,否则会引起错误. 
---- (2) 上述方法略加修改后,也可用于dBase,Oracle等它数据库的数据表. 
---- (3) 如果需要重新对索引文件进行索引,请参考BDE 的Dbi 函数说明: 
---- RegenIndex, RegenIndexes.
----------------------------------------------
看到帖子就想顶,原谅我是这么直了~ 
作者:
男 lqg0528 (kk) ★☆☆☆☆ -
普通会员
2003/5/7 21:50:55
2楼: 谢谢你,以后我还会有很多机会麻烦你的,还望你多多指教。
----------------------------------------------
各位老兄好!谢谢大家帮助支持,希望我们互相学习,共同畅游这知识的海洋。
作者:
男 yangjiren (yangjiren) ★☆☆☆☆ -
普通会员
2004/12/24 9:35:48
3楼: 如何做一个简单工资系统
----------------------------------------------
杨霁人
作者:
男 taishanwa (58677322) ▲▲▲▲▲ -
注册会员
2011/7/9 18:51:56
4楼: 乐蜂网
卡帕
----------------------------------------------
-春水堂
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/7/13 22:05:09
5楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/7/13 22:09:02
6楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/7/13 22:44:45
7楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/7/13 22:58:17
8楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/7/26 0:28:57
9楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
作者:
女 seowhy123456 (seowhy123456) ▲▲▲▲▲ -
禁用账号
2011/8/10 21:58:49
10楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布广告,禁用帐号!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行179.6875毫秒 RSS