楼主 我用query1查询多个表结果显示在dbgrid中。我想修改查询到的结果。但是数据不能修改,是只读数据。我查了一下书,书中讲,要加另外一个query2用update语句修改query1中的数据才可以,但是书中没有讲的很清楚。请各位大哥讲一下,举一个例子,在下多谢了
----------
----------
解决方案 »
- 有关封装数据库操作的 dll问题
- 请教一下,运行时出现list index out of bound(1)是什么原因
- 用Delphi开放一个三层结构的Web应用程序,一般怎么做?要用到哪些控件(一定要是Delphi自带的)
- 请教高手一个问题,关于ADOQuery
- 如何删除Cookies下面的全部内容
- 谁能给我关于DELPHI中使用ADO的编程指南(给40分,在线)
- 各位大哥指点:PageScroller的用法。分都在这,这里先谢了!
- 数据库的类型为foxpro,如何通过query语句,创建视图
- 有关使用Dbgrid的DrawColumnCell的新问题!
- 请大虾教我:TApplication.ProcessMessages是做什么用的,怎么用(最好有例子)
- 如何写个程序获得IE地址栏里的URL地址~
- 显示问题????
如果需要修改可以结合TUpdateSQL + TQuery 来完成,理论上他两个的组合能修改任何只读视图。
具体看看帮助,挺好理解的。
query1.close;
query1.sql.add('select a.aa ,b.aa ,a.bb,b.bb,a.cc from a,b');
query1.sql.add('where a.aa=b.aa and a.bb=:bb')
query1.parambyname('bb'):=edit1.text;
query1.open;
之后我想修改查询到的数据,如a表的cc 的值(用程式修改,不是在dbgrid中修改)。
但是不能修改好像是只读数据,哪位讲一下。怎么样修改,tupdatesql+tquery怎么使用,大哥讲一下吧
如在加一个query又要怎么样做
至于多个表的问题,用SQL语言来控制,和单个表的区别不大。
query1.close;
query1.sql.clear;
query1.sql.add('select a.a1,a.a2,b.a1,b,b2 from a,b}
query1.sql.add('wherea.a1=b.a1)
query1.open;
这是查询到的数据。然后我用query2
i:=1;
j:=i;
K;=query1.recordcount;
for i:=1 to k do
begin
if i=j+100 then//第隔100就修改/query2.close;
query2.sql.clear;
query2.sql.add('update a)
query2.sql.add('set a1=....);
query2.execopen;;
程式运行后。把a表的a1值全改了
哪位大哥讲讲
----------------------------------------------
'update a set a1=....的作用就是修改a表的相应a1字段的全部值
而不是程式运行之前就写在updatesql中
query1.close;query1.sql.clear;
query1.sql.add('select a.id,a.a1,a.a2,b.a1,b,b2 from a,b}
query1.sql.add('wherea.a1=b.a1)
query1.open;
这是查询到的数据。然后我用query2
i:=1;j:=1;K;=query1.recordcount;
for i:=1 to k do
begin
query1.next;
if i=j+100 then//第隔100就修改/
query2.close;
query2.sql.clear;
query2.sql.add('update a)
query2.sql.add('set a1=....);
query2.sql.add('where id='''+query1.fieldbyname('id').asinteger+'''');
query2.open;
.....
endif如此,将两个query1和query2 通过ID字段连接起来了。你的query2才能修改正确记录。
query1.close;query1.sql.clear;
query1.sql.add('select a.id,a.a1,a.a2,b.a1,b,b2 from a,b}
query1.sql.add('wherea.a1=b.a1)
query1.open;//上面都一样
while not(query1.eof)do
begin query2.close;query2.sql.clear;query2.sql.add('update a);query2.sql.add('set a1=....);
query2.sql.add('where id='''+query1.fieldbyname('id').asinteger+'''');
query2.open;
query1.moveby(100);//query1向下跳转100条记录。
.....
end;
endif
tudpate+query的用法.及.+table用法也是一样的吗。update的sql语句可以在运行时写吗,不是在设计时写。如上面你的教的方法。在update中怎么样用呀。最后一个问题。明天就给分
begin query2.close;query2.sql.clear;query2.sql.add('update a);query2.sql.add('set a1=....);
query2.sql.add('where id=:id); query2.parambyname('id').asinteger:=query1.fieldbyname('id').asinteger;
query2.open;
query1.moveby(100);//query1向下跳转100条记录。
.....
end;