2011-06-02 46 views
1

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

问:

是否有两个应用程序,以寻找在同一BDE别名的方式,但它指的是目录对于每个应用程序有什么不同?

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

回答

1

我发现了两个解决方案,都使用TDatabase组件。第一个解决方案,如果你的别名是MyAlias,则可以在打开之前的任何表,同时设置了aliasname的数据库名为“MyAlias”创建TDatabase的,那么你就可以打开的TDatabase并设置目录财产到您想要查找数据的位置。这将覆盖BDE中的别名与本地名称,并且任何表将从您指定的目录中打开。如果你将东西拉出默认会话(例如Session.GetAliasParams),这不起作用。

第二种解决方案是建立在BDE另一个别名(MyOtherAlias例如)和你的TDatabase组件的aliasname的设置为“MyOtherAlias”和数据库名为“MyAlias”,再次做到这一点,你打开之前任何表/查询。这似乎工作得更好,并与默认会话一起工作(如果您为“MyAlias”提取目录,则会为“MyOtherAlias”提供目录)。

这是非常深奥的,如果其他人发现它很有用,我会感到惊讶 - 但是这是什么使得stackoverflow非常适合回答难​​懂的编程问题。

3

使用别名的全部要点是能够在一个地方设置使用ONE文件夹。更改ALIAS会更改文件夹EVERYWHERE。

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

+0

是的,我完全意识到我正在绕过使用Alias的全部要点,但是它是重新编写应用程序(几十万行意大利面条代码)的重要工作。我正在重写应用程序,但它可能需要6个月才能有足够的功能来替换现有的应用程序。 – Alister 2011-06-02 22:17:56