Поделиться через


Метод FindColumnByLineageID

Gets the location of a column in the specified IDTSBuffer100 object.

Пространство имен:  Microsoft.SqlServer.Dts.Pipeline.Wrapper
Сборка:  Microsoft.SqlServer.DTSPipelineWrap (в Microsoft.SqlServer.DTSPipelineWrap.dll)

Синтаксис

'Декларация
Public Overridable Function FindColumnByLineageID ( _
    hBufferType As Integer, _
    nLineageID As Integer _
) As Integer
'Применение
Dim instance As DTSBufferManagerClass
Dim hBufferType As Integer
Dim nLineageID As Integer
Dim returnValue As Integer

returnValue = instance.FindColumnByLineageID(hBufferType, _
    nLineageID)
public virtual int FindColumnByLineageID(
    int hBufferType,
    int nLineageID
)
public:
virtual int FindColumnByLineageID(
    [InAttribute] int hBufferType, 
    [InAttribute] int nLineageID
)
abstract FindColumnByLineageID : 
        hBufferType:int * 
        nLineageID:int -> int 
override FindColumnByLineageID : 
        hBufferType:int * 
        nLineageID:int -> int 
public function FindColumnByLineageID(
    hBufferType : int, 
    nLineageID : int
) : int

Параметры

Возвращаемое значение

Тип System. . :: . .Int32
An Integer that indicates the location, by index, of the column in the IDTSBuffer100.

Реализует интерфейс

IDTSBufferManager100. . :: . .FindColumnByLineageID(Int32, Int32)

Замечания

This method locates the column of an IDTSInput100 or IDTSOutput100 in the specified IDTSBuffer100. This method is necessary because an instance of a buffer contains all of the IDTSOutputColumn100 objects defined in the IDTSOutputColumnCollection100 of the components in a graph. Components cannot rely on using the index location of an output column or input column as the index of that column in a buffer row. Because of this, components must use the FindColumnByLineageID method to locate the columns in the buffer.

Примеры

The following code example shows how a transformation component that does not have output columns uses FindColumnByLineageID to locate its input columns in the buffer.

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