2012-07-19 58 views
9

我在問是否可以在.Net窗體中託管一個Microsoft Access窗體。是否有可能在.Net Windows窗體中託管Microsoft Access窗體?

不,我沒有生氣,我們正在維護一個完全由VBA編寫的大規模系統,由不知道很多VBA試圖將Microsoft Access用作IDE的人。它基本上是數以千計的意大利細麪條代碼,雖然我們很想廢棄並從頭開始,但這不是一種選擇。

因此,我們試圖改進那裏的東西,在這種特殊情況下,如果我們能夠以某種方式在Microsoft Windows窗體中託管Microsoft Access窗體,我們可以與.Net中的專有硬件進行交互比VB6更有效。

我們目前有一個.Net應用程序,它可以在用戶在任何時間打開的許多MS-Access數據庫上運行,並且.Net應用程序可以使用MS Access Interop與這些數據庫進行交互,並獲得不同程度的成功。這是因爲它使用表單標題和文件名/位置來獲取數據庫的句柄來完成它需要做的事情,並且還依賴於用戶不干涉/關閉應用程序/將數據庫移動到他們的桌面等。它是一點混亂。

因此,我問是否有可能以某種方式託管一個.net Windows窗體內的Microsoft Access窗體,通過可能將窗體本身添加爲控件或子窗體,以便能夠直接訪問.Net中表單上的所有控件?

+0

滾滾向前! – 2012-07-19 18:30:26

+3

這有點像火箭發動機捆紮在興登堡。 – BIBD 2012-07-19 18:43:05

+0

你甚至可以在.NET中添加對Access的引用嗎?如果是這樣,看看對象瀏覽器,看看是否有任何控制。我能夠添加一個名爲Access的引用,但沒有UI控件。 – Paparazzi 2012-07-19 19:04:48

回答

3

作爲短之外,我們開始之前,如果...

  • 你問如何託管只是一個單一的訪問形式沒有應用程序鉻;和
  • 你使用Access

的運行時版本...你觸犯Access運行時EULA的運行:

2.其他許可要求和/或使用權利。

...

II。分銷要求。對於您分發的任何可分發代碼,您必須...

  • 保持狀態欄包含用戶界面中顯示的「由Microsoft Office Access支持」語句,供用戶隨時查看;

它可能付費閱讀的EULA(它不是那麼長),只是爲了看看你能不能使用Access運行時進行。

因此,我問是否有可能以某種方式舉辦一個.net的Windows窗體中一個Microsoft Access形式,通過自身可能添加的形式作爲控制或子窗體,在某種程度上,這將使我直接從.Net訪問表單上的所有控件?

您可能想要反轉場景:run your .NET code inside Access

這基本上需要在Visual Studio中創建一個Access加載和操作的共享加載項。從那裏你可以連接控制和事件。

public void HookupControls(
    Access.CommandButtonClass button, 
    Access.ListBoxClass listBox, 
    Access.TextBoxClass textBox1, 
    Access.TextBoxClass textBox2) 
{ 
    fillProductsButton = button; 
    fillProductsButton.Click += 
     new Access.DispCommandButtonEvents_ClickEventHandler(
     fillProductsButton_Click); 
    fillProductsButton.OnClick = "[Event Procedure]"; 

    unitPriceTextBox = textBox1; 
    quantityTextBox = textBox2; 
} 

它需要從Access應用程序的一些合作:

With COMAddIns("SharedAddIn.Connect") 
    ''// Make sure the COM add-in is loaded. 
    .Connect = True 

    ''// Hook up the desired objects. 
    .Object.HookupControls Me.fillProductsButton, Me.productsListBox, _ 
     Me.unitPriceTextBox, Me.quantityTextBox 
End With 

免責聲明:我想嘗試這一點,但在Visual Studio 2012,似乎要創建共享外接缺少能力。因人而異。然而,有references to Shared Add-ins in the documentation,所以也許我錯過了一些東西,或者功能不在VS 2012 RC中。

+0

令人驚歎的答案,謝謝! – 2012-07-22 12:48:15

3

簡短的回答是「是」,長的答案是「......但它可能不值得麻煩」。

您可以發佈Access數據庫,包括通過SharePoint的表單和報表。我沒有真正做到這一點,但我研究了一個項目的選擇,我們又走了另一個方向。

詳情點擊這裏: http://office.microsoft.com/en-us/sharepoint-online-enterprise-help/build-and-publish-an-access-database-to-sharepoint-HA102435342.aspx

http://office.microsoft.com/en-us/access-help/introduction-to-integrating-data-between-access-and-a-sharepoint-site-HA010131463.aspx

+2

我們對傳統的Access數據庫有相同的想法,但VBA等的限制對我們來說太過分了。並不是說他們添加的用於幫助減輕VBA功能損失的新功能並不合適。相反,VBA太多了。 – 2012-07-20 22:31:45

相關問題