1

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

问题:

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

或者

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

4

2 回答 2

3

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

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

于 2011-06-02T04:59:24.597 回答
1

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

第二种解决方案是在 BDE 中设置另一个别名(例如 MyOtherAlias)并在您的 TDatabase 组件上将 AliasName 设置“MyOtherAlias”,将DatabaseName设置为“MyAlias”,在打开任何表/查询之前再次执行此操作。这似乎工作得更好,并且适用于默认会话(如果您拉出“MyAlias”的目录,它将提供“MyOtherAlias”的目录)。

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

于 2011-06-14T23:50:11.070 回答