关于用SQL语句来自动创建日期数据表名(100分)

  • 主题发起人 XdxDaxiong
  • 开始时间
X

XdxDaxiong

Unregistered / Unconfirmed
GUEST, unregistred user!
var _FileName :string;
begin
_FileName := 'MB200204'; //月报例子
?? _FileName :='MB'+年+月 //请问应该怎样做?
with Query_MB do
begin
Close;
SQL.Clear;
SQL.Add(' select * from sysobjects where name= :FileName ');
ParamByName('FileName').AsString := _FileName;
if (not Prepared) then
begin
SQL.Add(' create table :FileName ' );
SQL.Add('(编码 varchar(10) not null, ');
SQL.Add(' 姓名 varchar(10) not null, ');
SQL.Add(' 时间 varchar(20) null, ');
SQL.Add(' primary key(编码)) ');
end;
ExecSQL;
end;
end;

这样做对吗?请多多指教。
 
做一个存储过程吧 我也不知这样做是不对

create proc(@tablename varchar(20),@bianma varchar(10),@name varchar(10),
@dttime varchar(20))
as
begin
begin tran
declare @strsql varchar(200)
if exist(select * from sysobjects where name=@name)
return
set @strsql='create table '+@tablename+'( ' +'@bianma + 'varchar(10) ' +

exex(@strsql)
if @error<>0
rollback tran
else
commit
return
end
 
我觉得先用Close,SQL.Clear,SQL.Add,ExecSQL 判断该表是否存在.
若不存在,再用Close,SQL.Clear,SQL.Add,ExecSQL 创建表.
 
ugvanxk大虾:
那日期表名应该怎样做?
 
应该往里传递呀,如果有就不做退出,没有就创建
 
SQL.Add(' create table :FileName ' );
表名不能作为参数,必须这样: SQL.Add(' create table '+FileName );

而且,不是 if (not Prepared) then 创建
而是先open上一个sql,看有没有数据(Query1.IsEmpty)
没有的话 Close、 SQL.Clear ,然后再把create table的命令加上去、execSQL
 
接受答案了.
 
顶部