Gliederung und Einordnung Delphi

Transcrição

Gliederung und Einordnung Delphi
Gliederung und Einordnung
1. Objektorientierte Programmierung mit Object Pascal
(5. Studienbrief, Kapitel 5)
9.4. + 16.4.
2. Software-Bausteine am Beispiel der Delphi-Komponenten
(5. Studienbrief, Kapitel 5)
23.4.
3. Datenbankprogrammierung: Prinzipien und Beispiele
(5. Studienbrief, Kapitel 6)
30.4. + 7.5.
4. Einordnung, Ausblick, Klausurvorbereitung
Technische Universität Dresden
Prof. Hußmann
14.5.
Informatik II (Maschinenwesen)
Delphi-Datenbankkomponenten
• Programm "Datenbankoberfläche":
– Erstellung der Datenbankstruktur
– Experimente mit der Datenbankstruktur (QBE-Anfragen)
– Testhilfsmittel
• Datenbankkomponenten:
– Erstellung von durch Laien benutzbaren Windows-Programmen zur
Dateneingabe und Datenbankabfrage
– Spezielle Programmbibliothek zum Erstellen von
Datenbankanwendungen
• Datenbankkkomponenten nutzen das (objektorientierte)
Komponenten-Konzept von Delphi.
– Kleinere Anwendungen erstellbar ohne Schreiben von ObjectPascalQuellcode
– ObjectPascal-Anteile meist klein und lokal für einzelne Komponenten
Technische Universität Dresden
Prof. Hußmann
Seite 1
Informatik II (Maschinenwesen)
Typen von Datenbankkomponenten
• Datenzugriff
– Nichtvisuelle Komponenten
– Repräsentation von Datenbanktabellen in der Entwicklungsumgebung
– Beispiele:
» Table
» DataSource
» Query
• Datensteuerung:
–
–
–
–
Visuelle Komponenten
Datensensitive Bedienungselemente
Müssen an Datenzugriffskomponenten gekoppelt werden
Beispiele:
» DBGrid
» DBEdit
» DBNavigator
Technische Universität Dresden
Prof. Hußmann
Informatik II (Maschinenwesen)
Pipelining-Prinzip
Data Set
Table
Data Source
Data Access
Query
DataSource
DBGrid
DBEdit
DBNavigator
Technische Universität Dresden
(SQL)
Prof. Hußmann
Seite 2
QuickReport
Informatik II (Maschinenwesen)
Entwicklungsschritte einer einfachen
Datenbankanwendung
• Table-Komponente einfügen
– Property "DatabaseName": Pfadname für Datenbank-Datei
– Property "TableName": Datenbank-Datei (z.B. Stadt.db)
– Hinweis: Höhere Flexibilität durch Einlesen aus Feldern oder durch
Verwenden von Alias-Namen
• DataSource-Komponente einfügen
– Property "DataSet": Entsprechende Table-Komponente
• Oberfläche mit Datensteuerungs-Komponenten entwerfen
(z.B. nur ein DBGrid)
– Property "DataSource": entsprechende DataSource-Komponente
• Property "Active" der Table-Komponente auf "true" setzen
– Datenbankzugriff erfolgt (zur Entwurfszeit)
• Programm übersetzen und starten
– Datenbankzugriff erfolgt (zur Laufzeit)
Technische Universität Dresden
Prof. Hußmann
Informatik II (Maschinenwesen)
Projekt TABELLENANZEIGE
• Programm zur Anzeige einer beliebigen Datenbanktabelle
• Datenbankkomponenten:
– Table (Table1), DataSource, DBGrid (wie bisher)
– Table-Komponente noch nicht "Active" schalten
• Standardkomponenten:
– Zwei Edit-Felder (PfadEdit und DBTabelleEdit)
– Eine Schaltfläche (DatenbankOeffnungButton)
• Code für DatenbankOeffnungButton:
procedure TForm1.DatenbankOeffnungButtonClick
(Sender: TObject);
begin
Table1.DatabaseName:=PfadEdit.Text;
Table1.TableName:=DBTabelleEdit.Text;
Table1.Active:=true;
end;
Technische Universität Dresden
Prof. Hußmann
Seite 3
Informatik II (Maschinenwesen)
Projekt STAHLDB
• NavigatorLeiste
– DBNavigator
• StatistikFunktionen
– Satzzeiger
– Durchlauf
durch alle
Datensätze
Technische Universität Dresden
Prof. Hußmann
Informatik II (Maschinenwesen)
Realisierung von Statistik in STAHLDB
procedure TForm1.StatistikButtonClick(Sender: TObject);
var Anzahl, SumStreckgr: integer;
SumZugf, SumBruc: Double;
begin
Anzahl:=0; SumStreckgr:=0; SumZugf:=0; SumBruc:=0;
Table1.First;
while not Table1.EOF do
begin
Anzahl:=Anzahl+1;
SumStreckgr:=SumStreckgr+Table1.Fields[2].AsInteger;
SumZugf:=SumZugf+((Table1.Fields[3].AsInteger+
Table1.Fields[4].AsInteger)/2);
SumBruc:=SumBruc+((Table1.Fields[5].AsInteger+
Table1.Fields[6].AsInteger)/2);
Table1.Next;
end;
AnzahlEdit.Text:=IntToStr(Anzahl);
DStreckgrEdit.Text:=SumStreckgr/Anzahl;
//(X)
DZugfEdit.Text:=SumZugf/Anzahl;
//(X)
DBruchdEdit.Text:=SumBruc/Anzahl;
//(X)
end {TForm1.StatistikButtonClick};
// (X) "FormatFloat"-Aufrufe hier weggelassen...
Technische Universität Dresden
Prof. Hußmann
Seite 4
Informatik II (Maschinenwesen)
Direkte Datenbankoperationen
• Für eine Tabelle (Objekt vom Typ TTable) kännen in Delphi auch
direkt in ObjectPascal Abfragen und Modifikationen durchgeführt
werden.
– Eine genaue Liste der Methoden liefert die Delphi-Online-Hilfe unter
dem Stichwort "TTable".
• Beispiele für Methoden von TTable:
– Open: Äquivalent zum Setzen der Property "Active" auf true
– First, Next, EOF, Last, Prior, BOF:
Zugriff über Satzzeiger (sh. separate Folie)
– Edit: Setzt Editiermodus für Tabelle
– Post: Schreibt modifizierten Datensatz zurück in die Tabelle
• Zugriffe auf aktuelle Datenfeldwerte der Tabelle (an der aktuellen
Satzzeigerposition):
– <Tabellenname>['<Feldname>'] (Zugriff über Feldname)
– <Tabellenname>.Fields[<integer>]
(Zugriff über lfd. Nummer des Feldes, mit 0 beginnend)
Technische Universität Dresden
Prof. Hußmann
Informatik II (Maschinenwesen)
Virtuelle Felder
• Werte für virtuelle Felder einer Tabelle werden indirekt ermittelt
• Hinzufügen "virtueller Felder" zu einer Table-Komponente:
– Feldeditor für Table öffnen (Kontextmenü, d.h. rechte Maustaste)
– Funktionen im Feldeditor wieder über Kontextmenü
• Arten virtueller Felder:
– Berechnete Felder
– Fremdschlüssel-Zugriff (Lookup)
» Tabellenverbindung herstellen
• Nach geeigneter Konfiguration können virtuelle Felder wie normale
Datenfelder genutzt werden
• Wichtiger Anwendungszweck:
– Verknüpfung von Tabellen
Technische Universität Dresden
Prof. Hußmann
Seite 5
Informatik II (Maschinenwesen)
Projekt DINSTAHL
• Zugriff auf Tabellen
"Stahlsorten" und "Normen"
• Virtuelles Feld
"DIN Bezeichnung" muß zur
Tabelle "Stahlsorten"
hinzugefügt werden
– Wert ermittelt über
Nachschlagen in NormenTabelle gemäß dem ENEintrag
Technische Universität Dresden
Prof. Hußmann
Informatik II (Maschinenwesen)
Virtuelles Feld "DIN Bezeichnung"
Technische Universität Dresden
Prof. Hußmann
Seite 6
Informatik II (Maschinenwesen)
Datenbanksprache SQL
• Structured Query Language
– 70er Jahre, Ursprung IBM
– Standardisiert (ANSI)
• Verwendungsarten:
– Direkte Kommandosprache für relationale Datenbanksysteme
– Einbettung in Datenbankkomponenten (Delphi-Komponente Query)
– Einbindung in Quellcode verschiedener Programmiersprachen, z.B.
COBOL, C, Java
» "EXEC SQL <SQL-Text>"
Technische Universität Dresden
Prof. Hußmann
Informatik II (Maschinenwesen)
SELECT-Anweisungen in SQL
• Syntax:
SELECT <Feldliste>
FROM <Tabellenliste>
WHERE <Einschränkende Bedingung>
• Beispiele:
SELECT Werkstoffnr, Streckgrenze
FROM Stahlsorten
SELECT Werkstoffnr, Streckgrenze
FROM Stahlsorten
WHERE Streckgrenze > 250
SELECT Werkstoffnr, Streckgrenze, DIN
FROM Stahlsorten, Normen
WHERE Stahlsorten.ENBezeichnung = Normen.EN
Technische Universität Dresden
Prof. Hußmann
Seite 7
Informatik II (Maschinenwesen)
SQL-Anfragen in Datenbankkomponenten
• Query-Komponente
– Datenzugriffskomponente
– Ähnlich einzusetzen wie Table-Komponente
– Enthält SQL-Text (dadurch sehr flexibel)
• Entwicklungsschritte:
– Query-Komponente einfügen
» Property "DatabaseName": Pfadname für Datenbankdatei
» SQL-Text eintragen
– DataSource-Komponente einfügen
» Property "DataSet": entsprechende Query-Komponente
– Nutzung der DataSource in Oberflächen-Elementen
– Property "Active" der Query-Komponente auf "true" setzen
» Datenbankzugriff erfolgt (zur Entwurfszeit)
– Programm übersetzen und starten
» Datenbankzugriff erfolgt (zur Laufzeit)
Technische Universität Dresden
Prof. Hußmann
Informatik II (Maschinenwesen)
Schriftliche Berichte erstellen
• Ein wesentlicher Zweck von Datenbanken ist die Erstellung
schriftlicher Berichte:
– Gehaltslisten, Statistiken, Bestellungen, Rechnungen, ...
• Sogenannte "QuickReport"-Komponenten ermöglichen eine
schnelle interaktive Erstellung dieser speziellen Abfragen.
• Arbeitsschritte:
– QuickRep-Komponente einfügen
» Property "Bands": Gewünschte Teilbereiche
» Property "DataSet": Tabelle für Gesamtliste
– Weitere QuickReport-Komponenten einfügen und konfigurieren:
» QRLabel: Überschriften, Texte
» QRDBText: Wiedergabe von Datenfeldinformation
• Property "DataSet": Tabelle für dieses Datenfeld
• Property "DataField": Entsprechendes Datenfeld
» QRExpr: Berechnen von Ausdrücken über Datenbestand
• Interaktiver Editor
Technische Universität Dresden
Prof. Hußmann
Seite 8
Informatik II (Maschinenwesen)