DTSBufferManagerClass.FindColumnByLineageID(Int32, Int32) 方法

定義

public:
 virtual int FindColumnByLineageID(int hBufferType, int nLineageID) = Microsoft::SqlServer::Dts::Pipeline::Wrapper::Sql2014::IDTSBufferManager100::FindColumnByLineageID;
public virtual int FindColumnByLineageID (int hBufferType, int nLineageID);
abstract member FindColumnByLineageID : int * int -> int
override this.FindColumnByLineageID : int * int -> int
Public Overridable Function FindColumnByLineageID (hBufferType As Integer, nLineageID As Integer) As Integer

參數

hBufferType
Int32
nLineageID
Int32

傳回

Int32

整數,表示中資料行的位置(依索引) IDTSBuffer100

實作

範例

下列程式碼範例會示範沒有輸出資料行的轉換元件如何使用 FindColumnByLineageID 來找出緩衝區中的輸入資料行。

Private bufferColumnIndex As Integer()   

Public Overloads Overrides Sub PreExecute()   
 Dim input As IDTSInput100 = ComponentMetaData.InputCollection(0)   
 bufferColumnIndex = New Integer(BufferManager.GetColumnCount(input.Buffer) - 1) {}   
 Dim col As Integer = 0   
 While col < input.InputColumnCollection.Count   
   Dim iCol As IDTSInputColumn100 = input.InputColumnCollection(col)   
   bufferColumnIndex(col) = BufferManager.FindColumnByLineageID(input.Buffer, iCol.LineageID)   
   col -= 1   
 End While   
End Sub  
int[] bufferColumnIndex;  
public override void PreExecute()  
{  
    IDTSInput100 input = ComponentMetaData.InputCollection[0];  
    bufferColumnIndex = new int[BufferManager.GetColumnCount(input.Buffer)];  

    for( int col=0; col < input.InputColumnCollection.Count; col++)  
    {  
        IDTSInputColumn100 iCol = input.InputColumnCollection[col];  
        bufferColumnIndex[col] = BufferManager.FindColumnByLineageID(input.Buffer, iCol.LineageID);  
    }  
}  

備註

這個方法會在指定的中尋找或的資料行 IDTSInput100 IDTSOutput100 IDTSBuffer100 。 這個方法是必要的,因為緩衝區的實例包含在 IDTSOutputColumn100 圖形中的元件中定義的所有物件 GetObjectIndexByID 。 元件無法依賴使用輸出資料行或輸入資料行的索引位置作為緩衝區資料列中該資料行的索引。 因此,元件必須使用 FindColumnByLineageID 方法來找出緩衝區中的資料行。

適用於