H
Hecules
Unregistered / Unconfirmed
GUEST, unregistred user!
临时表的奇怪现象:
我在一个窗口(ShowModal方式打开)
在窗口的Create中创建临时表
Close中删除临时表
代码如下:
OnCreate(Sender);
begin
...
with ADOQuery_tmp do
begin
close;
with sql do
begin
clear;
Text := ' if exists(select name from tempdb..sysobjects where name like ' + '''' + '#temp123%' + '''' + ')';
Text := Text + ' drop table #temp123 ';
end;
ExecSql;
end;
with ADOQuery_tmp do
begin
close;
with sql do
begin
clear;
Text := 'create table #temp123(';
Text := Text + ' hpbh varchar(12) PRIMARY KEY, ';
Text := Text + ' hpmc varchar(22), ';
Text := Text + ' dj numeric(18,2), ';
Text := Text + ' js numeric(18,1), ';
Text := Text + ' je numeric(18,2), ';
Text := Text + ' ckm varchar(16))';
end;
ExecSql;
end;
...
end;
OnClose(Sender);
begin
...
with ADOQuery_tmp do
begin
close;
with sql do
begin
clear;
Text := ' if exists(select name from tempdb..sysobjects where name like ' + '''' + '#temp123%' + '''' + ')';
Text := Text + ' drop table #temp123 ';
end;
ExecSql;
end;
...
end;
但,我在使用:临时表时,却发现一个怪事:
本窗口,第一次:创建时,运行下面代码(无论运行多少次),正常。
但,关闭本窗口后,再打开时,再:运行下面代码,就提示:临时表无效。
请教:错误出在哪?如何改?谢谢
...
ttt := ' insert into #temp123 ';
ttt := ttt + ' select hpbh,hpmc,dj,js,(dj * js),ckm ';
ttt := ttt + ' from table_kc where (0=0)';
with ADOQuery_tmp do
begin
Close;
Sql.Clear;
Sql.Add('delete from #temp123');
Prepared := True;
Execsql;
end;
with ADOQuery_tmp do
begin
Close;
Sql.Clear;
Sql.Add(ttt);
Prepared := True;
Execsql;
end;
...
我在一个窗口(ShowModal方式打开)
在窗口的Create中创建临时表
Close中删除临时表
代码如下:
OnCreate(Sender);
begin
...
with ADOQuery_tmp do
begin
close;
with sql do
begin
clear;
Text := ' if exists(select name from tempdb..sysobjects where name like ' + '''' + '#temp123%' + '''' + ')';
Text := Text + ' drop table #temp123 ';
end;
ExecSql;
end;
with ADOQuery_tmp do
begin
close;
with sql do
begin
clear;
Text := 'create table #temp123(';
Text := Text + ' hpbh varchar(12) PRIMARY KEY, ';
Text := Text + ' hpmc varchar(22), ';
Text := Text + ' dj numeric(18,2), ';
Text := Text + ' js numeric(18,1), ';
Text := Text + ' je numeric(18,2), ';
Text := Text + ' ckm varchar(16))';
end;
ExecSql;
end;
...
end;
OnClose(Sender);
begin
...
with ADOQuery_tmp do
begin
close;
with sql do
begin
clear;
Text := ' if exists(select name from tempdb..sysobjects where name like ' + '''' + '#temp123%' + '''' + ')';
Text := Text + ' drop table #temp123 ';
end;
ExecSql;
end;
...
end;
但,我在使用:临时表时,却发现一个怪事:
本窗口,第一次:创建时,运行下面代码(无论运行多少次),正常。
但,关闭本窗口后,再打开时,再:运行下面代码,就提示:临时表无效。
请教:错误出在哪?如何改?谢谢
...
ttt := ' insert into #temp123 ';
ttt := ttt + ' select hpbh,hpmc,dj,js,(dj * js),ckm ';
ttt := ttt + ' from table_kc where (0=0)';
with ADOQuery_tmp do
begin
Close;
Sql.Clear;
Sql.Add('delete from #temp123');
Prepared := True;
Execsql;
end;
with ADOQuery_tmp do
begin
Close;
Sql.Clear;
Sql.Add(ttt);
Prepared := True;
Execsql;
end;
...