CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

TTable数据排序的问题。

楼主changchungu()2004-08-02 16:43:07 在 Delphi / 数据库相关 提问

利用TTable连接一个Paradox数据库表,建立了一个二次索引字段(如Depth),用于数据排序。在程序设计阶段,将Table的IndexName设置为该索引字段名,但是,程序一运行,就报错说“Index   out   of   date”。这是什么原因那?另外如何才能实现TTable数据表的排序呀? 问题点数:0、回复次数:9Top

1 楼cronuz(cronus)回复于 2004-08-03 08:40:07 得分 0

with   Table1   do  
  begin  
      IndexDefs.Add('index1','yourField1;yourField2',[ixCaseInsensitive,   ixDescending]);  
      IndexDefs[0].CaseInsFields   :=   'yourField1';  
      IndexDefs[0].DescFields   :=   'yourField2';  
      IndexName   :=   'index1';  
      Active   :=   true;  
  end;  
   
  (注:還可手動設定)Top

2 楼changchungu()回复于 2004-08-03 12:13:24 得分 0

不行呀。  
  在设计期我手动设定Table1的IndexDefs属性,设置一个IndexDefs[0],定义了其Fields为一个数据库字段名,其它属性未设置。  
  在运行时,如下代码:  
  procedure   TForm1.N7Click(Sender:   TObject);  
  var  
      I:Integer;  
  begin  
      Table1.Active:=false;  
      Table1.Exclusive:=true;  
      Table1.IndexDefs.Update;  
      for   I:=0   to   Table1.IndexDefs.Count-1   do  
          if   Table1.IndexDefs[I].Fields='PosStart'   then  
              Table1.IndexName   :=Table1.IndexDefs.Items[I].Name;  
      Table1.Exclusive:=false;  
      Table1.Active:=true;  
  end;  
   
  可是程序报错说:"Index   out   of   date".是什么原因啊。  
  Top

3 楼y31307(31307)回复于 2004-08-03 12:33:24 得分 0

table1.sort:=table1.indexdefs.items[i].nameTop

4 楼cronuz(cronus)回复于 2004-08-03 12:58:01 得分 0

実在不行、在Paradox数据库環境下建一個索引文件。  
   
  CREATE   INDEX   yourIndex    
  ON   yourTable   (   yourField1,   yourField2   )Top

5 楼changchungu()回复于 2004-08-03 13:55:01 得分 0

大家帮我想想办法啊Top

6 楼y31307(31307)回复于 2004-08-03 17:50:18 得分 0

其实答案就在以下的问题中  
  http://community.csdn.net/Expert/topic/2741/2741282.xml?temp=.8439447  
  只不过换个事件就可以了。Top

7 楼anbangs(大邦)回复于 2004-08-03 17:55:00 得分 0

procedure   TFormMain.MyDBGridTitleClick(Column:   TColumn);  
  var   i:integer;  
  begin  
    if   AdoQCX.Sort   =   Column.FieldName   then          
        begin  
            For   i:=0   to   MyDBGrid.Columns.Count-1   do  
                MyDBGrid.Columns[i].Title.RestoreDefaults;  
   
            AdoQCX.Sort   :=   Column.FieldName   +   '   DESC';  
            Column.Title.Font.Color:=clPurple;          
        end  
    else   begin  
        For   i:=0   to   MyDBGrid.Columns.Count-1   do  
            MyDBGrid.Columns[i].Title.RestoreDefaults;  
   
        AdoQCX.Sort   :=   Column.FieldName;  
        Column.Title.Font.Color:=clBlue;        
        end;  
  end;  
   
  Top

8 楼wychero(高天)回复于 2004-08-03 18:00:52 得分 0

同意   cronuz(cronus)Top

9 楼changchungu()回复于 2004-08-04 10:27:49 得分 0

to   y31307   and   anbangs:我用的是BDE的TTable,而不是ADO的TADOTable。TTable没有Sort属性,我看了TTable的帮助,似乎只能用IndexName属性来实现排序。Top

相关问题

  • gruop by后的数据排序
  • 数据排序的实现
  • 数据排序统计
  • 数据库排序问题
  • mysql数据排序问题
  • 数据库排序问题!
  • 关于odbc数据库排序
  • 数据窗口的排序问题!
  • 数据库排序问题求解
  • 关于数据排序的问题/

关键词

  • 属性
  • 数据库
  • active
  • indexdefs
  • yourfield
  • ttable
  • adoqcx
  • mydbgrid
  • table1
  • indexname

得分解答快速导航

  • 帖主:changchungu

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo