[英]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.