Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ZEOS blockiert Dateneingabe (https://www.delphipraxis.net/44290-zeos-blockiert-dateneingabe.html)

hsbc 17. Apr 2005 07:03

Datenbank: mySQL • Version: 4.11 • Zugriff über: Delphi 7 Professional + Zeos-Lib.

ZEOS blockiert Dateneingabe
 
Situation:

DB: mySQL
Zugriff über Zeos

Ich kann auf alle meine Daten lesend zugreifen. Sobald ich aber irgendein Datenfeld ändern möchte, werden keinerlei Zeichen von der Tastatur angenommen. Im Objektinspektor ist ReadOnly auf FALSE eingestellt.

Eigenartigerweise kann ich mit dem EMS MySQL Manager meine Daten sehr wohl ändern.
Wenn ich auf die gleiche DB über Delphi direkt (C-API) zugreife, ist ebenfalls eine Änderung der Daten möglich.

Nur der Zugriff über Zeos nervt momentan noch - irgendwo habe ich hier sicherlich etwas übersehen, einzustellen - nur wo bzw. was?

Vielleicht kann mir wieder jemand einen Tipp geben, wo ich hier zu suchen anfangen soll.

mfg
Herbert

Sharky 17. Apr 2005 07:08

Re: ZEOS blockiert Dateneingabe
 
Hai Herbert,

hast Du bei deinem ZQuery die Eigenschaft .RequestLive := True gestellt?

hsbc 17. Apr 2005 07:09

Re: ZEOS blockiert Dateneingabe
 
Hallo Sharky,

ja, habe ich

mfg
Herbert

Sharky 17. Apr 2005 07:15

Re: ZEOS blockiert Dateneingabe
 
Wie sieht den der Code mit deinem SQL-Befehl aus?
Und wie machst Du die Dateneingabe? Über ein DBGrid oder über DBEdit? oder.. oder..

hsbc 17. Apr 2005 07:30

Re: ZEOS blockiert Dateneingabe
 
Ich habe hier nur ein kleines Demo mal zum Versuch aufgebaut:

TZConnection
TZQuery mit TZConnection verbunden
TDataSource mit TZQuery verbunden
TDBGrid mit TDataSource verbunden
TDBNavigator mit TDataSource verbunden

Daten werden im Grid angezeigt. Sobald ich in das Gitter klicke und versuche, bestehende Daten zu ändern, werden die vorhandenen Daten zwar überschrieben, aber beim Versuch, den Datensatz mittels TDBNavigator zu speichern, stehen sofort wieder alle alten Daten im Gitter.

Im OnClose Ereignis von TDataSource steht noch:

Zitat:

ZQuery.ApplyUpdates;
ZQuery.CommitUpdates;
mfg
Herbert

Sharky 17. Apr 2005 07:40

Re: ZEOS blockiert Dateneingabe
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hai Herbert,

bei mir geht das alles ohne Probleme. Nur das im OnClose habe ich nicht.
Ich hänge mein Demo mal an. Du musst im Quellcode nur die Daten anpassen.

hsbc 17. Apr 2005 07:54

Re: ZEOS blockiert Dateneingabe
 
Hallo Sharky,

dein Beispiel funktioniert tatsächlich, obwohl ich jetzt am ersten Blick keinen Unterschied zu meinem Aufbau sehe. Aber ich werde mir jetzt in aller Ruhe im Detail deine Einstellungen mit meinen vergleichen und werde dann berichten, was die Schuld war.

Besten Dank mal vorläufig für die rasche Hilfe (wie immer !!!)

Was mich auch interessieren würde, wie du deinen Dateianhang hierher ins Forum gebracht hast - aber das ist eine andere Sache.

Bis dann ...

mfg
Herbert

Sharky 17. Apr 2005 08:00

Re: ZEOS blockiert Dateneingabe
 
Du hast nicht ausversehen ein ZReadOnlyQuery verwendet?

Zitat:

Zitat von hsbc
...Besten Dank mal vorläufig für die rasche Hilfe (wie immer !!!)....

Machen wir doch gerne :stupid:

Das mit dem Anhang habe ich Dir in einer PN beschrieben.

hsbc 17. Apr 2005 08:16

Re: ZEOS blockiert Dateneingabe
 
So, dies ist meine Änderung - jetzt funktioniert es:

Zitat:

vorher:

ZQuery.SQL.Clear;
ZQuery.SQL.Add('SELECT * FROM ' + ListBoxTabellen.Items[ListBoxTabellen.ItemIndex]);
ZQuery.ExecSQL;

nachher:

ZQuery.SQL.Text := 'SELECT * FROM ' + ListBoxTabellen.Items[ListBoxTabellen.ItemIndex];
Vermutlich lag es am ExecSQL - muss mal nach einer Dokumentation für ZEOS suchen - programmiere momentan "blind".

@Sharky: Jedenfalls nochmals besten Dank für deine Hilfe

mfg
Herbert

Sharky 17. Apr 2005 08:24

Re: ZEOS blockiert Dateneingabe
 
Zitat:

Zitat von hsbc
...Vermutlich lag es am ExecSQL -...

Hai Herbert,

nicht nur "Vermutlich" sonder ganz gewiss ;-)

ExecSQL wird verwendet wenn ein SQL-Befehl keine Daten zurückgibt (INSERT, UPDATE, DELETE, usw).
Wenn dein SQL-Befehl eine Datenmenge zurückgibt (SELECT) musst Du .Open verwenden.

Dies hat aber nichts mit Zeos zu tun. Das ist bei allen von TDataSet abgeleiteten Komponenten so.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr.

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