Vij*_*air 3 csv delphi sorting
我有一个TTable,我正在加载CSV文件到这个TTable.有三个领域:Id,Hits&Path.我用另一个查询为这个TTable做了一些查找字段.
我想排序表.我收到消息"功能不受支持".当我试着打电话的时候AddIndex('ndxHits','HITS',[]);
这是我的代码:
with DM.TblCVResults do
begin
try
Active := False;
TableName := 'C:\CSV\123.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
Run Code Online (Sandbox Code Playgroud)
您之前提到的问题是您使用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;
Run Code Online (Sandbox Code Playgroud)
TTable
如果您不需要,请关闭更新.(它快得多.)
CDS.LogChanges := False;
Run Code Online (Sandbox Code Playgroud)
运行以下代码以创建索引:
// Repeat for each additional index
with CDS.IndexDefs.AddIndexDef do
begin
Name := 'ndxHits';
Fields := 'Hits';
Options := [];
end;
Run Code Online (Sandbox Code Playgroud)
将该ClientDataSet's
IndexName
属性设置为您想要激活的索引:
CDS.IndexName := 'ndxHits';
Run Code Online (Sandbox Code Playgroud)
ClientDataSet
像使用任何其他数据集一样使用.使用Locate
或搜索它,使用或FindKey
添加,Insert
或Append
过滤它,等等.
归档时间: |
|
查看次数: |
919 次 |
最近记录: |