如何给table中的数据排序(100分)

  • 主题发起人 主题发起人 wyw
  • 开始时间 开始时间
W

wyw

Unregistered / Unconfirmed
GUEST, unregistred user!
一个table,一个datasource,一个dbgrid,table连接某个表,该表中某有任何索引,
现在我希望显示在dbgrid中的数据是按照某个字段排序的,不知该怎么办?
我在程序中
table1.CLOSE;
table1.TableName:='tablename';
table1.IndexDefs.AddIndexDef.Name:='rd';
table1.IndexDefs.AddIndexDef.Fields:='rdflag';
table1.IndexName:=Table1.IndexDefs.Items[0].Name;
table1.open;
可是总是报错,说索引rd不存在。

 
你用query吧,先将query的DataBase等属性设好,然后执行代码中有下面一段
Query.Sql.add('select * from tablename order by rd');
query.open;
就可以了。
 
先在数据库中建索引,然后在程序中标示出来!
 
table1.IndexFieldNames:='field1';好象没有建索引也可以,不敢确定;
如果用ado就最简单了,无须建索引,adotable1.Sort := 'field1 ASC, field2 DESC'即可
 
你到SQL 的BOOK ONLINE 中查找一下索引的定义是怎样的!
 
我上面的问题有一点问题
原来的表格中没有任何索引,我想在程序中建立索引
 
table1.IndexFieldNames:=‘XX’ 就可以了
 
我的数据表是foxpro的,而indexfieldname中指出如果数据库是paradox或dbase的,
则索引必须存在,而我的表中没索引,我想在程序中建立一个索引

另外,我只有一个文件 c:/my documents/1.dbf ,我不知到怎么用query来取得数据
我只知道如果用table,知道将tablename设为c:/my documents/1.dbf就行了
 
我也遇见过此类问题

1 表应该有主键;
2 Table在打开前把table的table1.IndexName:=‘’,
 
用Query取数据:
Query1.Close;
Query1.RequestLive := true;//是否可以修改Query的数据记录,true可以。
Query1.DataBaseName := 'c:/my documents';
Query1.SQL.Clear;
Query1.SQL.Add('select * from "1.dbf"');
Query1.Open;

用Query建立索引的sql语句:
CREATE INDEX 索引名 ON "1.dbf" (indexfieldname1)

用Query删除索引的sql语句:
Drop INDEX "1.dbf".索引名

建立索引后,Table可以调用该索引。


 
先用CREATE INDEX创建速引
然后执行你的代码即刻
 
多人接受答案了。
 
后退
顶部