Hinzufügen des Parametercodes für den Unterbericht

Sie können der CodeBehind-Klasse jetzt Parametercode für den Unterbericht hinzufügen. Zunächst erstellen Sie die private Hilfsmethode SetDateRangeForOrders().

  1. Öffnen Sie das Web Form oder Windows Form.

  2. Klicken Sie im Menü Ansicht auf Code.

  3. Fügen Sie am Anfang der Klasse unterhalb der vorhandenen PARAMETER_FIELD_NAME-Konstanten, die im vorherigen Lernprogramm hinzugefügt wurde, zwei neue Konstanten ein.

    Private Const SUBREPORT_PARAMETER_FIELD_NAME As String =
    "OrderDateRange"
    Private Const SUBREPORT_NAME As String = "CustomerOrders"
    
    private const string SUBREPORT_PARAMETER_FIELD_NAME =
    "OrderDateRange";
    private const string SUBREPORT_NAME = "CustomerOrders";
    
  4. Erstellen Sie am Ende der Klasse eine neue private Methode mit dem Namen SetDateRangeForOrders(), die drei Parameter enthält: ParameterFields, string startDate und string endDate.

    Private Sub SetDateRangeForOrders(ByVal myParameterFields As
    ParameterFields, ByVal startDate As String, ByVal endDate As
    String)
    
    End Sub
    
    private void SetDateRangeForOrders(ParameterFields parameterFields,
    string startDate, string endDate)
    {
    }
    
  5. Deklarieren und instantiieren Sie innerhalb dieser Methode die ParameterRangeValue-Klasse.

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\xkh1wxd8.alert_note(de-de,VS.90).gif" alt="Note" class="note" />Anmerkung</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Damit auf die ParameterRangeValue-Klasse zugegriffen werden kann, fügen Sie am Anfang der CodeBehind-Klasse für den CrystalDecisions.Shared-Namespace eine der Anweisungen &quot;Imports&quot; [Visual Basic] oder &quot;using&quot; [C#] hinzu. (Sie haben diese Deklaration in <a href="https://msdn.microsoft.com/de-de/library/vs%7ccrystlmn%7c%7e%5chtml%5ctopic168.htm(v=VS.90)">Projekt-Setup</a> hinzugefügt.)</p></td>
</tr>
</tbody>
</table>

``` vb
Dim myParameterRangeValue As ParameterRangeValue = New
ParameterRangeValue()
```

``` csharp
ParameterRangeValue parameterRangeValue = new
ParameterRangeValue();
```
  1. Setzen Sie die StartValue-Eigenschaft der ParameterRangeValue-Instanz auf den startDate-Methodenparameter.
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\xkh1wxd8.alert_note(de-de,VS.90).gif" alt="Note" class="note" />Anmerkung</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Die Eigenschaften StartValue und EndValue der ParameterRangeValue-Klasse akzeptieren Werte des Datentyps Object. Dieser generische Typ ermöglicht es, dass Bereichswerte unterschiedlicher Typen übergeben werden können, z.B.: &quot;text&quot;, &quot;number&quot;, &quot;date&quot;, &quot;currency&quot; oder &quot;time&quot;.</p></td>
</tr>
</tbody>
</table>

``` vb
myParameterRangeValue.StartValue = startDate
```

``` csharp
parameterRangeValue.StartValue = startDate;
```
  1. Setzen Sie die EndValue-Eigenschaft der ParameterRangeValue-Instanz auf den endDate-Methodenparameter.

    myParameterRangeValue.EndValue = endDate
    
    parameterRangeValue.EndValue = endDate;
    
  2. Setzen Sie die obere und untere Grenze auf "bound-inclusive".

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\xkh1wxd8.alert_note(de-de,VS.90).gif" alt="Note" class="note" />Anmerkung</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Bei BoundInclusive werden die oberen und unteren Bereichswerte in den Bereich eingeschlossen.</p></td>
</tr>
</tbody>
</table>

``` vb
myParameterRangeValue.LowerBoundType =
RangeBoundType.BoundInclusive
myParameterRangeValue.UpperBoundType =
RangeBoundType.BoundInclusive
```

``` csharp
parameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive;
parameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive;
```

Sie können dem Parameter des Unterberichts jetzt die ParameterRangeValue-Instanz zuweisen.
  1. 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];
    
  2. Rufen Sie die Clear()-Methode der CurrentValues-Eigenschaft der ParameterField-Instanz auf, um vorhandene Werte aus der CurrentValues-Eigenschaft uu entfernen.

    myParameterField.CurrentValues.Clear()
    
    parameterField.CurrentValues.Clear();
    
  3. Fügen Sie die zuvor erstellte ParameterRangeValue-Instanz zur CurrentValues-Eigenschaft der ParameterField-Instanz hinzu.

    myParameterField.CurrentValues.Add(myParameterRangeValue)
    
    parameterField.CurrentValues.Add(parameterRangeValue);
    

Durch diese schrittweise Anleitung wurden Start- und Enddatumswerte in einer ParameterRangeValue-Instanz festgelegt und an den OrderDateRange-Parameter des Unterberichts "CustomerOrders" übergeben.