DTSBufferManagerClass.FindColumnByLineageID(Int32, Int32) 方法

定义

获取指定 IDTSBuffer100 对象中列的位置。

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

包含该列的 IDTSBuffer100 对象的 ID。

nLineageID
Int32

要在 IDTSBuffer100 中查找的列的沿袭 ID。

返回

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

注解

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

适用于