Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeos + MySQL + Update kommt nicht an (https://www.delphipraxis.net/40414-zeos-mysql-update-kommt-nicht.html)

dizzy 15. Feb 2005 14:16

Datenbank: MySQL • Version: 4.1.9 • Zugriff über: ZEOS Lib

Zeos + MySQL + Update kommt nicht an
 
Hallo, Freunde der Nacht.

Ich bekomme via Zeos-Lib meine Daten aus einem Grid einfach nicht in meine MySQL-DB hinein.

Folgender Aufbau:
ZConnection ist connected und ReadOnly = false
Daran hängt ein ZQuery mit RequestLive = true
Daran wiederum ein ZUpdateQuery

An dem Query ist eine DataSource, die ihrerseits an ein DBGrid + DBNavigator angeflanscht ist.

Also ein im Grunde ganz simpler Aufbau zum Editieren der Tabellen mit Vollzugriff und ohne sonstigen Schnickschnack.

Werden jetzt Änderungen/Hinzufügungen im Grid gemacht, und via Navigator gepostet, so gibt es keinerlei Fehlermeldungen aber die Tabelle bleibt leer. Zwar bleiben die gemachten Einträge bis zum Reload im Grid, aber die DB ist leer. Die Query ist auch keine zusammengejointe, sondern ein simples "SELECT * FROM xyz". ZQuery.CachedUpdate ist auch false, und mein Latein am Ende :).

One single Word: HILFE :)

Sharky 15. Feb 2005 14:29

Re: Zeos + MySQL + Update kommt nicht an
 
Hai dizzy des Tages ;-)

Ich mache das ganze ohne ein UpDateQuery und es geht ohne Probleme.

Igotcha 15. Feb 2005 14:33

Re: Zeos + MySQL + Update kommt nicht an
 
Hallo dizzy,

ein paar Sachen scheinen mir etwas durcheinandergewürfelt zu sein bei Dir...

Grds. kann man für den Fall eines "SELECT * FROM ..." einen Zeos-Table nehmen. Tabelle aus der Datenbank zuweisen und fertig.

Der Fehler bei Dir liegt wahrscheinlich nicht im ZConnection, die Du ja richtig auf "ReadOnly=false" gesetzt hast, sondern im ZQuery. Es gibt davon 2 bei Zeos ein ReadOnly und eins, welches Updaten kann.

Entweder hast Du das falsche ZQuery genommen, oder beim richtigen ReadOnly auf true zu stehen.

Wenn Du nichts sortieren möchtest o.ä., würde ich das Ganze so machen:

DBGrid -> TDataSet -> ZTable -> ZConnection

Gruß Igotcha

dizzy 15. Feb 2005 14:49

Re: Zeos + MySQL + Update kommt nicht an
 
Danke euch beiden, aber so wirklich klappt beides nicht...
Arbeite ich ohne UpdateObject, so gibt's eine Exception der Zeos ("Can not update this Querytype"). Mit UpdateObject ist die schonmal weg, nur passiert garnix ^^.

Zitat:

Zitat von Igotcha
Grds. kann man für den Fall eines "SELECT * FROM ..." einen Zeos-Table nehmen. Tabelle aus der Datenbank zuweisen und fertig.

Das ist für diesen einfachen Fall okay, aber im Endprodukt soll es dann ganz anders zugehen. Dort brauche ich auf jeden Fall eine Query, auch editierbar, damit ich Zeiträume usw. filtern kann.

Zitat:

Zitat von Igotcha
Der Fehler bei Dir liegt wahrscheinlich nicht im ZConnection, die Du ja richtig auf "ReadOnly=false" gesetzt hast, sondern im ZQuery. Es gibt davon 2 bei Zeos ein ReadOnly und eins, welches Updaten kann.

Entweder hast Du das falsche ZQuery genommen, oder beim richtigen ReadOnly auf true zu stehen.

Es ist das ZQuery - beim ZReadOnlyQuery kann ich ja kein UpdateObject angeben.


Zitat:

Zitat von Igotcha
Wenn Du nichts sortieren möchtest o.ä., würde ich das Ganze so machen:

DBGrid -> TDataSet -> ZTable -> ZConnection

Als akkute Lösung okay, aber nichts für den Endkunden (s.o.)


Mit den "normalen" DB-Kompos geht's doch so schön einfach, waurm nicht hier auch? :)

Igotcha 15. Feb 2005 14:53

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von dizzy
Mit den "normalen" DB-Kompos geht's doch so schön einfach, waurm nicht hier auch? :)

Also bei mir, und ich benutze nur Zeos, funktioniert auch dieses wunderbar ;-)

Jelly 15. Feb 2005 14:54

Re: Zeos + MySQL + Update kommt nicht an
 
Also ich nutze auch die Query um Daten inzufügen, das alles ganz problemlos?

Mal ganz dumm gefragt? Hast du die nötigen Berechtigungen in MySQL überhaupt Daten einzufügen. Ich seh keinen Fehler in deiner Lösung.

Oder nutzt du vielleicht einen anderen Tabellentyp als MyISAM? Vielleicht fehlt dir ein Commit, falls du InnoDB verwendest?

dizzy 15. Feb 2005 14:55

Re: Zeos + MySQL + Update kommt nicht an
 
Könnte es damit zusammenhängen, dass ich Windows NT 4.0 Client einsetzen muss(!) ?
(Wobei mich das wundern würde - sonst hätte spätestens der MySQL-Administrator sicherlich gemeckert...)

dizzy 15. Feb 2005 15:00

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von Jelly
Oder nutzt du vielleicht einen anderen Tabellentyp als MyISAM? Vielleicht fehlt dir ein Commit, falls du InnoDB verwendest?

Ich benutze InnoDB, Tatsache. Aber leider wüsste ich jetzt nicht so dirket wo ich den Commit anbringen sollte... Ich steh da etwas auf dem Schlauch nach > 2h Rumprobieren ohne Erfolg :stupid:

Jelly 15. Feb 2005 15:15

Re: Zeos + MySQL + Update kommt nicht an
 
In TZConnection gibst in dem Zusammenhang die Methoden
Delphi-Quellcode:
  StartTransaction ;
  Commit ;
  Rollback ;
Setze mal ein StartTransaction in dein BeforeEdit und BeforeInsert Ereignis, und ein entsprechendes Commit in dein AfterPost.

Nachtrag: Eventuell reicht es auch schon aus, TransactIsolationLevel auf eine anderen Wert als taNone zu setzen?

dizzy 15. Feb 2005 15:23

Re: Zeos + MySQL + Update kommt nicht an
 
Das klang zunächst vielversprechend, aber leider keine Änderung. Was mich auch sehr stutzig macht ist, dass ich ohne UpdateObject o.g. Exception bekomme. Nur weiss ich mit dieser Klasse nicht umzugehen, da ich keine Ahnung hab ob da noch was rein muss, oder ob es reicht sie auf's Formular zu legen, und an das Query zu binden.
So langsam tendiere ich ja fast wieder zu Paradox-Tabellen :stupid: :D


\\edit: Das Transactionlevel brachte leider auch nix. Ich glaube eher, dass das Query irgendwie einen fehlerhaften Update-String erzeugt, da ja die Exception kommt. Das UpdateObject in leerer Form scheint diesen String zu leeren, so dass einfach nichts passiert. So erkläre ich mir die aktuelle Situation, aber zu lösen weiss ich sie nicht...

Jelly 15. Feb 2005 15:30

Re: Zeos + MySQL + Update kommt nicht an
 
Hast du eventuell einen falschen Treiber (Protokoll) gewählt?
Wie verhält es sich denn, wenn du manuell im Code einen Datensatz einfügst und deine Select-Query anschliessend neu öffnest?

dizzy 15. Feb 2005 15:35

Re: Zeos + MySQL + Update kommt nicht an
 
Ein manueller INSERT funktioniert völlig problemlos...

Jelly 15. Feb 2005 15:44

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von dizzy
Ein manueller INSERT funktioniert völlig problemlos...

Also liegts nicht an Zeos, sondern wahrscheinlich an deiner Bindung DBGrid-Datasource-Dataset!

dizzy 15. Feb 2005 15:55

Re: Zeos + MySQL + Update kommt nicht an
 
Code:
ZConnection -> ZQuery -> DataSource -> DBGrid
                  |            |
                  |            +-----> DBNavigator
                  |
                  +----> ZUpdateQuery
Ohne die Bindung zum UpdateQuery gibt's die Exception, mit selbiger keine, aber auch keine Daten in der DB.
Jetzt hab ich schon gesehen: Ich nutze MySQL 4.1, habe aber nur die DLLs bis 4.0. Jedoch: Ein manueller Insert müsste dann ja auch fehlschlagen :?.
Jetzt bin ich völlig verwirrt :freak:

Jelly 15. Feb 2005 16:01

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von dizzy
Jetzt bin ich völlig verwirrt :freak:

Ich merks... Geht dir aber nicht allein so. Mein Latein ist auch am Ende. :pale:

Sharky 15. Feb 2005 16:01

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von dizzy
...Jetzt bin ich völlig verwirrt :freak:

Wie ich schon in meiner PM geschrieben habe verwende ich die Zeos 6.5.1-alpha build. Da sich ja mit Version 4.1 vom mySQL die Art der Passwortspeicherung geändert hat. Wie konntest Du denn überhaupt mit einer anderen auf deinen mySQL zugreiffen. Ausser Du hast keine Passwörter gesetzt.

dizzy 15. Feb 2005 16:07

Re: Zeos + MySQL + Update kommt nicht an
 
Wie auch grad per PM geschrieben: Es gibt eine Lösung zu dem Passwortproblem. Da ich aber keine Alpha-Version der Zeos-Lib verwenden wollte, da dies ein kommerzielles Produkt wird, bei dem es um abrechnungsrelevante Daten geht, hab ich natürlich die vorige "release" genommen :?
Gibt es etwas in der Alpha, was sie u.U. "kritisch" macht?

Sharky 15. Feb 2005 16:12

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von dizzy
...Gibt es etwas in der Alpha, was sie u.U. "kritisch" macht?

Die letzte "Final" unterstützt meines wissens den mySQL 4.1 nicht richtig.
Ich habe mit der alpha noch überhaupt keine Probleme gehabt.

dizzy 15. Feb 2005 16:17

Re: Zeos + MySQL + Update kommt nicht an
 
Tjo, dann werde ich jetzt mal die Alpha antesten. (Wie bekomm ich die alte jetzt nur wieder sauber weg? *sigh*)
Ich habe da so die Vorahnung, dass das die Problemlösung sein könnte :)

Es sei allen Beteiligten schon mal ganz überschwenglich gedankt! :thumb:
Ich denke ich werde mich morgen intensiv und in neuer Frische damit beschäftigen, für heute hab ich genug Magensäure gebildet :D.

Herzlichen,
Fabian

Sharky 15. Feb 2005 16:27

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von dizzy
... (Wie bekomm ich die alte jetzt nur wieder sauber weg? ....

Als erstes über "Komponenten - Packages Installieren" die ganzen Zeos-Dinger entfernen. Dann die ganzen Zeos*.bpl im Verzeichniss: Delphix\Projects\Bpl\ löschen. Dann die neue Version installieren wie in der Install.html angegeben.

dizzy 15. Feb 2005 16:48

Re: Zeos + MySQL + Update kommt nicht an
 
Buhuuuuu! Ich hab's doch getan. Neue Version (danke Sharky) sauber installiert, Projekt neu gebastelt, Connect klappt, und es gibt die selbe ekelige Exception wie oben. Ich brech zusammen...
In letzter Konsequenz muss ich mir die Update-Strings selber basteln, aber das kann es eigentlich nicht sein. Zumal ich das DBGrid dann getrost vergessen kann :?.
Ich werd morgen alles nochmal frisch installieren und tüdeln, und mal sehen was dann ist. Vielleicht scheint ja morgen die Sonne über Zeos-Land :).

Sharky 15. Feb 2005 18:08

Re: Zeos + MySQL + Update kommt nicht an
 
Hai dizzy,

ich kann das einfach nicht verstehen. Kannst Du das Projekt (inkl. der SQL-Codes zum erzeugen der Tabellen) mal anhängen? Da muss doch irgendwo anders der Wurm drinnen stecken.

dizzy 15. Feb 2005 18:40

Re: Zeos + MySQL + Update kommt nicht an
 
Ich werd morgen gleich als erstes gleich ein kleines Test-Projekt hochladen. Jetzt bin ich vom Platz weg, und komme da nicht mehr dran.
:dp:

dizzy 16. Feb 2005 11:07

Re: Zeos + MySQL + Update kommt nicht an
 
Liste der Anhänge anzeigen (Anzahl: 1)
Södale! Heute, nach ganz gutem Frühstück, bin ich mit neuem Elan dran gegangen. Hab Delphi erstmal komplett gekillt, neu installiert, und eine ganz frische Zeos 6.5.1 dazu gepackt.
Jetzt hab ich den Kaffee aber auch schon wieder auf, weil das o.g. Problem mit der Exception hält sich beständig. Es ist nichts dran zu rütteln :cry:

Ich hab jetzt mal ein kleines Testprog gebaut, dass einfach nur eine Table mit Navigator enthält, und einen Button bei dessem Click ein Insert-Statement "manuell" gesendet wird. Das nämlich klappt, die Bearbeitung im Grid (bzw. das Post dazu) klappt nicht.

Die Einstellungen in ZConnection1 müssen natürlich an die lokalen Umstände angepasst werden ;).
Das Create-Statement der erwarteten Tabelle:
SQL-Code:
CREATE TABLE `dsk`.`dizzytest` (
  `Index` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `C001` INTEGER UNSIGNED NOT NULL,
  `C002` VARCHAR(45) NOT NULL,
  `C003` DOUBLE NOT NULL,
  PRIMARY KEY(`Index`)
)
TYPE = InnoDB;
Funktioniert dieses Progrämmchen (bzw. das Editieren im Grid) bei euch (bzw: dir, Sharky *liebäugel* ;))?

Mann was wäre ich froh wenn das laufen würde. Ich muss bis ende nächster Woche eine präsentationsfähige Vorabversion mit größtenteils implementierter Funktionalität ankarren :?.
Danke euch nochmals, und im Voraus :)

:dp:

\\edit: Nehme ich anstelle der ZQuery ein ZTable, so klappt alles ganz wunderbar! Aber ich kann mit ner Table leider nicht viel anfangen, da ich zuweilen recht komplexe Filter brauche, die sich via SQL ganz gut machen ließen, und der Benutzer eigentlich nie ganze Tabels vorgesetzt bekommen soll, sondern nur maskiertes Zeug :).
Irgendetwas läuft da reichlich schief, aber ich komme auch mit Durchwühlen des Zeos-Forums und Debugging quer durch die Zeos-Units nicht wirklich weiter. Keine Ahnung :?

dizzy 16. Feb 2005 15:38

Re: Zeos + MySQL + Update kommt nicht an
 
So langsam glaube ich a) ich bin unfähig, oder/und b) MySQL hasst mich zu tiefst :cry:

Ich habe jetzt mal Zeos ganz raus gelassen, da das o.g. Problem ja nunmal innerhalb der Komponenten auftritt, und keine Lösung in Sicht ist. (Habe auch im Zeos-Forum gepostet, aber vor 1 Monat ist da ja nicht mit Hilfe zu rechnen ;)).
Ich habe jetzt einfach mal versucht über ADO dran zu kommen. Also: Aktuellen ODBC-Treiber gesaugt, installiert, und eine Datenquelle auf meine DB eingerichtet -> Test beim Einrichten erfolgreich.
Delphi auf, ADOConnection drauf, ConnectionString zusammengebastelt, Test -> "EOleException: Schwerer Fehler" tolle Fehlerbeschreibung :evil:.
Ich habe mit ADO und Paradox schon erfolgreich zusammen gearbeitet - ist nicht so, dass ich da ganz planlos dran bin. Aber ich komme mir so vor.
Egal was ich mache, ich komme nicht zum Ziel :wall:

\\edit: Das Testen des ConnectionStrings meldet: Fehler beim Initialisieren des Providers: Schwerer Fehler.
Supie ^^

dizzy 16. Feb 2005 16:06

Re: Zeos + MySQL + Update kommt nicht an
 
So! Hab's jetzt doch mit ADO hinbekommen. Zeos ist für mich erstmal gestorben :evil:. Der Mehraufwand der Installation und Einrichtung einer Datenquelle ist ja mal kaum ein Gegenargument - Hauptsache es klappt auch mit dem LiveUpdate.

Der Trick war: Man darf keinen Anfangskatalog angeben, wenngleich die Möglichkeit besteht, und sogar die verfügbaren Kataloge im DropdownMenue stehen.

Ganz herzlichen Dank an euch, und besonders Sharky für seine Testerei mit mir :).

Ich betrachte dieses Thema nun als erledigt (endlich) *froi*.


Gruss,
Fabian

Sharky 17. Feb 2005 06:56

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von dizzy
....Ich betrachte dieses Thema nun als erledigt ....

Ich nicht ;-)
Sorry, gestern hatte ich keine Zeit mich darum zu kümmern.

So, soll ich dir jetzt die Lösung für Zeos sagen (habe 45 sekunden gebraucht) oder lieber nicht?

Also..... frage mich jetzt nicht warum..... aber durch diese Änderung deines SQL-Querys von:
Delphi-Quellcode:
SQL.Add('SELECT * FROM `dizzytest`;');
in
Delphi-Quellcode:
SQL.Add('SELECT * FROM dizzytest');
habe ich den Fehler "entfernt"

Jelly 17. Feb 2005 08:49

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von Sharky
Also..... frage mich jetzt nicht warum..... aber durch diese Änderung deines SQL-Querys von:
Delphi-Quellcode:
SQL.Add('SELECT * FROM `dizzytest`;');
in
Delphi-Quellcode:
SQL.Add('SELECT * FROM dizzytest');
habe ich den Fehler "entfernt"

Wo es hier nicht an den Hochkommata `` liegt, sondern am abschliessenden ;

Das Problem ist mir mal aufgefallen, als ich ein SQL Skript auf die Art ausführen wollt. Da hat ZEOS auch rumgezickt. Warum dem so ist, weiss ich auch nicht?

Sharky 17. Feb 2005 09:06

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von Jelly
...Wo es hier nicht an den Hochkommata `` liegt, sondern am abschliessenden ;...

Hai Jelly,
bei mir ist es genau umgedreht. Das abschliessende ; macht mir keine Sorgen, dafür aber die ``

Jelly 17. Feb 2005 09:28

Re: Zeos + MySQL + Update kommt nicht an
 
Was soll ich sagen :wall:
Sind wohl noch längst nicht ausgereift, die ZEOS Komponenten... Ich benutze für ein Projekt noch ne uralte Version von Zeos, da klappts einwandfrei mit den ``.

Naja, zumindest ist das Problem jetzt mal erkannt.

dizzy 17. Feb 2005 09:39

Re: Zeos + MySQL + Update kommt nicht an
 
Ich brech nochmal zusammen :wall:. Just as simple as it can be, woll? Da denkt man, man tut SQL was gutes wenn man die Syntax verwendet, die vom eigenen Administrationstool generiert wird, und nööö, besser anders :lol:.
(Die ` waren's, das Semikolon ist okay. Mit ` und ohne ; gibt's bei mir den gleichen Fehler.)
Und dafür mach ich so einen Aufstand. Sorry :D
(Den Tipp hatte ich just auch im Zeos-Forum bekommen - viel schneller als ich das erwartet hatte.)

Jetzt stehe ich vor dem Problem: Nehm ich jetzt die MyODBC-Variante, oder Zeos? Mit den ADO-Kompos hab ich schon mal gearbeitet. Auf der anderen Seite ist nativer Zugriff auch nicht übel... Gibt es relevante Geschwindigkeitsunterschiede?

Hihi, zu erst ging garnix, und jetzt kann ich mich nicht für eines entscheiden. Sachen gibts...


:dp: - Fabian

Sharky 17. Feb 2005 09:42

Re: Zeos + MySQL + Update kommt nicht an
 
Hai dizzy,

die Frage ist wohl was weniger Aufwand bedeutet? Bei den ZEOS reicht es ja die DLL mit im Anwendungsverzeichniss zu haben.
Und andere "Fehler" sind mir noch nicht untergekommen bei ZEOS. Ausserdem hat man den Quellcode :-)

dizzy 17. Feb 2005 20:39

Re: Zeos + MySQL + Update kommt nicht an
 
Zitat:

Zitat von Sharky
die Frage ist wohl was weniger Aufwand bedeutet?

Eigentlich eher die Performance zur Laufzeit. Der Installationsaufwand ist eigentlich völlig egal, da das Programm incl. SQL-Server nur ein einziges Mal auf einem einzigen PC bei einem einzigen Kunden installiert wird, und das auch durch uns, und nicht den Kunden.

Zitat:

Zitat von Sharky
Bei den ZEOS reicht es ja die DLL mit im Anwendungsverzeichniss zu haben.
Und andere "Fehler" sind mir noch nicht untergekommen bei ZEOS. Ausserdem hat man den Quellcode :-)

Ich verwende jetzt auch erstmal wieder Zeos. Irgendwie kommt die mir, trotz der Umstände die ich (indirekt) u.a. auch ihr zu verdanken hatte, doch sympathischer daher als so ein unpersönlicher Treiber :D.

Nochmals ganz dickes Danke, und sobald ich wieder fest stecke ruf ich wieder laut in die DP hinein :). Bisher aber klappt alles nach Wunsch *froi*.


Schlaft gut,
Fabian


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz