读书人

DELPHI医院 SQL急诊解决思路

发布时间: 2012-02-11 09:51:34 作者: rapoo

DELPHI医院 SQL急诊
sql数据库
dbGrid浏览 编辑
其中一字段为逻辑字段,当某一记录的该字段修改为TRUE时,其它记录的该字段全部为FALSE

希望就在dbGrid的某事件中完成,请教. (提供说明或是代码均可)



[解决办法]
在修改字段值保存时,记住修改的记录的id,然后update不等于该id的这个字段值为False,然后重新load数据,再定位到这个id记录上
[解决办法]
afterpost
[解决办法]
数据源的afterpost事件
[解决办法]
方法一: 使用触发器
方法二: 在afterpost事件中写代码
[解决办法]
建议不要在触发器中写,因为要维护两处代码。
可以在afterpost里写,也可以在post动作后直接写处理语句。
参考代码如下:

注:Adoquery1与dbGrid关联,Adoquery2用于执行SQL语句。
修改某行记录的字段后,假设主键为keyid,值为123。
Adoquery1.post;
Adoquery2.sql.clear;
Adoquery2.sql.add("update table1 set column1 = false where keyid <> 123");
Adoquery2.Execute;

Adoquery1.reopen;

Adoquery1.close;
Adoquery1.open;

Adoquery1.locate(); 定位回主键为keyid,值为123的记录。

读书人网 >.NET

热点推荐