问题标签 [tdataset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 如何使用 TDataset.AfterPost 记录对数据的所有更改?
我想通过循环遍历 tdataset.afterpost 事件中的更改来记录在数据集 Post 事件中发布的所有更改。
我使用数据感知控件,我想存储用户所做的更改。
我的目标是为我的应用程序中的所有数据集执行此操作,但作为起点,我想在单个数据集中掌握它。
执行此操作的可取技术是什么?
type-conversion - C++Builder - 不能从“AnsiString”转换为“TObject”
我在将字符串变量转换为TObject
.
我有一个向我返回两列的查询。在第一列中varchar
,我有转换为字符串的值,在第二列中,我有int
值。
我想用这些值以这种方式填充 ComboBox:
当我提到第二个 int 类型的值时,我收到了一些灌木丛,例如 xD 等。
通过尝试将此值转换为字符串,例如:
我收到一条错误消息:
无法从“AnsiString”转换为“TObject”
我不知道我还能做些什么来转换这个值。
delphi - Delphi,在 where 条件中带有 DetailFields 的 Master-Detail(不在选择部分中)
我正在使用主从连接来显示详细表的分配列的列表。此外,我想显示第二个未分配详细信息列的网格
示例 Master-Table t_human: idHU, nameHU (like John, Oscar, ...)
Detail-Table t_property: idPO, namePO (like male, female, 金发, beard, blue eyes...)
Join-Table t_hu_po: idHU , idPO
-> John - 男,金发
-> Oscar - 男,蓝眼睛,胡须
当我选择一个主表行时,我想显示分配的属性以及未分配的属性。分配属性的主详细信息工作正常。但是对于未分配的属性不起作用。
细节-SQL:
select p.idPO, p.namePO
from t_property p
where not exists (select * from t_hu_po hp where hp.idHU = :idHU and hp.idPO = p.idPO)
主 SQL:
select idHU, nameHU from human
当我尝试选择 delphi 组件(Devart、SDAC、TMSQuery)中的详细信息字段时,它只显示 p.idPO 和 p.namePO 的字段。语句中的 :idHU 参数配置为组件中查询的参数。当我idHU
在数据集(TMSQuery)的 DetailFields 属性中手动键入时,我在激活查询时从 delphi获得了一个无效的列名“idHU” 。
有人知道比使用数据更改事件和手动设置详细参数并刷新详细查询更好的解决方案吗?我的想法是,主细节会做同样的事情,但只是在后台,所以我没有做代码。
谢谢
斯蒂芬
delphi - 如何获取数据集的表名?
我如何获得TableName
a DataSet
?
我试过这个:
delphi - 如何在运行时分配 TFDMemtable AfterPost 和 AfterDelete 事件?
我有一个由多个表单共享的 DataModule,并且我构建了一个过程来处理作为参数传递的 TFDMemtable。为了处理它,我必须禁用事件 AfterPost 和 AfterDelete 并且在结束处理时我必须重新启用它们。我没有成功启用它们,因为我无法以“actualnameAfterpost”的形式获取这些事件的实际名称。
我试过了 :
这是主要代码:
谢谢大家!
delphi - 如何在内部处理不显示在 tDBGrid 上的过滤 tDataSet 记录结果
在下面的 tFDMemTable 中,我尝试对 ID 字段以 A.A1、A2 开头的记录的值求和,结果应为 4。
我编写了以下代码,但它将 tDBGrid 更改为已过滤。我想要的只是一个 tDBGrid 应该保持不变的内部过程。
我知道 tDataSet.Locate 不允许 NEXT SEARCH 我尝试了这样的原始方式。它工作正常,但似乎有点愚蠢。
当我断开 tFDMemTable 和 tDBGrid 或在过滤之前设置为非活动状态以保持最后一个网格状态时,网格将变为空白。最后一个代码是最好的解决方案,还是有更好的方法在过滤工作时显示未过滤的结果?
delphi - 为什么 tDataSet.Append 不自动调用 Post
Delphi tDataSet.Append 似乎没有调用 Post。在其参考中它说
更改数据集状态的数据集方法(例如 Edit、Insert 或 Append)或从一条记录移动到另一条记录的数据集方法(例如 First、Last、Next 和 Prior)会自动调用 Post。
但我没有在下面的代码中看到增加的 RecordCount。
如果我在 Append 之后插入 FDMemTable1.Post,结果显示 RecordCount 为 1。
delphi - 如何传递 DataSet:TDataSet 作为过程参数
我正在设置一个新程序,它将在执行查询后显示一条消息。我正在使用“AfterOpen”事件,我必须传递“DataSet:TDataSet”参数。
有人可以解释一下 DataSet 变量是什么以及我必须将什么作为第一个参数传递给程序吗?
delphi-2009 - 如何从 TDataSet 一次读取整条记录?
我正在使用查询(实际上是来自 Devart 的 TMyQuery,继承自 TDataSet)从 mySQL 数据库中获取数据。通常我在while not eof
循环中使用fieldbyname()
.
由于某些处理很复杂,我想取而代之的是获取整个记录并将其传递给一个过程来处理远离循环的每个字段。
我认为这可能与该GetCurrentRecord()
方法有关,如果它被覆盖,该方法似乎返回一个指向 Byte 的指针,但是我不清楚如何从该指针中提取我的字段。
如果可以这样做,请有人告诉我获取一条完整记录的语法,将其作为参数传递,然后提取每个字段吗?
我通常使用的代码结构
我想做的伪代码
delphi - 随着列数的增加,运行时创建的 TTeeGrid 会变慢
我在 API 提供的运行时创建 TTeeGrid(TDataSet 后代)。我注意到随着列数的增加,性能下降。这意味着,创建 TTeeGrid 的时间越来越慢。
我正在这里开发 firemonkey 应用程序,当它达到 20 列或更多时,它在 iOS 和 Android 中的性能很明显。
这是我的代码:
有没有办法可以提高性能,或者我的代码中是否遗漏了一些导致性能变慢的东西?
更新 1:最小的可重现示例
FMX 文件
FMX 程序