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 »

Michl hat geschrieben:Unter 7.2beta steht bei mir bei ZConnection1.Protocol ado zur Auswahl.

mschnell hat geschrieben:Zeos 7.2 (beta) installiert.
Woher hast du die Version bezogen?


https://sourceforge.net/projects/zeosli ... .2.0-beta/

-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 »

TraumTaenzerDieter hat geschrieben:Oder per SVN von hier
http://svn.code.sf.net/p/zeoslib/code-0 ... sting-7.2/


OK svn läuft...

Mit dieser 7.20 beta ist kann ich ado auch als Protokoll auswählen.

Wenn ich "test1" als "Database" eintrage und ""Connected" anclicke sage er mir
"[Microsoft] ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben. "

Später Edit:

AHHHH !!!
Man muss den ODBC-Manager als der User ausführen, der das Programm laufen lässt und nicht als Admin (wozu er einen aufzufordern scheint). Die Einstellungen sind also User-spezifisch.

Nun kann ich das "Connect" Hähchen setzen.


-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 »

af0815 hat geschrieben: Ich mache deswegen kleinere, besser nachvollziehbare Schritte.

Andreas


Da bin ich sehr dankbar für !!!

-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 »

Habe auch mal kurz den Test gemacht auf meinem alten Win2kServer in der VBox.
Mehr oder weniger wie hier beschrieben: http://wiki.freepascal.org/Zeos_tutoria ... -Anwendung
Aber mit ado auf mdb.
Funktioniert auf Anhieb prima, aber beim Schließen des Formulars bekomme ich immer eine EOleException:

Code: Alles auswählen

provider cannot derive parameter information and setparameterinfo has not been called

Kennt das jemand?

Lazarus 1.6.4 r54278 FPC 3.0.2 i386-win32-win32/win64
Zeos Trunk von heute.

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 »

Einfach mal ignorieren, bis man sieht ob es wichtig ist :-)
ado ist ist ein 'neues' Ziel für den FPC. Deswegen auch die trunk (Ist bei Zeos schon fast die 'stable' Version).

BTW: Zur Info - ZEOS ist meines Wissens ürsprünglich als BDE (Boland Database Engine) entwickelt worden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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:Man muss den ODBC-Manager als der User ausführen, der das Programm laufen lässt und nicht als Admin (wozu er einen aufzufordern scheint). Die Einstellungen sind also User-spezifisch.


Es hängt davon ab, welchen DSN du nimmst.

Benutzer DSN = hängt vom Benutzer ab
System-DSN = Allgemein gültig (Kann sein, das den nur der Admin einrichten kann)
Datei-DSN = Für eine Datei, kann von mehreren Benutzern verwendet werden

Ich verwende meist den Benutzer DSN ODER wie schon vom TraumTänzer geschrieben, kann man den auch als String zusammenstoppeln. Mit den DSN sagst du eigenlich, welcher Treiber mit welcher DB zusammenpasst, bzw. kannst das ganze dann in kurzer Schreibweise eintrage (Deswegen auch von mir bevorzugt, wenn es Probleme gibt).

Ok:
Wenn die Connection einmal da ist, so kann man für das erste eine TZTable, ein DataSource und ein DBGrid auf die Form setzen.

TZTabel bekommt die TZConnection verbunden, Datasource die TZTable und das DBGrid die Datasource verbunden. Im gegensatz zu SQLDB benötigen wir keine extra TTransaction .

Dann kann man sich bei der TZTable mit dem TableName spielen. nicht vergessen, immer wieder auf active schalten. Dann sieht man schon ein wenig im Grid.

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 »

af0815 hat geschrieben:Einfach mal ignorieren, bis man sieht ob es wichtig ist :-)


Genau, oder wie schon Karl Valentin empfahl: Am besten gar nicht erst ignorieren! :lol:

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:Es hängt davon ab, welchen DSN du nimmst. ...

OK. Kompliziert aber verstehbar.

af0815 hat geschrieben:Wenn die Connection einmal da ist, so kann man für das erste eine TZTable, ein DataSource und ein DBGrid auf die Form setzen.

OK.

af0815 hat geschrieben:TZTabel bekommt die TZConnection verbunden, Datasource die TZTable und das DBGrid die Datasource verbunden. Im gegensatz zu SQLDB benötigen wir keine extra TTransaction .

OK.

af0815 hat geschrieben:Dann kann man sich bei der TZTable mit dem TableName spielen. .


Da stehen verschiedene "MS...." Tabellen zur Auswahl. Das ist vermutlich eine interne Vwerwaltung der Jet-Engine. Außerdem geibt es "Tabel1" Das ist vermutlich die einzige in dieser Datenbank (aus dem Nicht-Zeos "Access ODBC" Beispiel) definierte Tabelle.

af0815 hat geschrieben:nicht vergessen, immer wieder auf active schalten.

OK

af0815 hat geschrieben: Dann sieht man schon ein wenig im Grid.

Yeah !

Das sieht ja vielversprechend aus. (Ich stehe noch etwas auf Kriegsfuß mit diesen "Design-Time-Aktionen" und muss noch verstehen, wie ich das nutzbringend in meinem (einen) Projekt "Verkleinern der JPEGs in BLOBs in der Datenbank) einsetzen kann.

Aber wenn ich das Programm starte, bekomme ich die Fehlermeldung "Class TDBGrid not found".


-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:Aber wenn ich das Programm starte, bekomme ich die Fehlermeldung "Class TDBGrid not found".


"Class x not found" deutet oft auf ein Durcheinander zwischen Code und lfm hin.

Diese Meldung kannst du z.B. provozieren, wenn du ein DBGrid auf das Formular legst und dann im Code ", DBGrids" und "DBGrid1: TDBGrid;" manuell löschst.
Dann ist die Unit, welche das Formular braucht nicht mehr da. Es kompiliert aber trotzdem.

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 »

TraumTaenzerDieter hat geschrieben:BTW: Ich verbinde zu einer .MDB ohne DSN!
Einfach zConnection.Protocol = ado
zConnection.database = Provider=MICROSOFT.JET.OLEDB.4.0;Data Source=Kompletter_Pfad\MeineMdb.mdb


Ich vermute, das werde ich brauchen, da im endgültigen Programm der Benutzer die Datenbank-Datei aussuchen können soll.

-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:
mschnell hat geschrieben:Aber wenn ich das Programm starte, bekomme ich die Fehlermeldung "Class TDBGrid not found".


"Class x not found" deutet oft auf ein Durcheinander zwischen Code und lfm hin.

Diese Meldung kannst du z.B. provozieren, wenn du ein DBGrid auf das Formular legst und dann im Code ", DBGrids" und "DBGrid1: TDBGrid;" manuell löschst.
Dann ist die Unit, welche das Formular braucht nicht mehr da. Es kompiliert aber trotzdem.


Du hast natürlich recht ! DBgrid ist im Unit code nicht erwähnt.

Wenn ich das DBGrid löche und einen TButton platziere kommt der Fehler mit "TButton".

Wenn ich ein neues Projekt anlege und einen Button platziere, auch. Was ist das denn ?!?!? (Wenn ich von Hand "Button1: TButton;" in die TForm1 Klasse schreibe, gehts. )

-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:Wenn ich das DBGrid löche und einen TButton platziere kommt der Fehler mit "TButton".

Wenn ich ein neues Projekt anlege und einen Button platziere, auch. Was ist das denn ?!?!? (Wenn ich von Hand "Button1: TButton;" in die TForm1 Klasse schreibe, gehts. )

Keine Ahnung. Eine verkorkste Installation?

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 »

Ich habe Lazarus (Win 32) gelöscht und neu installiert. Jetzt geht es wieder.

Mit der Datenbank bin ich auch etwas weiter.

Durch die unglaubliche Design-Time Magie von Lazarus und Zeos konnte ich schonmal ein Text-Feld mit an die ZTable hängen, das mir dann wunderschön den gewünschten Feld-Inhalt der Zeile anzeigt, auf der im Grid der Cursor steht.

Nun brauche ich erstmal ein Textfeld mit einen Feldinhalt aus einer anderen Tabelle, die mit der angezeigten relational verbunden ist.

Also habe ich eine zweite ZTable und eine zweite Datasource erzeugt und die Datasource an die ZTable gehängt und die ZTable an die (einzige) Conection gehängt und in ZTable die andere Tabelle ausgesucht.

Dann ein zweites Textfeld an die zweite Datasource gehängt und den Feldnamen ausgesucht. Schon zeigt mir die IDE (und das laufende Programm) den Inhalt des Feldes im ersten Datensatz der Tabelle. Super ! (Und wie erwartet.) ... und noch keine Zeile Code geschrieben und erst recht kein SQL-Statement !!!! :D .

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 kinen Code schreiben muss...

Gruß und Dank,
-Michael
Zuletzt geändert von mschnell am Fr 14. Apr 2017, 16:17, insgesamt 1-mal geändert.

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 »

Hallo Michael,

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

Github oder so

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 »

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.

Antworten