Vorige onderwerpVolgende onderwerp


Zelfstudieprogramma 5: Eventhandler schrijven in JavaScript

Dit zelfstudieprogramma bevat instructies voor het schrijven van een set eventhandlers. Het zelfstudieprogramma gaat er van uit dat u werkt met een standaard rapportontwerp, gebaseerd op de voorbeelddatabase van Classic Models, Inc.. De enige vereiste voor dit rapportontwerp is dat het een tabel van klanten bevat met een kolom voor de namen van de klanten. In dit zelfstudieprogramma worden de klanten geteld waarvan de namen de reeks "Mini" bevatten. Tevens worden de resultaten afgebeeld in een voorgrondvenster.

In dit zelfstudieprogramma voert u de volgende taken uit:

Taak 1: Het rapportontwerp openen

Open een rapportontwerp dat gebruik maakt van de voorbeelddatabase Classic Car en waarin een tabel met namen van klanten aanwezig is.

  1. Indien nodig opent u de Navigator door het kiezen van Venster->View afbeelden->Navigator.
  2. Dubbelklik op het gewenste rapportontwerp. Het bestand wordt geopend in de layout-editor, zoals in Afbeelding 22-4.

Taak 2: Teller maken en initialiseren voor de methode Table.onCreate( )

Om het aantal klanten waarvan de naam de tekst Mini bevat te kunnen tellen moet u eerst een algemene teller declareren en de waarde daarvan instellen op nul. De methode Table.onCreate( ) is het meest geschikt voor deze taak omdat Table.onCreate( ) wordt uitgevoerd voordat er rijen worden opgehaald. U kunt deze teller voorwaardelijk laten toenemen met de methode Row.onCreate( ).

  1. In het venster Layout selecteert u de tabel door de cursor boven de linkerbenedenhoek van de tabel te houden. Het tabelpictogram verschijnt, zoals in Afbeelding 22-5.
  2. Kies de tab Script. De tab Script wordt afgebeeld, zoals in Afbeelding 22-6.
  3. Typ de volgende code in het scriptvenster voor de methode onCreate( ):
  4. countOfMinis = 0; 
    
  5. Om het rapport uit te voeren en te controleren dat de code geen fouten veroorzaakt, kiest u Preview bekijken.
  6. Blader naar het einde van het rapport, waar de JavaScript-foutberichten worden afgebeeld. Als er geen fouten zijn, wordt het rapport afgebeeld als in Afbeelding 22-7.
  7. Als u wel en foutbericht vindt, hebt u de instructie misschien foutief getypt. Als dat zo is, gaat u terug naar het scriptvenster, selecteert u de zojuist aangepaste methode, verbetert u de fout en kiest u opnieuw Preview bekijken.

Taak 3: Voorwaardelijk verhogen van de teller voor de methode Row.onCreate( )

Om de klanten die de tekstreeks Mini in hun naam hebben te kunnen tellen, moeten de namen van de klanten worden gecontroleerd en moet voor elke treffer de teller worden verhoogd met één. Een logische plaats om dit te doen is in de methode Row.onCreate( ), die wordt uitgevoerd telkens wanneer er een rij gegevens wordt opgehaald uit de gegevensbron.

  1. In Layout selecteert u de rij en kiest u de tab Script.
  2. Open de lijst van methoden bovenin het scriptvenster en selecteer onCreate, zoals in Afbeelding 22-8.
  3. Typ de volgende regel JavaScript-code in het scriptvenster:
  4. row=this.getRowData( ); 
    
    Merk op dat na het typen van de punt achter de tekst "this" er een voorgrondvenster verschijnt met daarin alle beschikbare methoden en eigenschappen, inclusief getRowData. Deze regel code laat een instance van IRowData, dat de methode getExpressionValue( ) bevat, de inhoud van een kolom in de rij ophalen.
  5. Typ de volgende regel JavaScript onder de zojuist opgegeven regel:
  6. CustName=row.getExpressionValue( "row[CUSTOMERNAME]" ); 
    
    Deze regel code retourneert de inhoud van de tabelkolom die afkomstig is van de kolom CUSTOMERNAME in de gegevensset.
  7. Typ de volgende regel code voor het voorwaardelijk verhogen van de teller die u hebt gemaakt met behulp van Teller maken en initialiseren voor de methode Table.onCreate( ).
  8. if( CustName.indexOf( "Mini" ) != -1 ) countOfMinis += 1; 
    
    Met behulp van het JavaScript-palet kunt u elk van de volgende elementen invoegen in de voorafgaande regel:
    • indexOf( )
    • Selecteer Native ( JavaScript ) Objecten->Tekenreeksfuncties->indexOf( )
    • !=
    • Selecteer Operators->Vergelijking->!=
    • +=
    • Selecteer Operators->Toewijzing->+=
  9. Kies Preview bekijken om het rapport opnieuw uit te voeren en daarmee te controleren dat de opgegeven code geen fouten veroorzaakt.

Taak 4: Het resultaat afbeelden met de
methode ReportDesign.afterFactory( )

Voor het afbeelden van de telling van de klanten met de tekst Mini in hun naam, dient u code toe te voegen aan een methode die wordt uitgevoerd nadat alle rijen in de tabel zijn verwerkt. Een logische plek om dit te doen is in de methode ReportDesign.afterFactory( ).

  1. In Overzicht selecteert u het rapportontwerp, zoals in Afbeelding 22-9.
  2. Selecteer de methode afterFactory( ) uit de vervolgkeuzelijst in het scriptvenster.
  3. Typ de volgende code voor de methode afterFactory( ):
  4. importPackage( Packages.javax.swing ); 
    frame = new JFrame( "Count of Minis = " + countOfMinis ); 
    frame.setBounds( 310, 220, 300, 20 ); 
    frame.show( ); 
    
  5. Kies Preview bekijken om de resultaten af te beelden. Als de opgegeven code geen fouten bevat, wordt er een rapport afgebeeld dat overeenkomt met het rapport in Afbeelding 22-10.

Als het venster met de telling van het aantal Mini's niet te zien is, is het misschien verstopt achter het Eclipse-venster. Als het venster met de telling niet wordt afgebeeld, wordt dat hoogstwaarschijnlijk veroorzaakt door een scriptfout als gevolg van een fout in de opgegeven code.

Als u het vermoeden hebt dat er een scriptfout is opgetreden, bladert u naar het einde van het rapport, alwaar de JavaScript-foutberichten worden afgebeeld. In de meeste gevallen wordt er een kort foutbericht vermeld naast een plusteken ( + ). Het plusteken geeft aan dat er een meer gedetailleerd foutbericht beschikbaar is dat u kunt bekijken wanneer u het korte foutbericht uitvouwt. Om het korte foutbericht uit te vouwen, klikt u op het plusteken. Blader naar beneden om het gedetailleerde foutbericht te kunnen lezen.


(c) Copyright Actuate Corporation 2006

Vorige onderwerpVolgende onderwerp