簡體   English   中英

通過VB.NET或C#更改記錄集中的數據類型

[英]Change data type within a recordset by VB.NET or C#

我正在嘗試使用SSIS記錄集更改數據類型。 我使用SSIS從Excel文件中獲取記錄,並將其保存到對象變量'User :: CriteriaResult'中。

當我嘗試使用foreach循環遍歷它時,出現錯誤:

錯誤:獲取Excel數據時出現0xC001F009:分配給變量“ User :: CriteriaID”的值的類型與當前變量類型不同。 變量在執行期間可能不會更改類型。 變量類型是嚴格的,但對象類型的變量除外。

變量“ User :: CriteriaID”定義為字符串,但是,記錄集中的數據如下:1,2,3A,3B,...

在此處輸入圖片說明

我嘗試使用腳本任務來更改記錄集中的數據類型,然后將其保存回記錄集“ User :: CriteriaResult”。 我使用它的代碼是這樣的:

C#:

using System.Data.OleDb;
DataTable dt = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.Fill(dt, Dts.Variables["User::CriteriaResult"].Value);

VB.NET:

Imports System.Data.OleDb
Dim oleDA As New OleDbDataAdapter
Dim dt As New DataTable
Dim row As DataRow
oleDA.Fill(dt, Dts.Variables("User::CriteriaResult").Value)

我的概念是創建一個新的數據表,從記錄集中復制數據並將其更改為字符串,然后將其存儲回記錄集中並覆蓋舊的。 但是我不太確定該怎么做。

我嘗試過的東西:

For Each row In dt.Rows
        MsgBox(row.ToString)
    Next row

在此處輸入圖片說明

我得到了一堆行而不是一個行值。 另外,我不知道如何將修改后的記錄保存回記錄集。

你能給我什么建議嗎? VB或C#都可以對我有很大幫助。

在VB.net

 Private Sub GetValues()
    Dim dt As New DataTable
    Dim da As New OleDbDataAdapter
    da.Fill(dt, "Your record set") 'not in quotes
    Dim row As DataRow
    Dim index As Integer = 0 ' index of the column you want

For Each row In dt.Rows
     Dim result As String = row(index).ToString
     Debug.Print(result)
Next

結束子

在C#中

private void GetValues()
{
    OleDbDataAdapter da = new OleDbDataAdapter();
    DataTable dt = new DataTable();
    da.Fill(dt, "Your recordset");//not in  quotes
    Int32 index = 0; //index of the column you need
    foreach (DataRow row in dt.Rows)
        {
            String result = row[index].ToString();
            Debug.Print(result);
        }
}

嘗試遍歷列並更改整個列值的數據類型,可以使用以下代碼(使用VB.Net)

Imports System.Data.OleDb

Dim oleDA As New OleDbDataAdapter
Dim dt As New DataTable
Dim row As DataRow
oleDA.Fill(dt, Dts.Variables("User::CriteriaResult").Value)


For each dCol as DataColumn in dt.Columns

    dCol.DataType = "".GetType()

Next

Dts.Variables("User::CriteriaResult").Value = dt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM