加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何在TTable中对CSV文件进行排序?

发布时间:2020-12-15 09:06:14 所属栏目:大数据 来源:网络整理
导读:我有一个TTable,我正在加载CSV文件到这个TTable.有三个领域:Id,Hits路径. 我用另一个查询为这个TTable做了一些查找字段. 我想排序表.我收到消息“功能不受支持”.当我尝试调用AddIndex(‘ndxHits’,’HITS’,[]); 这是我的代码: with DM.TblCVResults dobe
我有一个TTable,我正在加载CSV文件到这个TTable.有三个领域:Id,Hits&路径.
我用另一个查询为这个TTable做了一些查找字段.

我想排序表.我收到消息“功能不受支持”.当我尝试调用AddIndex(‘ndxHits’,’HITS’,[]);

这是我的代码:

with DM.TblCVResults do
begin
  try
    Active     :=  False;
    TableName  :=  'C:CSV123.txt';
    Active     :=  True;

    AddIndex('ndxHits','HITS',[]);
    AddIndex('ndxCandidate','LkCandidate',[]);
    AddIndex('ndxLastCV','LkLastCV',[]);
    AddIndex('ndxPostCode','LkPostCode',[]);
    IndexDefs.Update;
    Active     :=  True;
    DM.TblCVResults.IndexName := 'ndxHits';
  except
    on E: Exception do
      MsgError(E.Message);
  end;
end

解决方法

您之前提到的问题是您使用ttASCII作为TableType. ttASCII表,AFAIK,不支持索引.

最好的办法是将ttASCII TTable内容加载到TClientDataset`(CDS)中,它支持索引.我没有使用ttASCII表作为源测试,但它应该像下面这样简单:

将TDatasetProvider组件添加到您的应用程序.将它的DataSet属性设置为您的TTable.

将TClientDataSet组件添加到您的应用程序.将它的ProviderName设置为您在上面添加的DataSetProvider. (我在下面的步骤中将其命名为CDS.)

按顺序打开Table和ClientDataSet(CDS).

Table1.Active := True;
CDS.Active := True;

如果您不需要,请关闭TTable的更新. (它快得多.)

CDS.LogChanges := False;

运行以下代码以创建索引:

// Repeat for each additional index
with CDS.IndexDefs.AddIndexDef do
begin
  Name := 'ndxHits';
  Fields := 'Hits';
  Options := [];
end;

将ClientDataSet的IndexName属性设置为您想要活动的索引:

CDS.IndexName := 'ndxHits';

像使用任何其他数据集一样使用ClientDataSet.使用Locate或FindKey搜索它,使用Insert或Append添加它,过滤它,等等.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读