gpt4 book ai didi

mysql - 为 MyDAC 定义自定义 POST 方法

转载 作者:行者123 更新时间:2023-11-29 03:44:20 25 4
gpt4 key购买 nike

我有三个表objects,(主键object_ID)flags(主键flag_ID)和object_flags(objectsflags 之间的交叉表,带有一些额外信息)。

我有一个查询返回所有标志,如果给定对象具有特定标志,则返回 1 或 0:

SELECT
f.*,
of.*,
of.objectID IS NOT NULL AS object_has_flag,
FROM
flags f
LEFT JOIN object_flags of
ON (f.flag_ID = of.flag_ID) AND (of.object_ID = :objectID);

在应用程序(用 Delphi 编写)中,所有行都加载到一个组件中。用户可以通过单击表格中的复选框、修改数据来分配标志。

假设编辑了一行。根据 object_has_flag 的值,必须执行以下操作:

  • 如果 object_has_flag 为真并且仍然为真,则应该对 objects_flags 中的相关行进行更新。
  • 如果 object_has_flag 为假但现在为真,则应该完成 INSERT
  • 如果 object_has_flag 为真,但现在为假,则应删除该行

这似乎不能在一个查询中完成 https://stackoverflow.com/questions/7927114/conditional-replace-or-delete-in-one-query .

我正在使用 MyDAC 的 TMyQuery 作为数据集。我已经编写了单独的代码来执行必要的查询以保存对行的更改,但我如何将其与数据集耦合?我应该使用什么事件处理程序,我如何告诉 TMyQuery 它应该刷新而不是发布?

编辑:显然,问题是什么并不完全清楚。不能使用标准的 UpdateSQL、DeleteSQL 和 InsertSQL,因为有时在编辑 一行(不是删除它或插入一行)之后,INSERTDELETE 必须完成。

最佳答案

简短的回答是,解释一下你的答案 here :

  • 查找“使用 MyDAC 数据集组件更新数据”的文档(从 MyDAC 5.80 开始)。

每个 TCustomDADataSet(例如 TMyQuery)后代都可以使用 SQLInsertSQLUpdateSQLDelete< 设置更新 SQL 语句/em> 属性。

TMyUpdateSQL 也是一个很有前途的自定义更新操作组件。

关于mysql - 为 MyDAC 定义自定义 POST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455878/

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