Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: среда выполнения интеграции SSIS SQL Server
в Фабрика данных Azure
Данные, преобразуемые с помощью пакетов служб Integration Services, часто имеют в качестве своего конечного назначения печатаемый отчет. Пространство имен System.Drawing.Printing на платформе Microsoft .NET Framework предоставляет классы для работы с принтерами.
Примечание.
Если нужно создать задачу, которую будет удобно использовать в нескольких пакетах, рекомендуется начать разработку пользовательской задачи с этого образца задачи «Скрипт». Дополнительные сведения см. в разделе Разработка пользовательской задачи.
Description
В следующем примере показано, как выполняется поиск установленных на сервере принтеров, которые поддерживают формат бумаги «стандарт» (применяемую в Соединенных Штатах). Код проверки поддерживаемых форматов бумаги инкапсулирован в закрытой функции. Чтобы можно было следить за ходом выполнения в скрипте проверок параметров для каждого принтера, в скрипте используется метод Log для инициирования информационного сообщения для принтеров, поддерживающих формат бумаги «стандарт», и инициирования предупреждения для принтеров, не поддерживающих формат бумаги «стандарт». Эти сообщения появляются в окне Вывод интегрированной среды разработки средств Microsoft Visual Studio Tools for Applications для приложений (VSTA) при выполнении пакета в конструкторе.
Настройка этого образца задачи «Скрипт»
Создайте переменную с именем
PrinterListтипа Object.На странице Скрипт в редакторе задачи "Скрипт" добавьте эту переменную к свойству ReadWriteVariables.
В проекте скрипта добавьте ссылку на пространство имен System.Drawing.
В коде используйте инструкции 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 = ScriptResults.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
public void Main()
{
PrinterSettings currentPrinter = new PrinterSettings();
PaperSize size;
Boolean Flag = false;
ArrayList printerList = new ArrayList();
foreach (string printerName in PrinterSettings.InstalledPrinters)
{
currentPrinter.PrinterName = printerName;
if (PrinterHasLegalPaper(currentPrinter))
{
printerList.Add(printerName);
Dts.Events.FireInformation(0, "Example", "Printer " + printerName + " has legal paper.", String.Empty, 0, ref Flag);
}
else
{
Dts.Events.FireWarning(0, "Example", "Printer " + printerName + " DOES NOT have legal paper.", String.Empty, 0);
}
}
Dts.Variables["PrinterList"].Value = printerList;
Dts.TaskResult = (int)ScriptResults.Success;
}
private bool PrinterHasLegalPaper(PrinterSettings thisPrinter)
{
bool hasLegal = false;
foreach (PaperSize size in thisPrinter.PaperSizes)
{
if (size.Kind == PaperKind.Legal)
{
hasLegal = true;
}
}
return hasLegal;
}