2010-09-20 59 views
-1

我有一個Access 2007數據庫與附件設施。目前,客戶端可能會在本地上傳文件,但無法在其他地方訪問文件。在基於Web的系統上開發時,我已經能夠進行類似的操作,但是我似乎無法在Access 2007數據庫上執行此操作,並且我不確定這是否可行。基本上,系統需要在線連接到SQL服務器並上傳文件,儘管數據庫本身並不在線。我會很感激任何指針!訪問2007年到SQL服務器文件上傳?

+0

您的術語非常非常混亂。目前還不清楚在一個文件中是否有非分離的Access ACCDB表格和表單等,或者是否有ACCDB前端到SQL Server數據庫。 – 2010-09-20 21:35:46

+0

這是一個Access ACCDB,通過說'系統需要連接到在線sql服務器'我認爲它很明顯,它目前沒有連接到sql服務器。謝謝回覆。 – 2010-09-27 09:28:06

+0

因爲你的最後一句話並不能解決「數據庫」這個詞的含義 - 你的意思是SQL Server還是ACCDB文件? – 2010-09-27 18:17:30

回答

0

我已經遇到過這種情況。這裏是你的選擇:

  1. 在共享使用ACCDB訪問附件欄 - 將無法正常工作「在線」非常好,但你可以停放您的局域網上的ACCDB並使其獨立的後端ACCDB所有人共享。您的帖子沒有說明您的用戶是本地用戶還是「在線」用戶 - 「在線」是否意味着網絡。

  2. 使用SQL-Server中的VarChar(Max)(aka BLOB)字段來存儲附件。但是,您無法從Access輕鬆填充這些內容。假設您控制運行SQL Server的服務器,您可以使用Access中的ADO使用bulkinsert T-SQL命令上傳VarChar(Max)。這工作得很好,而且很簡單。

  3. 創建一個上傳網頁。在VBA中使用iExplorer自動化(即創建一個iExplorer對象)導航到該頁面,填寫並按上傳按鈕。出於安全原因,您不能使用自動化來填充文件上傳控件,但可以使用sendkeys。這並不完美 - 有時你必須重複這個過程一兩次,但如果它是由可以驗證其正常工作的用戶調用的,那麼它工作得非常好。這就是我所做的 - 最簡單的解決方案。

  4. 最好的解決方案可能是使用WCF創建一個Web服務來處理上傳。有很多關於如何編碼和解碼字節數組以將文件存儲爲VarChar(Max)的文章。它工作得非常好。不幸的是,據我所知,Access無法直接使用Web服務,因此您必須編寫一個小型vb.net程序來執行此操作,並從Access中調用它。

  5. 您可以將文件/附件存儲在SQL/Server之外 - 僅存儲在服務器上,並且只存儲Access中這些文件的鏈接/ URL。你可以讓每一個都可以啓動。這很容易但很難控制安全性。

  6. 您可以使用Sharepoint存儲/共享附件。這可以很好地工作,取決於附件的大小和連接性。它的構建是爲了支持這一點。

Access在一條記錄中允許多個附件。 SQL/Server不支持這一點。因此,如果您可以將您的ACCDB分爲僅用於程序的前端和用戶可共享以包含數據/附件的後端ACCDB,那麼這是迄今爲止最簡單的答案。