这条语句如何写(50分)

  • 主题发起人 主题发起人 粒粒小
  • 开始时间 开始时间

粒粒小

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL.ADD('UPDATE Table1 a, Table2 b in "d:/xxxx.mdb" SET a.field0=b.field0 where a.field1=b.field1');

Access
运行时语法错误,不知如何写才对,请指教。
 
各位大爷请知言
 
一条语句能同时更新两个表?没试过
 
表里面的数据可能多条,而你使用的又是access,那就只有循环执行了撒,先把第二个表中的field1选出来,执行这个语句:
with adoquery1 do
begin
close;
sql.clear;
sql.add('select distinct field1 from b');
open;
end;
while not adoquery1.eof do
begin
with adoquery2 do
begin
close;
sql.clear;
sql.add('update table_a set field0='+adoquery1.fieldbyname('field0').asstring+' where field1='+adoquery1.fieldbyname('field1').asstring);
execsql;
end;
end;
只有这样来一条一条的更新哈.
 
我试过了,把你数据库名字串"d:/xxxx.mdb"中的双引号换成单引号即可
 
换成单引号肯定不行。单引号是delphi的字符串,字符串与字符串之间没加号连接能通过编译?
 
'UPDATE Table1 a, Table2 b in '+QuotedStr('d:/xxxx.mdb')+' SET a.field0=b.field0 where a.field1=b.field1'
 
access中不能这么些语句,update后面只能跟一个表。
 
用嵌套试试
 
要是能这样改的话,我来学习学习.
 
同意在世寻欢的,楼主可以试试
 
俺也来学习学习,我觉得update一次只能更新一个表
 
SQL.ADD('update table1 a, [d:/xxxx.mdb].table2 b'
+#13#10'set a.field0=b.field0'
+#13#10'where a.field1=b.field1');
 
ACCESS与SQLSERVER中的UPDATE语句对比:
SQLSERVER中更新多表的UPDATE语句:
UPDATE Tab1
SET a.Name = b.Name
FROM Tab1 a,Tab2 b
WHERE a.ID = b.ID;
同样功能的SQL语句在ACCESS中应该是
UPDATE Tab1 a,Tab2 b
SET a.Name = b.Name
WHERE a.ID = b.ID;
即:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后.
上例中如果Tab2可以不是一个表,而是一个查询,例:
UPDATE Tab1 a,(Select ID,Name From Tab2) b
SET a.Name = b.Name
WHERE a.ID = b.ID;
 
我是菜鸟,多多指教.随便逛逛.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
734
import
I
后退
顶部