我用Query将两张表的记录查询的结果显示在DBGrid控件上,不知道如何删除和修改选定的记录(10分)

  • 主题发起人 主题发起人 铱鑫
  • 开始时间 开始时间

铱鑫

Unregistered / Unconfirmed
GUEST, unregistred user!
查询的语句如下:select a.date, b.money,a,memo from a, b;

我在DBGrid上选好了一条记录(同时有表a和表b中的字段),
不知如何通过其他TQuery或ADOQuery控件删除和修改这条在 表a 中
对应的记录,我不知道如何定位那条记录,如果能够在 表a 中定位
那条记录,可是我用SQL语句如何删除那条记录呢,用“delete from
currnt of ”??可是我不知道表的名称,我没有使用Table控件。谢谢
拜读,希望能得到高手指点迷津。
 
你可以做一个主从表,主表显示你查询的内容,从表则用来删除或修改
所定位的记录;
用sql删除单条记录,可加上“where”,如“delete from 表名 where 条件”
 
两个DBGrid,
一个是主表,一个是细表
 
select a.date, b.money,a,memo from a, b
这样可是a,b两表的所有组合啊,一般是没道理这样做的 :)
你可以应该多读出一个a表的主键,或关键字段(在dbgird显示时隐藏) 如:
select a.你的关键字 a.date, b.money,a,memo from a, b where a表和b表的连接条件
如果你已经在dbgird上选择了一条记录,就可以根据tquery.fields[0].value获得你选择记录的
关键字,在用 delete from a where 你的关键字 = ###来删除了 当然你的删除操作要另一个
ttable 或 tquery
 
把这个 TQuery 连到一个 updateSQL 上,修改其 insertSQL. ModifySQL DeleteSQL属性
再把 query 的 cachedupdate 属性设为 true,以后对 query 的操作就会自动映射成
对原表的操作
 
updateSQL 就可以完成一切要求
 
用另一个Query,它的SQL这样写:
'delete 表名 where 主键='+DBGrid1.DataSourse.DataSet.FieldByName('主键')AsString
 
用临时表吧!
把两个表的有用字段写在一个临时表中
操作完以后再分开,挺方便的,我以前也用过!
试试吧!luck!
 
的卡机? :)
好象都可行啊!
 
好像可以使用adoquery,据李维介绍说支持多表操作
 
当query查询两个表时,结果是只读属性.因此,必须要两个query,一个用来查询,一个用来修改.
query2的requestlive 属性在设计时设置为true,就可修改.
删除操作:query2.delete;删除当前记录.
 
以上的方法都有道理。
主要看是否能根据 DBGRID 中选定的记录信息唯一确定出a表中的记录,
除非你是希望删除符合条件的多条记录,
可用类似的方法:
设你的DBGRID的数据绩控件名为query1,
填加另外一query2,并初始数据源,

query2.sql.clear;
sqlstr:='delete from a where date='''+query1.fieldbyname('date').asstring+''' and memo='''+query1.fieldbyname('memo').asstring+'''';
query2.sql.add(sqlstr);
query2.execSQL;
 
用DBGRID的ONCELLINGCLICK就可做到呀!
 
query2.sql.clear;
sqlstr:='delete from a where date='''+query1.fieldbyname('date').asstring+''' and memo='''+query1.fieldbyname('memo').asstring+'''';
query2.sql.add(sqlstr);
query2.execSQL;
这和hongfengluo说的去做可以啦。
不过,我一向都是用同一个clientdataset,在三层中,注意的是
select * from table.这句要是动态的,不要在设计时就定死啦。

 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部