- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 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/
在 Delphi Firedac 中,我有一个很长的查询。我想重用它只是通过这样的参数更改列的名称 select f1, f2 from t1 where id = :par1 and :colimn
我正在使用FireDAC的Array DML功能将大量数据插入到我的远程MS SQL数据库中。 它可以正常工作,但需要一些时间来完成执行方法。当执行方法运行时,我想知道FireDAC的内部进度,以便可
您好,我正在使用Firebird(2.5)作为数据库使用Firedac(Delphi Seattle),当我使用TFDQuery运行此查询时,未返回任何记录: SELECT ID FROM USERS
我创建了一个非常简单的控制台应用程序并尝试使用 Firedac 访问 Firebird 数据库。我正在尝试使用私有(private)定义设置来实现连接池,如下所述:http://docwiki.emb
我使用 Delphi XE7 和 FireDAC 来访问 SQLite。 当我将数据放入 TEXT 字段时,任何尾随空格或 #0 字符都会被截断。 我可以在 SQLite 或 FireDAC 中更改一
我正在开发一个在启动时带有登录表单的应用程序。 在用户写入登录数据之前,我想谨慎地连接到 SQL 服务器。 问题是,当我的服务器连接速度慢或路径错误时,应用程序正在寻找服务器或尝试连接,但此时应用程序
我目前正在开发一个多线程服务器应用程序,我计划使用 Firedac 进行数据访问。从此处提供的文档:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/
我主要在后台线程中使用FireDAC,偶尔在主GUI线程中使用。 根据文档,有4种可能的执行模式,在我看来,只有2种是合适的: amBlocking The calling thread and GU
我正在尝试使用 FireDac 查询数据库。这是我的代码; procedure TfSMSViewer.LoadSMSFromDatabase(path: AnsiString); var con
我在 MS SQL Server 上创建了以下存储过程 CREATE PROCEDURE sppl_ParamTest @ID int = 666 AS BEGIN SELECT @ID;
我将 FireDac 与 Oracle 12c 数据库和 Delphi Seattle 结合使用。 我有一张员工表 EmployeeID - NUMBER GENERATED ALWAYS AS ID
我使用的是这里的示例: establishing connection 这样做: procedure TDataModule2.DataModuleCreate(Sender: TObject); b
我正在尝试用 Firedac MemoryTables 替换 Delphi ClientDatasets,它运行良好,但在处理大数据时速度非常慢我在数据模块中创建 FireDac 内存表并从表单填充它
我无法使用以下指令更新数据库中的行: fdquery1.Edit; fdquery1.fieldByName('prova').AsString := 'asdasd'; fdquery1.Open
我正在将 XE6 与 FireDac 一起使用。我有一个 FDMemTable,其中 ItemVals 作为 ftfloat 字段。我想使用 SUM(ItemVals) 的聚合函数,但我只想添加值 >
如何使用 FireDac 组件检查 DBMS 是否支持事务? 通常,我使用类似以下代码的内容,使用 dbExpress 在我的 DAO 类中执行事务。 ... connection: TSQLConn
我正在 Delphi 10.1 Berlin 下使用 FireDac。 为了向用户显示数据,我使用 TDBEdit 等数据感知控件。 我使用 TFDQuery 和 TDataSource 将它们与控件
我正在尝试使用 FireDAC 中的宏来预处理我的 SQL 查询。我在数据模块上有一个 TADQuery 对象,其 SQL 设置如下: Select * from MyTable join Oth
我想将一个非空非自动递增整数作为我的主键,但我无法在设计时使用 Firedac 来做到这一点。 TIntegerfield 没有任何参数可以让我将其设为主要参数。 TFDTable 也没有参数,我可以
我在 Firebird 数据库中定义了这个存储过程: create or alter procedure GET_MSG ( IDLNG smallint, IDMSG integer
我是一名优秀的程序员,十分优秀!