Clients aus der Datenbank auslesen

Navigation:  Tutorial: Der Form Editor > Exemplarische Erstellung einer Form >

Clients aus der Datenbank auslesen

Version 1.0.1

Auf der leeren Form erstellen Sie nun ein Label und eine ListBox. Dazu klicken Sie in der Werkzeugpalette auf das jeweilige Symbol. Mit einem weiteren Klick auf die Form, wird die Komponente an der Mausposition erstellt. Über den Object Inspector können Sie nun die Eigenschaften der jeweils markierten Komponente ändern. Zum Beispiel lässt sich der Name des Labels auf Clients setzen sowie die Höhe der ListBox ändern.

 

11.3.1 - Formeditor

Hinzufügen der erforderlichen Elemente

 

Damit die ListBox direkt beim Aufruf der Form alle Clients beinhaltet, muss der passende Programmcode in DelphiSkript erstellt werden. Klicken Sie auf den Tab Code unterhalb der Form. Es wird Ihnen nun der Quellcode für die Form angezeigt, wo Sie die beiden Funktionen OkButtonClick und CancelButtonClick finden. Diese Funktionen sind für den bereits vorhandenen OK- bzw. Cancel-Button gedacht, wodurch die Form über CloseForm() mit einem entsprechenden Rückgabewert beendet wird.

 

Erstellen Sie nun manuell die Funktion FormActivate, welche automatisch durchlaufen wird, sobald die Form aufgerufen wird. Hier deklarieren Sie zunächst die Variablen LSQL als String, LClients als TStringList und i als integer. Anschließend initialisieren Sie die Variable LClients. Diese Variablen werden benötigt, um im Folgenden auf die Datenbank zuzugreifen.

 

Als nächstes erstellen Sie ein SQL-Kommando, um den Computernamen aller Clients aus der ACMP Datenbank auszulesen und speichern es in der Variablen LSQL. Damit Sie Zugriff auf die ACMP Datenbank erhalten, müssen Sie zunächtst die AagonSQLQuery unit importieren. Öffnen Sie dazu die Befehlsreferenz, markieren Sie die AagonSQLQuery unit und klicken Sie auf hinzufügen.  Nun muss die sqlquery ausgeführt werden, welche folgende Parameter benötigt:

 

SQLStatement

Das SQL-Statement selbst. Im Beispiel LSQL.

ConnectionString

Verbindungsangaben zum SQL-Server in der Standardnotation. Wird im Beispiel nicht benötigt, da die Abfrage über den

ExecuteOnACMPServer        Parameter auf dem ACMP Server ausgeführt wird.

Variable

Projektvariable in der das Ergebnis gespeichert werden kann.

ResultList

String-Liste, in welcher die Ergebnisse gespeichert werden. Im Beispiel ist dies die Variable LClients.

ExecuteOnACMPServer

Eine true/false-Angabe, ob die Abfrage auf der ACMP Datenbank ausgeführt werden soll. Bei der Angabe von true wird kein ConnectionString benötigt.

 

Nach dem Ausführen der Abfrage sind die Abfrageergebnisse in der Variablen LClients hinterlegt. Mit Hilfe einer for-Schleife werden nun die Ergebnisse durchlaufen und der ListBox hinzugefügt. Da die Ergebnisse in der Form Spaltenname=Wert sind, muss der Spaltenname (in diesem Fall Computername) inkl. des Gleichheit-Zeichens jedoch zuvor entfernt werden, was über die Funktion StringReplace erfolgt.

 

procedure FormActivate(Sender: TObject);

var

 LSQL: String;

 LClients: TStringList;

 i: integer;

begin

 LClients := TStringList.Create;

 try

          LSQL := 'Select COMPUTERNAME from CLT_CLIENTS_Table';

          sqlquery(LSQL, '', '', LClients, true);

 

          for i := 0 to LClients.count-1 do

          begin

               ListBox1.items.add(StringReplace(LClients.strings[i], 'COMPUTERNAME=', ''));

          end;

 finally

          LClients.Free;

 end;

end;

 

Zuletzt werden die Ressourcen der Variable LClients über den Aufruf LClients.Free freigegeben. Ordnen Sie diese Funktion nun dem Event OnActive zu, sodass die Funktion automatisch ausgeführt wird.

 

Hinweis

Hinweis:

Beachten Sie, dass Sie keine Komponente markiert haben, wenn Sie die Funktion FormActive dem Event OnActive-Event zuordnen.

 

Wenn Sie die Form nun starten, werden die Computernamen aller Clients in der ListBox aufgelistet. Je nach Anzahl der Clients kann dies einige wenige Sekunden dauern.

Zuletzt bearbeitet am 07.03.2017