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

Delphi 多个用户访问相同的BDE别名,但访问不同的目录,delphi,alias,bde,Delphi,Alias,Bde,背景: 我有一个用Delphi编写的应用程序,它使用Borland数据库引擎(BDE),通过BDE别名查看数据。我已经设法通过远程桌面服务让它运行,每个用户都在同一个位置查看数据。如果每个人都想看相同的数据,这很好。但是,我希望能够让两组(或更多)用户查看不同的数据。我正在重写应用程序,以便这种情况是可能的,但我需要一个权宜之计 问题: 两个应用程序是否可以查看相同的BDE别名,但它所引用的目录对于每个应用程序都是不同的 或 是否可以让两个用户通过RDS(远程桌面服务-在Server 2008或

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

问题:

两个应用程序是否可以查看相同的BDE别名,但它所引用的目录对于每个应用程序都是不同的


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

使用别名的关键在于能够在一个地方设置为使用一个文件夹。更改别名会到处更改文件夹


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

使用别名的全部目的是能够在一个位置设置为使用一个文件夹。更改别名会到处更改文件夹


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

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

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


这是非常深奥的,如果其他人发现它有用,我会感到惊讶——但这就是为什么stackoverflow能够很好地回答晦涩的编程问题。

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

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


这是非常深奥的,如果其他人发现它有用,我会感到惊讶——但这正是stackoverflow在回答晦涩的编程问题方面的优势所在。

是的,我完全意识到我在回避使用别名的全部问题,但是重新编写应用程序是一项巨大的工作(数十万行意大利面代码)。我正在重写应用程序,但它可能需要6个月的时间才能具备足够的功能来替换现有的应用程序。是的,我完全意识到我绕过了使用别名的整个过程,但重写应用程序是一项重大的工作(数十万行意大利面代码)。我正在重写这个应用程序,但它可能需要6个月才能有足够的功能来替换现有的应用程序。