次の方法で共有


IDTSVirtualInput100 インターフェイス

上流コンポーネントからコンポーネントが利用できる列を表します。

名前空間:  Microsoft.SqlServer.Dts.Pipeline.Wrapper
アセンブリ:  Microsoft.SqlServer.DTSPipelineWrap (Microsoft.SqlServer.DTSPipelineWrap.dll)

構文

'宣言
<GuidAttribute("86FC9629-769A-479E-82ED-C6FD75C2FC8E")> _
Public Interface IDTSVirtualInput100 _
    Inherits IDTSObject100
'使用
Dim instance As IDTSVirtualInput100
[GuidAttribute("86FC9629-769A-479E-82ED-C6FD75C2FC8E")]
public interface IDTSVirtualInput100 : IDTSObject100
[GuidAttribute(L"86FC9629-769A-479E-82ED-C6FD75C2FC8E")]
public interface class IDTSVirtualInput100 : IDTSObject100
[<GuidAttribute("86FC9629-769A-479E-82ED-C6FD75C2FC8E")>]
type IDTSVirtualInput100 =  
    interface
        interface IDTSObject100
    end
public interface IDTSVirtualInput100 extends IDTSObject100

説明

IDTSVirtualInput100 を取得するには、IDTSInput100 オブジェクトの GetVirtualInput メソッドを呼び出します。VirtualInputColumnCollection プロパティには、グラフの上流コンポーネントから利用できる列が含まれます。

データ フロー タスクをプログラムによって作成している場合は、CManagedComponentWrapperClassSetUsageType メソッドを呼び出すことによってコンポーネントの仮想列が選択されます。

カスタム データ フロー コンポーネントを作成している開発者は、仮想入力を使用して利用可能な上流列を検出し、コンポーネントによっては、仮想コレクションの列に基づいて入力に列を追加します。

仮想入力には上流列が反映されるため、仮想入力または仮想入力コレクションの列を変更しても、IDTSOutput100 自体に影響はありません。

使用例

次のコード例は、プログラムでデータ フロー タスクを作成するとき、仮想入力を使用してコンポーネントが使用する列を選択する方法を示しています。

public void SelectColumns(IDTSComponentMetaData100 md)
{
    // Create the design time instance of the component.
    CManagedComponentWrapper wrp = md.Instantiate();

    // Walk the input collection.
    foreach (IDTSInput100 input in md.InputCollection)
    {
        // Get the virtual input columns.
        IDTSVirtualInput100 vInput = input.GetVirtualInput();

        // For each virtual column, set its usagetype to READONLY.
        foreach (IDTSVirtualInputColumn100 vCol in vInput.VirtualInputColumnCollection)
            wrp.SetUsageType(input.ID, vInput, vCol.LineageID, DTSUsageType.UT_READONLY);
    }
}
Public Sub SelectColumns(ByVal md As IDTSComponentMetaData100) 
 Dim wrp As CManagedComponentWrapper = md.Instantiate 
 For Each input As IDTSInput100 In md.InputCollection 
   Dim vInput As IDTSVirtualInput100 = input.GetVirtualInput 
   For Each vCol As IDTSVirtualInputColumn100 In vInput.VirtualInputColumnCollection 
     wrp.SetUsageType(input.ID, vInput, vCol.LineageID, DTSUsageType.UT_READONLY) 
   Next 
 Next 
End Sub

次のコード例は、入力がパスに接続されると、仮想入力からすべての DT_STR 列を選択するカスタム データ フロー コンポーネントを示しています。

public override void OnInputPathAttached(int inputID)
{
    IDTSInput100 input = ComponentMetaData.InputCollection.GetObjectByID(inputID);
    IDTSVirtualInput100 vInput = input.GetVirtualInput();

    foreach (IDTSVirtualInputColumn100 vCol in vInput.VirtualInputColumnCollection)
    {
        if (vCol.DataType == DataType.DT_STR)
        {
            this.SetUsageType(inputID, vInput, vCol.LineageID, DTSUsageType.UT_READONLY);
        }
    }
}
Public Overrides Sub OnInputPathAttached(ByVal inputID As Integer) 
 Dim input As IDTSInput100 = ComponentMetaData.InputCollection.GetObjectByID(inputID) 
 Dim vInput As IDTSVirtualInput100 = input.GetVirtualInput 
 For Each vCol As IDTSVirtualInputColumn100 In vInput.VirtualInputColumnCollection 
   If vCol.DataType = DataType.DT_STR Then 
     Me.SetUsageType(inputID, vInput, vCol.LineageID, DTSUsageType.UT_READONLY) 
   End If 
 Next 
End Sub