delphi – 如何在TTable中对CSV文件进行排序?
我有一个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添加它,过滤它,等等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |