0

我運行的是Visual Studio 2012 express for the web,並在頁面上添加了一個asp下拉框。我試圖使用asp:AccessDataSource對象從訪問2007數據庫加載源代碼。該wizzard完成罰款。當我在網頁上運行這個頁面時,我收到了錯誤信息,告訴我該數據庫是無法識別的格式。我搜索了這個問題,發現visual studio不知道使用提供者Microsoft.ace.oledb.12.0,我需要修改連接字符串。AccessDataSource控件報表無法識別的數據庫

因爲我沒有編寫這個頁面的代碼,並依靠VS的可視化界面來生成代碼,我該如何找到修改它的代碼?或者我只是寫我自己的代碼,而不是依靠VS來爲我做?

回答

0

您可以使用頁面here上的示例代碼來顯示您的AccessDataSource正在使用的連接字符串。驗證連接字符串是否包含

Provider=Microsoft.ACE.OLEDB.12.0; 

以及到Data source的路徑是有效的。

FWIW,我只是試圖在Visual Web Developer 2010 Express下使用Access 2010數據庫重新創建您的問題,它對我來說工作得很好。我也找不到任何證據表明AccessDataSource的連接字符串在Web.config或其他地方的任何地方實際上是「寫下來的」。

+0

我從Visual Web Developer 2010 Express開始,無法理解訪問2007 DB的格式。這就是爲什麼我升級到2012年,仍然沒有去。奇怪的是,VS可以在數據源wizzard中顯示預期的輸出,但在網絡中它抱怨數據庫格式。我甚至將數據庫從2010年訪問降級到2007年,這並沒有幫助。 – RCDAWebmaster 2013-05-02 19:06:36

+0

@ user1617356這很奇怪,因爲我沒有做任何特別的事情來使我的測試用例能夠工作,但是**(1)**我的測試盒是32位Windows Server 2003,**(2)**它有Office 2010和VWD Express 2010.它可能是32位和64位的問題,但這只是一個猜測。運行時連接字符串是否有效? – 2013-05-02 20:20:23

+0

好的。我最近升級到了一個贏得7個64位的盒子。我有辦公室2007年和VD 2012. 在前幾頁我直接編寫的代碼,並能夠使一切工作。然後我想在另一個窗體上利用VS的ASP對象,所以我可以嘗試在不寫javascript的情況下生成輸入驗證。那是我注意到這個問題的地方。最糟糕的部分是,我必須處理的是隱藏任何代碼的ASP對象。 也許這是一個64位的問題,但我傾向於懷疑它,因爲我會看到更多關於此的帖子。 64位操作系統現在已經有幾年了。 – RCDAWebmaster 2013-05-03 13:08:38

0

根據this blog entry

AccessDataSource控件

我越考慮越無意義這個控制在我看來。唯一的好處就是它的工作原理。但是,它僅適用於.mdb格式,因爲它在內部調用Jet Provider,並且不能更改。你不能用密碼保護的文件中使用它,因爲它會自動從.mdb文件的位置,你喂DataFile屬性生成連接字符串

因此,我將不得不與.mdb文件工作或手動生成代碼。我投票手動創作。

+0

我同意,現在您需要連接到啓用了用戶級安全性的'.mdb'文件,AccessDataSource控件可能不適用於您。然而,正如我在我的回答中所說的那樣,它*可以*使用'.accdb'文件;我自己做的。 – 2013-05-03 19:31:50