2011-06-02 63 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