procedure Tsfgl.FormCreate(Sender: TObject);
var maxno,tmp:integer;
begin
with adoquery2 do
begin
open;
first;
sql.Text:= 'update gl_xysf set sfxm = (select sfxm from jc_sfxm) where gl_xysf.sfid = jc_sfxm.sfid';
execsql;
maxno:=fieldbyname('sfxh').asinteger;
while not eof do
begin
tmp:=fieldbyname('sfxh').asinteger;
if maxno<tmp then maxno := tmp;
next;
end;
edit2.text :=inttostr(maxno + 1);
close;
end;
end;
var maxno,tmp:integer;
begin
with adoquery2 do
begin
open;
first;
sql.Text:= 'update gl_xysf set sfxm = (select sfxm from jc_sfxm) where gl_xysf.sfid = jc_sfxm.sfid';
execsql;
maxno:=fieldbyname('sfxh').asinteger;
while not eof do
begin
tmp:=fieldbyname('sfxh').asinteger;
if maxno<tmp then maxno := tmp;
next;
end;
edit2.text :=inttostr(maxno + 1);
close;
end;
end;
我想写成
sql.Text:= 'update gl_xysf set sfxm = (select sfxm from jc_sfxm where gl_xysf.sfid = jc_sfxm.sfid)';
但又出现如下提示:
操作必须使用一个可更新的查询
如果是sql200x,改为:
update gl_xysf
set gl_xysf.sfxm = jc_sfxm.sfxm
from gl_xysf
left join jc_sfxm on gl_xysf.sfid = jc_sfxm.sfid
试一试
的确,语句写错了。
我改成了这样
sql.Text:= 'update gl_xysf set sfxm =jc_sfxm.sfxm where gl_xysf.sfid=gl_sfxm.sfid';
但,在delphi7 运行时提示这个错误,好几天没研究出来为啥。参数jc_sfxm.sfid没有默认值。
这种错误,多是字段名写错了