スクリプト タスクによるインストールされたプリンタの検索

Integration Services パッケージで変換されたデータは、最後の変換先で印刷レポートになることがよくあります。Microsoft .NET Framework の System.Drawing.Printing 名前空間は、プリンタを操作するためのクラスを提供します。

ms135995.note(ja-jp,SQL.90).gifメモ :
複数のパッケージでより簡単に再利用できるタスクを作成する場合は、このスクリプト タスク サンプルのコードを基にした、カスタム タスクの作成を検討してください。詳細については、「カスタム タスクの開発」を参照してください。

説明

次の例では、米国で使用されているリーガル サイズの用紙をサポートしているプリンタがサーバーにインストールされている場合、そのプリンタを検索します。サポートされる用紙サイズを調べるコードは、private 関数にカプセル化されています。各プリンタの設定を確認する間にスクリプトの進行状況を追跡できるように、スクリプトでは Log メソッドを使用して、リーガル サイズ用紙をサポートするプリンタには情報メッセージを出力し、リーガル サイズ用紙をサポートしないプリンタには警告メッセージを出力します。デザイナでパッケージを実行すると、VSA IDE の [出力] ウィンドウにこれらのメッセージが表示されます。

このスクリプト タスクの例を構成するには

  1. PrinterList という名前の、Object 型の変数を作成します。

  2. [スクリプト タスク エディタ][スクリプト] ページで、この変数を ReadWriteVariables プロパティに追加します。

  3. このスクリプト プロジェクトでは、System.Drawing 名前空間への参照を追加します。

  4. 実際のコードでは、Imports ステートメントを使用して、System.Collections および System.Drawing.Printing 名前空間をインポートします。

コード

Public Sub Main()

    Dim printerName As String
    Dim currentPrinter As New PrinterSettings
    Dim size As PaperSize

    Dim printerList As New ArrayList
    For Each printerName In PrinterSettings.InstalledPrinters
        currentPrinter.PrinterName = printerName
        If PrinterHasLegalPaper(currentPrinter) Then
            printerList.Add(printerName)
            Dts.Events.FireInformation(0, "Example", _
                "Printer " & printerName & " has legal paper.", _
                String.Empty, 0, False)
        Else
            Dts.Events.FireWarning(0, "Example", _
                "Printer " & printerName & " DOES NOT have legal paper.", _
                String.Empty, 0)
        End If
    Next

    Dts.Variables("PrinterList").Value = printerList

    Dts.TaskResult = Dts.Results.Success

End Sub

Private Function PrinterHasLegalPaper( _
    ByVal thisPrinter As PrinterSettings) As Boolean

    Dim size As PaperSize
    Dim hasLegal As Boolean = False

    For Each size In thisPrinter.PaperSizes
        If size.Kind = PaperKind.Legal Then
            hasLegal = True
        End If
    Next

    Return hasLegal

End Function