Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
SSIS Integration Runtime in Azure Data Factory
De data die door Integration Services-pakketten wordt getransformeerd, heeft vaak een geprint rapport als eindbestemming. De naamruimte System.Drawing.Printing in het Microsoft .NET Framework biedt klassen voor het werken met printers.
Note
Als je een taak wilt maken die je gemakkelijker kunt hergebruiken in meerdere pakketten, overweeg dan de code in dit scriptvoorbeeld als uitgangspunt voor een aangepaste taak. Zie Een aangepaste taak ontwikkelenvoor meer informatie.
Description
Het volgende voorbeeld vindt printers die op de server zijn geïnstalleerd en legal-formaat papier ondersteunen (zoals gebruikt in de Verenigde Staten). De code om ondersteunde papierformaten te controleren is ingekapseld in een privéfunctie. Om de voortgang van het script te kunnen volgen terwijl het de instellingen van elke printer controleert, gebruikt het script de Log methode om een informatiebericht te sturen voor drukkers met papierformaat van legale grootte, en om een waarschuwing te geven voor printers zonder papier van legale grootte. Deze berichten verschijnen in het Output-venster van de Microsoft Visual Studio Tools for Applications (VSTA) IDE wanneer je het pakket in de designer uitvoert.
Om dit voorbeeld van een scripttaak te configureren,
Maak de variabele aan met de naam
PrinterListObject.Voeg deze variabele toe aan de ReadWriteVariables-eigenschap op de Script-taakeditor op de Script-pagina van de Script Task Editor.
Voeg in het scriptproject een referentie toe aan de naamruimte System.Drawing .
Gebruik in je code Imports-instructies om de System.Collections en de System.Drawing.Printing-namespaces te importeren.
Code
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;
}