TTable动态创建的错误(200分)

  • 主题发起人 主题发起人 清风杨
  • 开始时间 开始时间

清风杨

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:
  本人在使用了Table控件,然后动态创建表,代码如下:
  begin
Tabletmp.DatabaseName:=ExtractFilePath(Application.ExeName)+'Temp';
Tabletmp.Close;
Tabletmp.TableName:='Noname_baojing.db'; //检查临时表是否存在 如果没有存在 创建一个
if Not Tabletmp.Exists then
begin
With Tabletmp do
begin
FieldDefs.Add('No',ftInteger);
FieldDefs.Add('Name',ftString,20);
fieldDefs.Add('tp_dtime',ftString,20);
fieldDefs.Add('gb_dtime',ftString,20);
FieldDefs.Add('Long',ftString,15);
end;
Try
TableTmp.CreateTable; //创建临时表
except
showmessage('创建表失败');
exit;
end;
end
else
Tabletmp.EmptyTable;

因为有几个类似的过程,在调用的时候,如果有两个以上的表不存在,就会出现 A companent named no has exist 的错误 ,但是在操作的时候,我已经更换的表名,关闭了数据集

请教各位,问题出现的原因? 以及解决方法
 
要首先 create();
 
goddy:
要首先 create();???

 不明白?? 请教??
 
大家帮帮忙,我现在弄的晕头转向了。
 
我自己顶一下!
 
有没有帮忙呀~~
 
你的代码没有问题,测试可以通过
前提是temp目录要存在.不然就报错.
dirpath := AppPath + 'temp/';
if not DirectoryExists(dirpath) then
ForceDirectories(dirpath);
 
lihoulong:

因为有几个类似的过程,在调用的时候,如果有两个以上的表不存在,就会出现 A companent named no has exist 的错误 ,但是在操作的时候,我已经更换的表名,关闭了数据集。

比如 我先运行生成Noname_baojing.db 然后执行另一个类似的过程,字段一样,表名为Dch_baojing.db 时就会出现A companent named no has exist 的错误,但是在操作的时候,我已经更换的表名,关闭了数据集。
 
你是创建TTable控件还是创建一个数据库表?
控件的话, 必须Create啊。这样才可以使用啊。
 
创建数据库表!
 
var
strTbl, strPath: string;
begin
strPath := ExtractFilePath(Application.ExeName) + 'Temp';
strTbl := strPath + '/' + edtTbl.Text; //这里模拟多次调用
if Trim(strTbl) = '' then exit;
if FileExists(strTbl) then
begin
ShowMessage('表 [' + strTbl + '] 已经存在了,换个名吧!');
exit;
end;

Tabletmp.DatabaseName := strPath;
Tabletmp.Close;
Tabletmp.TableName := strTbl;
if not Tabletmp.Exists then
begin
with Tabletmp do
begin
FieldDefs.Clear; //这一句重要
FieldDefs.Add('No', ftInteger);
FieldDefs.Add('Name', ftString, 20);
fieldDefs.Add('tp_dtime', ftString, 20);
fieldDefs.Add('gb_dtime', ftString, 20);
FieldDefs.Add('Long', ftString, 15);
end;
try
TableTmp.CreateTable; //创建临时表
except
showmessage('创建表失败');
exit;
end;
end
else
Tabletmp.EmptyTable;
end;
 
谢谢!!~~ 这是我要的答案
 
后退
顶部