DTSBufferManagerClass.FindColumnByLineageID(Int32, Int32) 方法

定义

public:
 virtual int FindColumnByLineageID(int hBufferType, int nLineageID) = Microsoft::SqlServer::Dts::Pipeline::Wrapper::Sql2012::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

返回

一个整数,指示 IDTSBuffer100 中列的位置(按索引)。

实现

示例

下面的代码示例演示没有输出列的转换组件如何使用 FindColumnByLineageID 在缓冲区中查找其输入列。

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);  
    }  
}  
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  

注解

此方法在指定的 IDTSBuffer100 中查找 IDTSBuffer100 或 IDTSOutput100 的列。 此方法是必需的,因为缓冲区的实例包含图形中组件的 IDTSOutputColumnCollection100 中定义的所有 IDTSOutputColumn100 对象。 组件不能依赖于将输出列或输入列的索引位置用作缓冲区行中该列的索引。 因此,组件必须使用 FindColumnByLineageID 方法在缓冲区中查找列。

适用于