我正在導入格式類似於報告的Excel文件 - 即某些列只爲其所屬的每組行填充一次,如:SSIS - 導入包含子標題列的文件(在某些行中省略)
CaseID |Date |Code
157207 | |
|8/1/2012 |64479
|8/1/2012 |Q9967
|8/1/2012 |99203
我需要捕獲這些組頭中的一個(CaseID,在上面的例子中),並使用它用於隨後的行,其中該字段爲空,然後保存該我遇到的下一個值。 我已經加入一個變量(用戶:: CurrentCaseId)和腳本變換,用下面的代碼:
public class ScriptMain : UserComponent
{
string newCaseId;
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (!Row.CaseIDName_IsNull && Row.CaseIDName.Length > 0)
newCaseId = Row.CaseIDName;
else
newCaseId = "DetailRow";
}
public override void PostExecute()
{
base.PostExecute();
if (newClaimNumber != "DetailRow")
Variables.CurrentCaseId = newCaseId;
}
基本上,我想讀出的值存在時,並保存在該變量。我使用條件拆分來刪除只有CaseID的行,然後使用派生列將變量值放入新列以完成詳細信息行。 唉,該值始終爲空(在派生列之後放置數據查看器)。我修改了腳本,始終將該變量設置爲固定字符串 - 派生列仍爲空白。
這似乎是一個很好的計劃......我在MS論壇上收到了一些反饋,您不能在相同的數據流任務中設置變量值並使用其新值。如果是這樣,我能想到的唯一解決方案就是在存在時將CaseID寫出到表格中,並在缺席時將其讀回。我真的很討厭用數百萬行(多個Excel工作表)來做到這一點。任何更好的想法?
最佳, 斯科特
對於SSIS之外的溶液,短Excel宏將準備用於導入該文件:) 「子CopyClaimNumber(DIM CurrentClaim作爲字符串 Sh1的= 「Sheet 1中」 LastRow1 =表(Sh1的).UsedRange.Rows.Count 如果C.Value <>「」Then CurrentClaim = Mid(C.Text,1,(InStr(1) ,C.Text,「/」,vbTextCompare) - 2)) Else C.Value = CurrentClaim End If Next C End Sub' – Scott