如何复制表的结构?(50分)

  • 主题发起人 主题发起人 jerrylong
  • 开始时间 开始时间
J

jerrylong

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使用代码来复制表的结构,比如现在有表A,如何用代码创建表B使其结构和表A一样?[?]
 
你是用的ado还是bde,什么数据库,。
 
bde+access2000
 
呵呵,最简单的方法是用SQL语句
select * into 新表 from 原表
where 1=2//表达式为假,即不复制任何记录。
 
最后一句话没看懂
 
呵呵,先告诉我行还是不行?:)
 
同意楼上。
如果是在一个数据库中的话。如果是两个数据库就不行了。
 
可以!但解释一下听听嘛!
 
我也是无意当中发现的。
insert into语句先复制表结构然后再复制相应记录。
where子句不是对记录进行过滤么?只有当where语句为真,记录才会选择,那么我就让where
子句恒为假.
 
可以编程序用copyfile,此法最简单拉
例如
copyfile(pchar('C:/table1.db'),pchar(目的路径名+'/table1.db'),false);
 
kingdeezj的方法是可以的,就是建表不复制记录.
to shuang:
数据库是access,不是paradox. m
 
我的目的是在“数据库”中根据表1的结构,生成结构和表1一样的空表表2。
我在程序中使用了一个Query控件,它的DatabaseName定义为“数据库”,其余保持默认值。
然后使用下列代码:
with Query do
begin
Close;
SQL_Clear;
SQL_Add('Select * into 表2 from 表1 where 1=2');
Active:=True;
end;

运行时提示“Error Creating Cursor Handle”,但检查“数据库”发现,表2已经生成了。为什么
出错?
 
怎么没有人回答?
 
with Query do
begin
Close;
SQL_Clear;
SQL_Add('Select * into 表2 from 表1 where 1=2');
ExecSQL;
end;
 
表是生成了,可能是因为where的原因.
你用异常处理一下,不显示提示出错误就行了.
 
procedure Tyhdf.CopyStru(SourceTable:TTable;NewName:String);
Var
DesTable: TTable;
oldac: Boolean;
begin
DesTable:=TTable.Create(nil);
oldac:=SourceTable.Active;
try
if not oldac then
SourceTable.Open;
DesTable.SessionName:=SourceTable.SessionName;
DesTable.DatabaseName:=SourceTable.DatabaseName;
DesTable.TableName:=NewName;
DesTable.FieldDefs:=SourceTable.FieldDefs;
SourceTable.IndexDefs.Update; //没有这句的话,索引不会copy
DesTable.IndexDefs.Assign(SourceTable.IndexDefs);
DesTable.CreateTable;
Finally
SourceTable.Active:=oldac;
DesTable.Free;
end;
end;
记得给分!
 
还是存在问题。
我用的数据库是access2000,但用上述的方法复制后,原先的单精度型(在SQL_Explore中
显示为Real型),变成了整型(在SQL_Explore中显示为Smallint)。
 
hbezwwl:
如何使用异常处理避免显示出错信息?这个问题解决了我就给分!
 
加上try...excpet就行了
 
使用try
...
excpet
...
end;//就行了。
 
后退
顶部