要想输出数据,网上搜了一下和 Ehlib 有关的导出的文章,都是讲如何输出 DBGridEh 的内容的。
如果我只想输出一个 DataSet 的内容,没有 DBGridEh 怎么办?使用 TDataSetTextExporterEh.
拖一个 TDataSetTextExporterEh 过来到我的 DataModule 里面,就是 DataSetTextExporterEh1
然后使用:
DataSetTextExporterEh1.DataSet := ADataSet; //这个 ADataSet 是一个有数据的 TDataSet,比如是一个 TClientDataSet
DataSetTextExporterEh1.ExportToFile('MyData.csv');
使用上述代码可以导出数据。但当我在导出某个 DataSet 的时候问题来了,出现 AV 异常错误。
仔细追踪,发现它是在导出第8个字段的数据时出错。到我的 DataSet 里面去看,第8个字段是一个图片,Blob 字段。
最简单的办法是排除掉这个字段。如何排除呢?看代码:
for I := 0 to ADataSet.FieldCount -1 do
begin
if (ADataSet.Fields[i] is TBlobField) then Continue; //排除 BLOB 字段。有 BLOB 字段导出时会出异常。
AItem := DataSetTextExporterEh1.FieldsMap.Add;
AItem.DataSetFieldName := ADataSet.Fields[i].FieldName;
AItem.FileFieldName := ADataSet.Fields[i].FieldName;
AItem.Field := ADataSet.Fields[i];
end;
再次测试,问题消失。搞定。