Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie haben Ihr Lernprogrammprojekt erfolgreich für die Nutzung eines Berichts mit Unterbericht umgeändert und einen im Unterbericht erstellten Bereichsparameter als Auftragsdatumsbereich festgelegt. In diesem Nachtrag erfahren Sie, wie Sie Parameter in einem Unterbericht mithilfe erweiterter API-Funktionen lesen und festlegen.
In den vorangehenden Prozeduren haben Sie gelernt, wie Sie die SetDateRangeForOrders()-Hilfsmethode erstellen, die die Klassen ParameterFieldDefinitions und ParameterFieldDefinition verwendet.
In diesem Lernprogramm entfernen Sie die Codezeilen, die die ParameterFieldDefinitions-Klasse und die ParameterFieldDefinition-Klasse verwenden. Anschließend lernen Sie, wie Sie die Klassen ParameterFields und ParameterField der erweiterten Crystal Reports Developer-API zur Codierung der SetDateRangeForOrders()-Methode verwenden.
Anmerkung |
|---|
Die erweiterte API enthält die Methode SetParameterValue(string parameterFieldName, object value, string subreport) für Unterberichte, die über Felder für diskrete Parameter verfügen. SetParameterValue() kann in diesem Lernprogramm folglich nicht verwendet werden, da der Unterbericht über einen Bereichsparameter verfügt. |
So verwenden Sie die erweiterte Crystal Reports-API für Unterberichte mit Bereichsparametern
Erstellen Sie ein Projekt, das auf den Anweisungen unter Lernprogramm: Lesen und Einstellen von Parametern für einen Unterbericht basiert.
Öffnen Sie das abgeschlossene Projekt für dieses Lernprogramm.
Öffnen Sie das Web Form oder Windows Form.
Klicken Sie im Menü Ansicht auf Code.
Löschen Sie innerhalb der SetDateRangeForOrders()-Methode die Codezeilen, die auf die Klassen ParameterFieldDefinitions oder ParameterFieldDefinition Bezug nehmen. Löschen Sie die folgenden Codezeilen:
``` vb
Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields
Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME)
myParameterFieldDefinition.CurrentValues.Clear()
myParameterFieldDefinition.CurrentValues.Add(myParameterRangeValue)
myParameterFieldDefinition.ApplyCurrentValues(myParameterFieldDefinition.CurrentValues)
```
``` csharp
ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;
ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];
parameterFieldDefinition.CurrentValues.Clear();
parameterFieldDefinition.CurrentValues.Add(parameterRangeValue);
parameterFieldDefinition.ApplyCurrentValues(parameterFieldDefinition.CurrentValues);
```
Im nächsten Schritt fügen Sie der SetDateRangeForOrders()-Methode die neuen Crystal Reports-API-Methoden hinzu, und zwar nach dem Code zur Festlegung des Bereichsbegrenzungstyps.
Rufen Sie innerhalb der SetDateRangeForOrders()-Methode die ParameterFields-Instanz aus der ParameterFields-Eigenschaft der ReportDocument-Instanz ab.
Dim myParameterFields As ParameterFields = reportDocument.ParameterFieldsParameterFields parameterFields = reportDocument.ParameterFields;Rufen Sie die ParameterField-Instanz aus der ParameterFields-Indexklasse ab, die auf zwei Indexwerten basiert: dem Namen des Parameterfeldes des Unterberichts und dem Namen des Unterberichts. Übergeben Sie die beiden am Anfang der Klasse deklarierten konstanten Werte.
Dim myParameterField As ParameterField = myParameterFields(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME)ParameterField parameterField = parameterFields[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];Rufen Sie die Clear()-Methode der CurrentValues-Eigenschaft der ParameterField-Instanz auf, um vorhandene Werte aus der CurrentValues-Eigenschaft uu entfernen.
``` vb
myParameterField.CurrentValues.Clear()
```
``` csharp
parameterField.CurrentValues.Clear();
```
Fügen Sie der CurrentValues-Eigenschaft der ParameterField-Instanz die zuvor erstellte ParameterRangeValue-Instanz hinzu.
myParameterField.CurrentValues.Add(myParameterRangeValue)parameterField.CurrentValues.Add(parameterRangeValue);
Sie können das Projekt jetzt erstellen und ausführen, um Bereichsparameter für einen Unterbericht zu lesen und einzustellen.
Anmerkung