gpt4 book ai didi

delphi - Advantage 表文件在使用中出错。我该如何解决?

转载 作者:行者123 更新时间:2023-12-03 18:19:10 28 4
gpt4 key购买 nike

我无法在我的程序的多个实例中打开某个表。发生的事情是我试图让用户打开并用旧表(不包含在数据字典中)替换当前表(数据字典的一部分 - 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。

error


如有任何关于为什么会发生这种情况以及如何解决的想法,我们将不胜感激。

谢谢

最佳答案

您不清楚具体错误 - 是 Windows 错误还是 Advantage 错误?

如果是 Windows 错误,可能是因为您指定了对表的独占访问权限 (ImageTable.Exclusive = True)。这意味着应用程序的第一个实例可以打开它,但随后的尝试将失败并出现 File is in use 错误。

如果是 Advantage 错误,Advantage 帮助文件(在 v11's documentation 中,因为您没有指定 ADS 的版本 - 请注意它在框架中,因此您可能需要使用 this link,导航至 Advantage Developers Guide,展开Part 1->Chapter 4 - Dictionaries->Understanding Dictionaries 主题)说:

A data dictionary is a special file that serves as the sole access point for database tables

注意唯一访问点。一旦表在数据字典中,它就属于数据字典。您试图用字典范围之外的内容替换该引用,这是不允许的。我很确定问题与此有关 - ADS 对字典中包含的表进行专有锁定,并通过字典控制通过服务器访问这些文件。

您需要从字典中删除该表并将其用作自由表,或者想出一种不同的策略来删除当前数据并将其替换为其他数据以保持字典的完整性。

关于delphi - Advantage 表文件在使用中出错。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539001/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com