gpt4 book ai didi

Delphi Firedac 内存表

转载 作者:行者123 更新时间:2023-12-01 22:55:44 25 4
gpt4 key购买 nike

我正在尝试用 Firedac MemoryTables 替换 Delphi ClientDatasets,它运行良好,但在处理大数据时速度非常慢我在数据模块中创建 FireDac 内存表并从表单填充它。在表单中,我检查内存表的记录计数,它包含记录。然后我关闭内存表并重新打开它,但打开后它返回一个空表。

Dataform.mtDebTran.FileName := CdsDir + '/DebTran.Fds';
DataForm.mtDebTran.CreateDataSet
DataForm.mtDebTran.CreateDataSet;
DataForm.mtDebTran.Open;
DataForm.BuildDebTranTemp1(P1,P2,P3,P4,True,True);
DataForm.mtDebTran.SaveToFile(CdsDir + '/DebTran',sfBinary);
ShowMessage(IntToStr(DataForm.mtDebTran.RecordCount));
DataForm.mtDebTran.Close;
DataForm.mtDebTran.Open;
ShowMessage(IntToStr(DataForm.mtDebTran.RecordCount));`

最佳答案

这是您真正的代码吗?它完整吗?您连续调用 CreateDataSet 两次

DataForm.mtDebTran.CreateDataSet
DataForm.mtDebTran.CreateDataSet;

没有明显的原因,但无论如何,如果您的 mtDebTran 数据集在第一次调用 CreateDataSet 之前应该包含数据,那么该调用将清空它,因为这就是它应该做的事情。

你说“但它在打开后返回一个空表。”想必您想问为什么会这样。嗯,在

DataForm.mtDebTran.Close;
DataForm.mtDebTran.Open;

调用 .Close 后,mtDebTran 将不包含任何数据,因为 DataSet 在调用 .Close 时会丢弃其数据,并且调用 .Open 不会恢复它 - 数据集仍为空。要获取数据,您需要从 .SaveToFile 中创建的文件重新加载数据。或者首先不调用 .Close,当然。

顺便说一句,在您的代码中,mtDebTran 是 DataForm 的成员,但在您的 q 文本中。您说“我在数据模块中创建 FireDac 内存表”,那么 FireDac 表可能与 mtDebTran 不同?

另外,如果 mtDebTran 实际上是一个 TClientDataSet,那么在您的 q 中提及 FireDac 表及其标题是不相关且具有误导性的。

关于Delphi Firedac 内存表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35031304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com