如何在dbgird显示数据之前,删除数据库中选择出来的重复数据

sw519 2012-02-24 11:10:53
数据库中通过ADOQuery写入到dbgird中,我希望在写入dbgird之前对数据进行判断和帅选,这个帅选不在sql语句中进行,而是在ADOQuery写入到dbgird的过程中进行,我网上找了下说是在Beforepost中进行处理,但是不知道是添加哪个控件下面的Beforepost的处理,Beforepost的处理具体是怎么进行的,最好有相关的例子代码可以参考。

我这个主要是通过判断数据库中某一个关键字,如果出现了带这个关键字的多条数据的话,则在dbgird中只显示一条。
...全文
132 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaikai_kk 2012-03-06
  • 打赏
  • 举报
回复
更正LZ概念,dbgird不是ADOQuery写入的,ADOQuery是直接写入到数据库中
dbgird是感知控件,对Dataset实时显示,还可以编辑(实际上是操作是对应的Dataset)

判断重复在ADOQueryBefore事件,用另一个ADOQuery查询表中数据來判断:
adoquery2.close;
adoquery2.sql.text:='select 1 from t where id='+inttostr(ADOQuery1.fieldbyname('id').asinteger);
adoquery2.open;
if not adoquery2.isempty then
begin
showmessage('id重复');
abort;//中止提交
end;
mhhaifeng 2012-03-06
  • 打赏
  • 举报
回复
不用dbgird控件 用listview 自已写数据进去显示!
用dbgird数据 也不直接关联 自己写数据进去
程晨c 2012-03-05
  • 打赏
  • 举报
回复
select * from 表名 as table1
where 字段名 in (select top 1 字段名 from 表名 as table2 where table1.字段名=table2.字段名 order by 字段名)
jopi 2012-03-05
  • 打赏
  • 举报
回复
先DisableConstraints,在ADOQuery.Open之后,进行数据检查,删除重复项,然后EnableConstraints
bdmh 2012-02-24
  • 打赏
  • 举报
回复
ADOQuery有beforepost事件,提交前可以根据关键字,先delete from 掉
sw519 2012-02-24
  • 打赏
  • 举报
回复
to bdmh 提交前可以根据关键字,先delete from 掉 ,这个能说具体点吗,我要判断两天相同的数据的一个key值,如果相同就删掉,这个如何判断两条的key值相同,实际上我并不关心这个key是多少,只知道只要有key相同的记录,我就任意取一条显示在dbgird上。
我看见佛 2012-02-24
  • 打赏
  • 举报
回复
ADOQuery.Sql.Text:='delete table1 where key = ';
ADOQuery.Execute();

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧