首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为MyDAC定义自定义POST方法

为MyDAC定义自定义POST方法
EN

Stack Overflow用户
提问于 2011-12-10 10:33:44
回答 2查看 898关注 0票数 2

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

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

代码语言:javascript
复制
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的值,必须执行以下操作:

如果objects_flags.

  • If
  • 为true,但仍为true,则应对 object_has_flag中的相关行执行更新,该更新为false,但现在为true;插入应执行
    • ,如果object_has_flag为真,但现在为false,则应删除

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

我使用MyDAC的TMyQuery作为数据集。我编写了单独的代码,执行必要的查询以保存对一行的更改,但如何将其与dataset相结合呢?我应该使用什么事件处理程序,以及如何告诉TMyQuery它应该刷新而不是post?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-18 14:25:25

似乎最简单的方法是使用BeforePost事件,并使用几个字段的OldValueNewValue属性确定要做什么。

票数 0
EN

Stack Overflow用户

发布于 2011-12-15 12:46:16

简单的回答是,套用你的答案here

  • 查找用于“用MyDAC Dataset组件更新数据”的文档(截至MyDAC 5.80)。

每个TCustomDADataSet (如TMyQuery)后代都能够使用SQLInsert、SQLUpdate和SQLDelete属性设置update SQL语句。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8455878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档