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 方法来查找缓冲区中的列。

适用于