多个用户访问相同的BDE别名,但访问不同的目录

时间:2011-06-02 04:17:36

标签: delphi alias bde

背景: 我有一个用Delphi编写的应用程序,它使用Borland数据库引擎(BDE)通过BDE别名查看其数据。我已经设法通过远程桌面服务运行它,每个用户查看数据的相同位置。如果每个人都想查看相同的数据,那就太棒了。但是,我希望能够让两组(或更多)用户查看不同的数据。我正在重写应用程序,以便这种情况成为可能,但我需要一个权宜之计。

问题:

两个应用程序是否有办法查看相同的BDE别名,但它引用的目录对于每个应用程序是不同的?

是否可以让两个用户通过RDS(远程桌面服务 - 在Server 2008或SBS 2008/11下)登录以获得两种不同的BDE配置? (一个用户将别名DATA视为c:\ users \ joe \ data,另一个用户将其视为c:\ users \ bob \ data)。

2 个答案:

答案 0 :(得分:3)

使用别名的重点是能够在一个地方设置使用ONE文件夹。更改ALIAS会随时更改文件夹。

如果您不想使用ALIAS,请直接在您的应用程序而不是ALIAS中使用该目录,这可以通过TDatabase.DatabaseName完成(如果我的内存服务器很好 - 无法启动Delphi时刻来验证这一点。)

答案 1 :(得分:1)

我找到了两个解决方案,都使用了TDatabase组件。第一个解决方案,如果你的别名是MyAlias,你可以在打开任何表之前创建一个TDatabase,并将 AliasName DatabaseName 都设置为'MyAlias',然后你可以打开TDatabase并将 Directory 属性设置为您要查找数据的位置。这将使用本地覆盖BDE中的Alias,并且将从您指定的目录中打开任何表。如果你从默认的Session(例如Session.GetAliasParams)中提取东西,这不起作用。

第二个解决方案是在BDE(例如MyOtherAlias)中设置另一个Alias,并在TDatabase组件上将 AliasName 设置为'MyOtherAlias',将 DatabaseName 设置为' MyAlias',在打开任何表/查询之前再次执行此操作。这看起来效果要好得多,并且可以使用默认的Session(如果你拉出'MyAlias'的目录,它会给出'MyOtherAlias'的目录。)

这非常深奥,如果其他人发现它有用,我会感到惊讶 - 但这就是使stackoverflow非常适合回答模糊编程问题的原因。