明
明月剑
Unregistered / Unconfirmed
GUEST, unregistred user!
我要复制access数据库中的一个结构完全一样的表,但出现了让我头疼的问题,有三种情况,请看:
第一种情况:
procedure tfrmfm.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;
DesTable.IndexDefs.Assign(SourceTable.IndexDefs);
DesTable.CreateTable;
finally
SourceTable.Active:=oldac;
DesTable.Free;
end;
end;
以上的程序非常顺利,但复制出的数据库结构有问题,例如,我的字段有数字型,单精度,格式是固定,小数位是4,复制出的数据库字段是数字型,整型,格式无,小数位是自动。
第二种情况:
procedure tfrmfm.CopyTable(Table: TTable; TableName: string; Overwrite: boolean);
var
Props:CURProps;
begin
Check(DbiGetCursorProps(Table.Handle, Props));
Check(DbiCopyTable(Table.DBHandle, Overwrite, PChar(Table.TableName),
Props.szTableType, PChar(TableName)));
end;
以上的程序在运行时出错,说handle错误,
第三种情况:
Query1.SQL.Add('SELECT * INTO ysh FROM yanshouk');
这种和第二种出错是一样的,
请问这应该怎么处理,如果有好的方法,请不吝赐教!!!
第一种情况:
procedure tfrmfm.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;
DesTable.IndexDefs.Assign(SourceTable.IndexDefs);
DesTable.CreateTable;
finally
SourceTable.Active:=oldac;
DesTable.Free;
end;
end;
以上的程序非常顺利,但复制出的数据库结构有问题,例如,我的字段有数字型,单精度,格式是固定,小数位是4,复制出的数据库字段是数字型,整型,格式无,小数位是自动。
第二种情况:
procedure tfrmfm.CopyTable(Table: TTable; TableName: string; Overwrite: boolean);
var
Props:CURProps;
begin
Check(DbiGetCursorProps(Table.Handle, Props));
Check(DbiCopyTable(Table.DBHandle, Overwrite, PChar(Table.TableName),
Props.szTableType, PChar(TableName)));
end;
以上的程序在运行时出错,说handle错误,
第三种情况:
Query1.SQL.Add('SELECT * INTO ysh FROM yanshouk');
这种和第二种出错是一样的,
请问这应该怎么处理,如果有好的方法,请不吝赐教!!!