EleLa - Elektronik Lagerverwaltung Hilfe

Extras - Datenbank

Unter dem Reiter "Datenbank" kann direkt ein SQL-Befehl eingegeben werden. Damit ist es möglich alle Daten anzuzeigen und zu editieren oder löschen. Bevor man mit diesem mächtigen Werkzeug die Daten ändert solle man unbedingt ein Backup der Datenbank erstellen.

Auf der linken Seite in der Baumstruktur sind alle Tabellen mit den Feldern der Tabellen gezeigt. Felder vom Typ "String" zeigen zusätzlich die Feldlänge "(xxx)" an. Mit Drag&Drop können Tabellen und Feldnamen in das SQL Eingabefeld gezogen werden.
Bei MariaDB/MySQL und SQLite werden zusätzlich die angelegten Views mit angezeigt. Bei MariaDB/MySQL werden zusätzlich die selbst angelegten Functions angezeigt.

Die Datenbank öffnet bei SELECT oder SHOW eine Tabelle, bei anderen Befehlen wird der SQL-Befehl ausgeführt, z.B. UPDATE zeigt keine Tabelle. Mit der Taste "Execute" kann ein SQL Befehl ausgeführt werden. Alle SQL-Befehle werden unter "Log" in das Logbuch geschrieben, woraus man sie wieder kopieren kann (Historie).
Die Daten in der Tabelle können sogar manipuliert werden. Wenn Felder mit einem "ID" im Feldname geändert werden kann die Konsistenz der Daten nicht gewährleistet werden.
Das Häkchen "MultiInsert" ist nur sichtbar bei Benutzung der SQLite Datenbank. Hier werden MySQL Tabellen-Inserts, die als Mehrzeilige Inserts ausgeführt sind automatisch einzeln nacheinander ausgeführt, denn dies unterstützt SQLite nicht.

Bei einer SELECT Anfrage werden die Felder je nach Feldname formatiert um die Lesbarkeit zu erhöhen:

Feldname Datentyp Formatierung
EPreis, GPreis, Aufwand, Raster. ValFloat Real Zahl als 0.00##
Gewicht Real Zahl als 0.###
Tree_Typ_ID Integer Anzeige des Typ-Baumes wie bei "Bauteil"
SMD, Top Integer Anzeige Ja / Nein
* * Begrenzung der Display-Width auf 25 Zeichen

Sobald eine Tabelle mit SELECT geöffnet wurde kann sie gedruckt oder mit der Export-Funktion exportiert werden.

Unterhalb der Tabelle ist ein Memo-Eingabefeld. Dieses Feld ist nötig um die Memo Felder editieren und anschauen zu können. Um eine Spalte mit dem Memo Feld zu verbinden muss zu erst in die Tabelle auf das gewünschte Feld geklickt werden. In der Tabelle wird ein Memo-Feld nur mit "(MEMO)" gezeigt.

Mit der Taste "Alles Öffnen" können alle Tabellen der anderen Reiter aktualisiert werden. Alternativ kann auch das Programm geschlossen und wieder geöffnet werden. Dies ist nötig wenn Daten über diese "Datenbank"-Funktion direkt manipuliert werden.

Doppelklick in der Tabelle springt bei bestimmten Feldern in die entsprechende Ansicht von EleLa:

Taste Beschreibung
Speichere Änderung
Abbruch ohne speichern
Löschen Eintrag
Druck als Tabelle
Alt + e führt Taste "Execute" aus

Demo-SQL Scripte

Abfrage der Lagerliste mit allen eingelagerten Bauteile, Gehäuseart sowie Einzel- und Gesamtpreis und Hersteller sowie der Summe der Einkauspreise:

SELECT b.ID, b.tree_typ_ID, b.Bezeichnung AS Bezeichnung,
 v.Bezeichnung AS VBez, g.Bezeichnung AS CBez, v.SMD,
 k.Bezeichnung AS KBez, l.LagerNr, SUM(l.Menge) AS Menge, a.Bezeichnung AS AdrBez,
 v.EPreis, (v.EPreis * SUM(l.Menge)) AS GPreis
FROM bauteil b
 LEFT JOIN bauteilvariante v ON (b.ID = v.Bauteil_ID)
 LEFT JOIN bauteilkiste l ON (l.BauteilVariante_ID = v.ID)
 LEFT JOIN gehause g ON (g.ID = v.Gehause_ID)
 LEFT JOIN kiste k ON (k.ID = l.Kiste_ID)
 LEFT JOIN adr a ON (a.ID = v.Adr_ID)
 GROUP BY b.ID, g.ID, v.ID
ORDER BY Bezeichnung

Anzeige wie viele Bauteile bereits angelegt wurden:

SELECT COUNT(ID) FROM bauteil

Komprimieren der Datenbank (nur SQLite und PostgreSQL):
Vor einem Komprimieren sollte unbedingt die Datenbankdatei *.SQ3 gesichert werden. Ein Komprimieren baut die Datenbank neu auf und entfernt dabei alle gelöschten Datensätze. Es muss sichergestellt sein, dass kein zweites Programm die Datenbank während dem Komprimieren benutzt.

VACUUM

Anzeige wie viele Lagerplätze/Kisten je BauteilVariante vergeben wurden:

SELECT COUNT(ID) AS cnt, MAX(Bauteil_ID) AS Bauteil_ID, BauteilVariante_ID
FROM bauteilkiste
GROUP BY BauteilVariante_ID
ORDER BY cnt DESC

SQL Scripte sind oft Abhängig vom jeweiligen SQL Server, spezielle Abfragen haben zum Teil einen etwas anderen SQL Syntax. Details dazu müssen in der Doku des jeweiligen SQL Server Herstellers nachgelesen werden. Beispiel www.SQLite.org.


© 2010-2024 by Markus Müller