2011-04-14 30 views
14

我想讀這樣的ADOBD.Recordset對象加載類型ADODB.FieldsToInternalFieldsMarshaler「(我的第一次,所以原諒我「noobness」:d):ADODBCould不是從裝配

Presentation.Category categorySvc = new Presentation.Category(); 
ADODB.Recordset categories = categorySvc.ListAll("BE", "DUE", "EN", 128); 
foreach (var category in categories.Fields) // here is where I get the exception 
{ 
    // ... 
} 

的ListAll調用工作正常 - 我得到了一些數據的Recordset,我通過在對象上做一個QuickWatch來確認。但是,當代碼達到categories.Fields我得到以下異常:

未能加載 型「ADODB.FieldsToInternalFieldsMarshaler」 從程序集「TestCOMCalls, 版本= 1.0.0.0,文化=中立, 公鑰= NULL。

我googled這個錯誤(或只是'ADODB.FieldsToInternalFieldsMarshaler',找不到任何可以幫助我的問題)。

我想知道,我是否缺少參考?除了正常的引用我加入這一個我的項目:

ADODB Microsoft ActiveX數據對象2.5庫 C:\ WINDOWS \裝配\ GAC \ ADODB \ 7.0.3300.0__b03f5f7f11d50a3a \ ADODB.dll

就像我說的,我從來沒有這樣做過,但通過使用google搜索,我能夠看到一些人這樣做(foreach上object.Fields),它似乎爲他們工作。

任何幫助或方向是非常感謝:)

謝謝!

回答

1

好吧,我想如何做到這一點:

Presentation.Category categorySvc = new Presentation.Category(); 
ADODB.Recordset categories = categorySvc.ListAll("BE", "DUE", "EN", 128); 
categories.MoveFirst(); 
while(!categories.EOF) 
{ 
    var fields = ((dynamic)categories).Fields; 
    for (int i = 0; i < fields.Count; i++) 
    { 
     var field = fields[i]; 
     var name = field.Name; 
     var value = field.Value; 
     // ... 
    } 
    categories.MoveNext(); 
} 
0

看看我在這個問題上here找到。我引用了你的,但仍然無法讓ADODB工作。

+1

我看到你用這裏的參考更新了你自己的問題:http://connect.microsoft.com/VisualStudio/feedback/details/476238/error-while-using-adodb-recordset這真的對你有用嗎? – wdanda 2011-06-03 17:44:57

+0

這是正確的。這是缺少的一塊 – 2011-06-03 17:45:41

28

它在個人參考上 - 不在項目屬性中。在解決方案資源管理器窗口中,打開「參考」(在項目下),然後單擊相關參考。屬性窗口將有一個嵌入互操作類型(用於每個參考)的選項。

在Visual Basic 2010:

要關閉嵌入互操作類型:

項目菜單>顯示所有文件,解決方案管理器:>參考:> ADODB>嵌入Interof類型=假。 Microsoft.Office.Interop.Access>嵌入Interof類型=假

您現在就可以公佈,也ADODB將出現在:項目菜單>項目屬性...發佈TAB>應用程序文件

+0

我遇到了同樣的問題,這對我有用。 – nunzabar 2013-04-05 11:34:04

+0

感謝您的幫助。確實不是很直觀.... – fcm 2017-01-16 17:55:48

4

看看我在這個問題上發現了什麼。我引用了你的,但仍然無法讓ADODB工作。

小一個補充:

SolutionExplorer - >查看所有文件。 對於ADODB: - Embed ... = False; - 複製本地=真。

5

解決:

解決方案管理器 - >顯示所有文件(菜單項) - > Referances - > ADODB - >(屬性) - >嵌入互操作類型 - >假。

+0

它的工作!謝謝 – 2016-04-24 23:44:03

2

在VS 2013中遇到同樣的問題,解決方案是你去 參考並選擇ADODB,你將看到的屬性Embed Interof types = True然後將其改爲false。

+0

更多詳細信息:展開項目,展開引用,選擇ADODB,右鍵單擊,選擇屬性。 – 2016-06-17 18:06:37

+0

這對我有效! – NINtender 2016-09-13 17:48:22