- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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
最佳答案
您之前的问题提到您使用 ttASCII
作为 TableType
。 ttASCII
表,据我所知,不支持索引。
最好的选择是将 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
添加它,过滤它,等等。
关于delphi - 如何对表中的 CSV 文件进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4554134/
我是一名优秀的程序员,十分优秀!