【发布时间】:2025-11-22 08:55:02
【问题描述】:
我无法在我的程序的多个实例中打开某个表。 发生的事情是我试图允许用户打开并用旧表(不包含在数据字典中)替换当前表(数据字典的一部分 - FileForm.ImagesTable)。它适用于程序的一个实例,但是当我们尝试在另一个实例上同时打开同一个文件时。我收到以下错误。
FileName.ADT 此文件正在使用中。输入新名称或关闭在其他程序中打开的文件。
下面是我将表名和数据路径重新分配给所选表的代码。
OpenDialog1.FileName := '*.adt';
OpenDialog1.Filter := 'Software 6.0 Files (*.adt)|*.adt|Software 5.x Files (*.dbf)|*.dbf';
OpenDialog1.InitialDir := DataPath;
if OpenDialog1.Execute then
begin
Str1 := Trim(OpenDialog1.FileName);
if Length(Str1) = 0 then
Exit;
DSImage.Enabled := False;
with FileForm.ImagesTable do
begin
Active := False;
AfterOpen := FileForm.TableOther.AfterOpen;
DataBaseName := ExtractFilePath(Str1);
TableName := ExtractFileName(Str1);
Active := True;
end;
end;
编辑 *使用Advtantage 8.1,似乎是一个窗口错误,因为错误发生在对话窗口中。是的 Exclusive 设置为 false。
感谢您对为什么会发生这种情况以及如何解决此问题的任何想法。
谢谢
【问题讨论】:
-
Trevor:如果您尝试对表进行结构更改,您可能需要独占(锁定)访问。尝试专门打开表以执行重组。
-
您能否更具体地了解该错误?是 Advantage 错误还是 Windows 错误? (我认为这不是重组问题,但@Robert 的评论可能仍然适用:您检查过
ImagesTable.Exclusive属性吗?如果您在应用程序的第一个实例中使用Exclusive = True打开它,第二个会出现错误关于尝试打开它。) -
嘿罗伯特,我要替换的表与现有表的结构相同。
-
请说明具体的错误类型(Windows 或 ADS)。如果您不确定,请对错误对话框进行屏幕截图并将其添加到您的答案中。
-
我添加了错误截图。谢谢
标签: delphi delphi-xe advantage-database-server