2011-02-24 43 views
3

我有這個網站的一些代碼CodeProjectLink將數據錶轉換爲記錄集。此代碼一直工作正常,直到我換到.NET 4(以前是2),現在當我打電話下面一行:奇怪的錯誤將字段附加到VS2010中的記錄集轉換爲.NET後4

Dim result As New ADODB.Recordset() 
result.CursorLocation = ADODB.CursorLocationEnum.adUseClient 

Dim resultFields As ADODB.Fields = result.Fields 
Dim inColumns As System.Data.DataColumnCollection = inTable.Columns 

    For Each inColumn As DataColumn In inColumns 
     ' The next line gives the error 
     resultFields.Append(
      inColumn.ColumnName, 
      TranslateType(inColumn.DataType), 
      inColumn.MaxLength, 
      IIf(inColumn.AllowDBNull, 
       ADODB.FieldAttributeEnum.adFldIsNullable, 
       ADODB.FieldAttributeEnum.adFldUnspecified), 
      Nothing) 

    Next 

我得到這個奇怪的錯誤:

錯誤:缺少方法' 'ADODB.InternalFields'類的實例無效MYDLLNAME ADODB.Fields :: Append(字符串,值類型ADODB.DataTypeEnum,int32,值類型ADODB.FieldAttributeEnum,對象)。

我試圖改變我行只是:

resultFields.Append(inColumn.ColumnName, TranslateType(inColumn.DataType)) 

,但是這給了同樣的錯誤。 TranslateType函數正確返回ADODB.DataTypeEnum.adVarChar,所以這似乎也有效

+0

我設法找到這個[1] http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvb/thread/f84cdc9c-f684-46d6-9b6f-757d047b00d5這將暗示這是VS2010中的一個錯誤,當您使用.NET 4.0但不提供解決方法時! – 2011-02-24 13:03:19

+0

你應該發表你的評論作爲答案。 – 2011-07-19 03:01:23

回答

0

對於任何對此感興趣的人,我都設法通過創建一個COM公開的自定義類來保存公共DataTable,我可以從中訪問我的VB6應用程序。因爲我沒有做任何數據綁定等,所以不需要轉換爲Recordset,所以不是所有場景的解決方案,但是在我的情況下是一個很好的解決方案。

2

我得到了同樣的錯誤,這是我如何發現這個問題。該修補程序如下所述。我在2010年有一個應用程序,我必須建立多個記錄集,通過附加字段來創建一些靜態字段,其中一些字段是從SQL構建的。

爲了避免錯誤,請執行下列操作:

很多情況下你需要追加領域的記錄,使用ADOR .Recordset不ADODB .Recordset。

ADOR是COM引用 「Microsoft ActiveX數據對象Recordset 2.8庫」