Create table 的问题(20分)

  • 主题发起人 主题发起人 烂泥
  • 开始时间 开始时间

烂泥

Unregistered / Unconfirmed
GUEST, unregistred user!
D5+Sql7
with sql do
begin
clear;
add('create table alh');
add('(yj int,');
add('zp char(10),');
add('zdm int)');
end;
execsql;

>>>>>>>>No Problem


想循环建立
for i:=1 to 5
begin
with sql do
begin
clear;
add('create table :alh');
add('(yj int,');
add('zp char(10),');
add('zdm int)');
ParamByName('alh').asstring:='alh'+inttostr(i);
end;
execsql;
end;
》》》》》》》》》Error
why?
 
此时实际执行的语句为:Create Table 'alh1' (...) 自然出错
(用SQL7的Profiler可看到)
可动态写SQL语句,如果非要用TParams,我倒没试过
 
procedure TForm1.Button1Click(Sender: TObject);
var alh:string;
i:integer;
begin
with query1 do
begin
for i:=1 to 5 do
begin
alh:='alh'+inttostr(i);
with sql do
begin
clear;
add('create table '+alh+'');
add('(yj int,');
add('zp char(10),');
add('zdm int)');
end;
execsql;
end;
end;
end;
非要这样写?还有其他的办法吗!
 
PARAMS中参数的属性是不是也要在程序中附值>>
 
param并不是到处都可以替换作用,可替换的地方与数据库都有关系
比如interbase可以放的地方很少,ora就多
 
在 Interbase 中,表名、字段名不可以是参数。
 
试试用TAdoQuery:

.....

Parameters.paramvalues['alh']:='alh'+inttostr(i);
 
我找到解决的办法了。
 
多人接受答案了。
 
后退
顶部