3

入力アドレスを受け取り、PAF API を介して実行し、ファイル ソースまたはデータベース テーブルから正しい形式のアドレスと元の入力列を吐き出す最初のデータ フロー コンポーネントを作成しようとしています。

ソース入力アドレスを特定の形式で指定する必要があるため、ユーザーがソース入力列を特定のカスタム入力列にマップする必要があります。input.ExternalMetadataColumnCollection を使用してカスタム入力列を作成できましたが、これは機能しました。ただし、ソース ファイルで利用可能なすべての列を出力列として含めるオプションを提供する必要があるとのことでした。

[列マッピング] タブに表示される追加の入力列を作成しようとしましたが、すべてのソース入力列を使用できるわけではありません。以下は、私がこれまでに試したことです。アドバイスをいただければ幸いです。私の質問は、すべてのソース列を含めるだけでなく、追加のカスタム入力列を追加するにはどうすればよいですか?

            IDTSExternalMetadataColumnCollection100 externalInput = input.ExternalMetadataColumnCollection;
        externalInput.IsUsed = true;

        IDTSExternalMetadataColumn100 externalInputColumn = externalInput.New();
        externalInputColumn.Name = constInputAddressLineOne;
        externalInputColumn.DataType = DataType.DT_WSTR;

        externalInputColumn = externalInput.New();
        externalInputColumn.Name = constInputAddressLineTwo;
        externalInputColumn.DataType = DataType.DT_WSTR;
4

1 に答える 1

2

私はそれを行う方法を見つけました。より良い方法を提案できるなら、私はすべて耳にします。カスタム入力列の名前を読み取り専用に設定するだけです。以下を使用しました。

 public override void OnInputPathAttached(int inputID)
    {
        IDTSInput100 input = ComponentMetaData.InputCollection[0];

        IDTSVirtualInput100 vInput = input.GetVirtualInput();

        IDTSExternalMetadataColumnCollection100 externalColumnCollection = input.ExternalMetadataColumnCollection;
        IDTSExternalMetadataColumn100 externalColumn;                

        foreach (IDTSVirtualInputColumn100 vCol in vInput.VirtualInputColumnCollection)
        {            
            externalColumn = externalColumnCollection.New();
            externalColumn.Name = vCol.Name;
            externalColumn.DataType = vCol.DataType;               
        }
    }
于 2012-09-26T09:49:18.470 に答える