DTSBufferManagerClass.FindColumnByLineageID(Int32, Int32) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取指定 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 方法来定位缓冲区中的列。