4D v16

Aktuelle Auswahl

Home

 
4D v16
Aktuelle Auswahl

Aktuelle Auswahl    


 

Hier lernen wir, was eine aktuelle Auswahl ist und welche Interaktionen zwischen Auswahlen und Arrays passieren.

Wir erstellen zuerst ein statistisches Array in einer Listbox. Es enthält die Anzahl der Einsätze pro Techniker für einen bestimmten Zeitraum.

Dafür haben wir in einem Projektformular STATS eine Listbox mit 2 Spalten und einer Schaltfläche zum Berechnen und zwei weitere für OK und Cancel angelegt. Der ersten Spalte wird Array-Technicians zugeordnet, der zweiten Spalte Array_NbInterventions.

In der Methode zur Schaltfläche wählen wir zuerst alle Techniker aus.
So können wir die Anzahl der gefundenen Datensätze bestimmen und diese Zahl für die Größe der Arrays setzen:

 C_DATE($YearStart;$YearEnd)
 C_LONGINT($Year;$Nb;$Index)
 
 $Year:=2011
 $YearStart:=Date("01/01/"+String($Year))
 $YearEnd:=Add to date($YearStart;1;0;-1)
 
 ALL RECORDS([Technicians])
 $Nb:=Records in selection([Technicians])
 
 ARRAY TEXT(Array_Technicians;$Nb)
 ARRAY LONGINT(Array_NbInterventions;$Nb)
 
 FIRST RECORD([Technicians])
 While(Not(End selection([Technicians])))
    QUERY([Interventions];[Interventions]Technician_ID=[Technicians]ID) // Wir haben die Liste der Einsätze für den Techniker im Speicher.
    QUERY SELECTION([Interventions];[Interventions]Intervention_Date>=$YearStart;*)
    QUERY SELECTION([Interventions];&;[Interventions]Intervention_Date<=$YearEnd)
 
    $Index:=Selected record number([Technicians])
    Array_Technicians{$Index}:=[Technicians]Last Name
    Array_NbInterventions{$Index}:=Records in selection([Interventions])
 
    NEXT RECORD([Technicians])
 End while

Wir haben:

  • Ein Array Text. Das ist das Array Techniker mit $Nb Zeilen
  • Und ein Array Lange Ganzzahl mit ebenfalls $Nb Zeilen

Wir haben soeben die Namen dieser Arrays in der Listbox erhalten:

  • Array_Technicians => Array Text
  • Array_NbInterventions => Array Lange Ganzzahl

Ist die Initialisierung fertig, gehen wir zum 1. Techniker; und suchen, solange es Techniker gibt, nach den Einsätzen dieser Techniker.

Wir suchen also in den Einsätzen nach:

  • Einsätzen, in denen die Initialen des Technikers
  • dieselben sind wie die ID des Technikers

Zu dieser Zeit haben wir die Liste der Einsätze in den Speicher geladen.

Um die zu füllende Zeile der Arrays zu bestimmen, weisen wir 4D an, die bereits durchlaufene Anzahl der Techniker zu liefern.

Mit dieser Information können wir folgendes füllen:

  • Das Array Techniker in der Zeile $Index und angeben, dass dies der letzte Name des Technikers ist.
  • Die Anzahl der Einsätze, auch in der Zeile $Index, die der Anzahl der gefundenen Datensätze in der Tabelle Interventions entspricht.

Der statistische Teil ist nun beendet, bis auf ein kleines Detail: Wir dürfen nicht vergessen, den Datensatz zu wechseln, wenn die Bearbeitung des ersten beendet ist.

Wir können das Formular testen und prüfen, ob wir pro Techniker eine bestimmte Anzahl Einsätze bekommen.

Darüberhinaus benutzen wir folgendes:

  • In $Year 2011 (wir können später ein Variablenfeld erstellen, in das der Benutzer das gewünschte Jahr eingibt und es $Year übergeben.)
  • Als Beginn den 1. Januar des Jahres
  • Eine andere Variable als Jahresende, die zum Startdatum ein Jahr, 0 Monate und -1 Tag hinzufügt
    Warum -1 Tag? Weil wir sonst zum 1. Januar des nächsten Jahres gelangen würden.

Sind diese 3 Angaben gesetzt, können wir die Suche jetzt durch eine Suche in der Auswahl der Einsätze abschließen. Wir suchen nach allen Einsätzen, wo: 

  • Das Datum größer oder gleich dem Jahresbeginn ist
  • Und kleiner oder gleich dem Jahresende

Wir testen das Formular erneut und sollten folgendes sehen:

Wir können das Jahr z.B. auf 2010 setzen und erneut testen.

Nachfolgendes Schema zeigt, wie 4D arbeitet, also den Ablauf von Auswahl - Aktion (SELECTION-ACTION):

Das Konzept aktuelle Auswahl ist ein Grundbaustein von 4D, der etwas anders ist als das anderer Systeme, insbesondere SQL.

Eine aktuelle Auswahl ist eine Liste von Datensätzen, die durch Suche in der Tabelle entsteht (entsprechend der WHERE Klausel in SQL)

In 4D haben wir kontinuierlich eine aktuelle Auswahl pro Tabelle. Diese Auswahl kann 0 bis X Datensätze enthalten.

Die aktuelle Auswahl ist die Liste der Datensätze, mit denen wir Aktionen ausführen. Sie können die aktuelle Auswahl zwischen zwei Aktionen ändern.

Über den Befehl APPEND TO ARRAY können Sie die Größe des Array vor Ausführen der Schleife setzen und während dem Prozess der Variablen $Index einen Wert zuweisen (und so die Funktion Selected record number kennenlernen).

 
 

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Aktuelle Auswahl

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

Self-Training ( 4D v16)