Zeos zum bearbeiten einer JET und einer SQLite - Datenbank

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von mschnell »

af0815 hat geschrieben:kannst du das Prg irgendwo hochladen, dann kann man dir etwas mehr an Input geben.

Mache ich am Dienstag.

Aber die Frage war doch eigentlich völlig allgemein un unabhängig vom aktuellen Programm gestellt.... ("Nun möchte ich aber zunächst mal, dass der Cursor der zweiten Datasource (oder ist der in der ZTable ? ) automatisch auf den relational verbundenen Satz der zweiten Tabelle springt. Wie ich das magische System bisher kennengelernt habe, vermute ich, dass man dafür auch keinen Code schreiben muss...")

Es gibt auch sozusagen gar kein Programm. ich habe nur - entsprechend Deiner Hinweise - erfolgreich die Komponenten zuammengeclickt und noch keine Zeile Code geschrieben.
-Michael.
Zuletzt geändert von mschnell am Fr 14. Apr 2017, 16:19, insgesamt 4-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von mschnell »

theo hat geschrieben:Und dann wäre auch noch hilfreich zu wissen, was momentan dein Ziel ist.
Wenn es immer noch um den Import der Access DB geht, benötigst du mMn die visuellen Komponenten überhaupt nicht.
Das verkompliziert die Sache unnötig.


Mein Ziel ist u.a., mit Zeos umzugehen zu lernen.

Mir ist klar, dass ich die visuellen Komponenten nicht wirklich brauche. Die fliegen vermutlich in der Endfassung des Programms wieder raus. Sie zeigen aber ohne dass man bereits wissen muss, wie man Dantenbank-Code schreibt, dass der Datenbank-Zugriff überhaupt funktioniert.

Deshalb bin ich Andreas sehr dankbar, mich auf diese Möglichkeit (die ich ansonsten nicht in Betracht gezogen hätte) hingewiesen zu haben.

-Michael

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von af0815 »

mschnell hat geschrieben:Es gibt auch sozusagen gar kein Programm. ich habe nur - entsprechend Deiner Hinweise - erfolgreich die Komponenten zuammengeclickt und noch keine Zeile Code geschrieben.


RAD (manche sagen Kampfklicken) ist schön und gut. Aber was du benötigst, geht sehr rasch ins Programmieren. Ich mache das meiste mit wenig RAD.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von mschnell »

af0815 hat geschrieben: Aber was du benötigst, geht sehr rasch ins Programmieren. Ich mache das meiste mit wenig RAD.

Kein Problem. Programmieren tue ich sowieso den ganzen Tag :)
Aber hier habe ich keine Idee was da zu machen ist, also das Interface zwischen Kampf-Clicken und Code schreiben.

Wie wird also zum Beispiel die Relationalität zwischen den Tabellen der Datenbank in Zeos gehandelt ?

Vielen Dank,
-Michael

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von af0815 »

mschnell hat geschrieben:Wie wird also zum Beispiel die Relationalität zwischen den Tabellen der Datenbank in Zeos gehandelt ?


Das ist bei Server-Client Datenbanken (meist SQL) und Desktoptdatenbanken anders. Am Server kann das direkt verwaltet und durchgestzt werden, bei der Desktop muss es am Client geschehen. Das hat nichts mit ZEOS zu tun. Für ZEOS kann man sich an der guten alten BDE orientieren. Bzw. auch an den Dokus für SqlDB, da viele Funktionen ganz einfach gleich sind.

Bei Dektop (und Server) geht das über die Mastersource. Dort wird die Haupttabelle angegeben und die Clienttabelle (das ist die wo du die Mastersource einträgst) liefert dann für jeden Masterdatensatz die entsprechenden Einträge in der Clienttabelle.
Am SQL-Server löst man das einfach mit einem JOIN auf. Siehe https://www.w3schools.com/sql/sql_join.asp

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von theo »

Für etwas mehr automatisierte Kontrolle auch https://www.w3schools.com/sql/sql_foreignkey.asp

Da kann man auch "referentielle Aktionen" dranhängen. z.B.:

Code: Alles auswählen

 
 FOREIGN KEY (parent_id)
        REFERENCES parent(id)
        ON DELETE CASCADE


https://dev.mysql.com/doc/refman/5.7/en ... -keys.html

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von mschnell »

af0815 hat geschrieben:Das ist bei Server-Client Datenbanken (meist SQL) und Desktoptdatenbanken anders. Am Server kann das direkt verwaltet und durchgestzt werden, bei der Desktop muss es am Client geschehen. Das hat nichts mit ZEOS zu tun.


Ich hatte gehofft, dass Zeos genau solche Unterschiede zwischen verschiedenen Datenbank-Typen für das Userprogramm transparent macht :(

Ich verstehe den funktionalen Unterschied zwischen "Server-Client Datenbank" und "Jet" auch nicht. Es macht doch nicht zwingend einen Unterschied ob das "Server"-Programm nun auf einem anderen Rechner läuft oder eine DLL ist. Doch falls Jet tatsächlich keine Rationalität kann, ist dann natürlich eben so. Könnte aber bei SQLite schon wieder anders sein.

Aber ehrlich gesagt, weiß ich gar nicht, ob in der "Jet" Datenbank diese Relationalität überhaupt hinterlegt ist. Ich hatte das angenommen, weil es offensichtlich sinnvoll ist.


af0815 hat geschrieben:Für ZEOS kann man sich an der guten alten BDE orientieren. Bzw. auch an den Dokus für SqlDB, da viele Funktionen ganz einfach gleich sind.


Das kenne ich natürlich alles nicht. Ich suche mal ...

af0815 hat geschrieben:Bei Dektop (und Server) geht das über die Mastersource. Dort wird die Haupttabelle angegeben und die Clienttabelle (das ist die wo du die Mastersource einträgst) liefert dann für jeden Masterdatensatz die entsprechenden Einträge in der Clienttabelle.


"Mastersource" habe ich gesehen. Ist also nicht spezifischs für Zeos ? Hört sich jedenfalls easy an, auch wenn ich nicht weiß, was "liefert" genau bedeutet ....

af0815 hat geschrieben:Am SQL-Server löst man das einfach mit einem JOIN auf. Siehe https://www.w3schools.com/sql/sql_join.asp

Unter "einfach mit einem JOIN " kann ich mir noch überhaupt nichts vorstellen. Ich schaue mir Deinen URL an. Aber Du meinst ja für Jet und SQlite gilt das nicht. Und das sind zunächst die einzigen Dantenbanken ,mit denen ich mich beschäftigen will/muss.

Herzlichen Dank für all Deine Tipps,
-Michael
Zuletzt geändert von mschnell am Sa 15. Apr 2017, 21:49, insgesamt 3-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von mschnell »

theo hat geschrieben:Für etwas mehr automatisierte Kontrolle auch https://www.w3schools.com/sql/sql_foreignkey.asp

Da kann man auch "referentielle Aktionen" dranhängen. z.B.:

Code: Alles auswählen

 
 FOREIGN KEY (parent_id)
        REFERENCES parent(id)
        ON DELETE CASCADE


https://dev.mysql.com/doc/refman/5.7/en ... -keys.html


Tut mir leid, ich habe keine Ahnung wo ich das hinschreiben könnte....

Wie gesagt, habe ich in dem Projekt bisher keine Zeile Code geschrieben, weder Pascal noch SQL.

Gilt das auch für Jet und SQLite ? Andreas sagt ja da giibt es einen Unterschied zu C/S Datenbanken, die ja anscheinend in https://www.w3schools.com/sql/... beschrieben werden.

Gruß und Dank,
-Michael
Zuletzt geändert von mschnell am Sa 15. Apr 2017, 21:51, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von theo »

mschnell hat geschrieben:Gilt das auch für Jet und SQLite ? Andreas sagt ja da giibt es einen Unterschied zu C/S Datenbanken, die ja anscheinend in https://www.w3schools.com/sql/... beschrieben werden.


https://sqlite.org/foreignkeys.html
Ist aber vielleicht für dich im Moment noch nicht so wichtig.
Vergiss es und beschäftige dich besser zuerst mit den Grundlagen.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von mschnell »

theo hat geschrieben:https://sqlite.org/foreignkeys.html

AHA !!! Super ! Immerhin SQLite, Aber auch Jet ?

Anscheinend Ja, aber vielleicht mit anderer Syntax (was Zeos u.U. glätten könnte) -> https://en.wikibooks.org/wiki/JET_Datab ... Constraint


theo hat geschrieben:Ist aber vielleicht für dich im Moment noch nicht so wichtig.
Vergiss es und beschäftige dich besser zuerst mit den Grundlagen.

Yep !

-Michael

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von mschnell »

theo hat geschrieben:Ist aber vielleicht für dich im Moment noch nicht so wichtig. .

"Foreign Key" sieht aus wie die Lösung für den übernächsten Schritt in meinem selbst-definierten Zeos "Training on the Job".
Da Theo ja gerne Ziel-orientiert denkt hier die Schritte:

1. Zeos-Version mit Jet-Datenbank Möglichkeit installieren: geschafft

2. Attach zu einer beliebigen JET Datenbank: Teilweise geschafft mit Hilfe des Windows ODBC-Alias. ToDo: Datenbank-Datei mit File-Open Dialog suchen und Datenbank öffnen. Lösung wurde im Forum Thread bereits aufgezeigt.

3. Alle Felder einer Tabelle anzeigen: geschafft

4. zusätzlich Text-Inhalt eines (entsprechend der Cursor-Position) assoziierten Feldes in eine anderen Tabelle anzeigen: aktuelle Aufgabe

5. Statt alle Felder einer Tabelle, einige der assoziierten Felder mehrerer Tabellen in einem Grid anzeigen: da könnte "Foreign Key" helfen

6. nicht alle Zeilen auslesen/darstellen, sondern nur die, die einem bestimmten Kriterium entsprechen (Hier der "Haupt"-Satz" ist in einer referenzierten Tabelle mit einer bestimmten "Galerie") assoziiert.

7. aus einem assoziierten Feld den BLOB-Inhalt auslesen

8. den BLOB-Inhalt als JPEG-Bild darstellen

9. das JEPEG-Bild mit einer anderen Kompressions-Rate umformatieren

10. das umformatierte JPEG-Bild in den BLOB zurückschreiben.

11. den Vorgang automatisch für alle dem Kriterium entsprechenden Sätze laufen lassen.

-Michael

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von theo »

mschnell hat geschrieben:5. Statt alle Felder einer Tabelle, einige der assoziierten Felder mehrerer Tabellen in einem Grid anzeigen: da könnte "Foreign Key" helfen

6. nicht alle Zeilen auslesen/darstellen, sondern nur die, die einem bestimmten Kriterium entsprechen (Hier der "Haupt"-Satz" ist in einer referenzierten Tabelle mit einer bestimmten "Galerie") assoziiert.


Einfach mal SQL Lernen. Das geht auch ohne Lazarus Forum:

Such dir ein Tutorial aus: https://www.google.com/search?q=sql+tutorial

Man muss nicht alles auf Anhieb kapieren.
Ich lerne sporadisch seit 15 Jahren SQL und habe kaum die Hälfte der "Features" verinnerlicht. :wink:

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von mschnell »

theo hat geschrieben:Einfach mal SQL Lernen. Das geht auch ohne Lazarus Forum:
Such dir ein Tutorial aus: https://www.google.com/search?q=sql+tutorial


Gerne. (Wie du gesehen hast habe ich ja auch das Wiki über die Jet-Datenbank-Syntax gefunden, das anscheinend noch niemand auf dem Schirm hatte.)

Dazu müsste ich aber auch wissen, wo ich denn irgendwelches SQL hinschreiben soll und was das da bewirken würde. (Dafür ja der Zeos-Kurs, den ich gerade versuche zu absolvieren...)

Ein "Problem" (=Recherche-Aufgbe) ist, dass Zeos und/oder die Lazarus-DB-Komponenten ja diverse Standard - Funktionalitäten zur Verfügung stellen, ohne dass man "von Hand" SQL schreiben soll. Bevor man in SL einsteigt ist also zu klären, inwieweit dre entsprechend Kram nicht sowieso schon "Lieferumfang" ist.

-Michel
Zuletzt geändert von mschnell am So 16. Apr 2017, 18:09, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von theo »

Um SQL zu lernen brauchst du weder Zeos noch Lazarus. Und ja, du wirst dann sehr wahrscheinlich SQL benötigen.

Das Tut bei w3schools.com kann man interaktiv benutzen. Da kannst du den Code auch selber hinschreiben.
z.B. hier
https://www.w3schools.com/sql/trysql.as ... lect_where

Click "Run SQL" und schau was ausgegeben wird.

Dann tippe bei "SQL Statement" was anderes rein und danach "Run...".
z.B.

Code: Alles auswählen

SELECT * FROM Customers
WHERE Country LIKE 'A%';

oder

Code: Alles auswählen

SELECT OrderID, CustomerName FROM Orders
LEFT JOIN Customers ON Customers.CustomerID=Orders.CustomerID


usw.
Einfach lernen. CU in 3 weeks... :wink:

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos zum bearbeiten einer JET und einer SQLite - Datenba

Beitrag von mschnell »

theo hat geschrieben:Click "Run SQL" und schau was ausgegeben wird.:

Du willst also verhindern, dass ich Lazarus einsetze, damit ich Dich nicht weiter nerve !
Kann ich verstehen, kommt mir nicht besonders sinnvoll vor.

Zu irgend einem Zweck müssen die entsprechenden Jungs doch die Lazarus DB-Komponenten und Zeos erfunden haben. (Oder auch die Jungs die Delphi gemacht haben.)

Sooo abwegig kommt mir meine "Agenda" eigentlich gar nicht vor.

(Übrigens: in einem vorigen Eintrag wurde angemerkt, dass "Join" bei Jet Datenbanken gar nicht geht (also zumindest nicht ohne Zeos). "FOREIGN KEY" scheint die DLL dagegen zu können...)

-Michael

Antworten