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  

注解

该方法在指定的 IDTSInput100或 中定位 的列。IDTSOutput100IDTSBuffer100 这种方法之所以必要,是因为缓冲区的实例包含 IDTSOutputColumn100 图中所有组件中定义的所有 IDTSOutputColumnCollection100 对象。 组件不能依赖输出列或输入列的索引位置作为缓冲区行中该列的索引。 因此,组件必须使用该 FindColumnByLineageID 方法来定位缓冲区中的列。

适用于