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

返回

一个整数,指示 列在 中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);  
    }  
}  

注解

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

适用于