Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit ADOTable und Refresh (https://www.delphipraxis.net/13015-problem-mit-adotable-und-refresh.html)

trifid 10. Dez 2003 21:05

Re: Problem mit ADOTable und Refresh
 
Hallo,

nebenbei, Access verhält sich unter den ADO-Komponenten von Borland in gewissen Bereichen anders wie eine SAP-DB7.4 . (JET-Engine contra OLE-DB-Provider)
Von der TADOTable würde ich abraten und die TADODataSet verwenden.
Wie die TBetterAdodataset bei einer SAP-DB sich verhält gehört erstmal getestet ...
Jeder gibt zwar (s)eine Stellungsnahme ab, aber für eine profesionelle Entwicklung sind dafür keine wirklich getesteten Grundlagen oder Veröffentlichungen vorhanden. :(
Sicher ist, dass die BetterDataSet für Access-Anwendungen die bessere Wahl ist,
für klassische Datenbank-Server (wie gesagt) gehört diese auf jeden einzelnen Fall überprüft.

:!: Nochmals, was anderes geht nicht - der Rest (requery, refresh, etc.) wurden nicht sauber von Borland realisiert (ich möchte hier aber auch nicht von Bug's sprechen :wink: )
Delphi-Quellcode:
id := ADODataSet.FieldByName('FeldID').asInteger;

// irgendein SQL-Command
ADOCommand.CommandText := 'INSERT ...';
ADOCommand.Execute;

ADODataSet.Close;
ADODataSet.Open;
ADODataSet.Locate ('FeldID', id, []);

woki 11. Dez 2003 16:06

Re: Problem mit ADOTable und Refresh
 
HI,

und es ist doch ein Bug: Konstellation:

Access, Autoincrementfeld, Jet Engine (mit welchen Versionen das getestet wurde weiß ich nicht mehr, es waren mehrere)

Datensatz eingeben, posten, refresh aufrufen, es kommt die Fehlermeldung nicht genug Schlüsselinformationen. Wenn eine Funktion da ist, ud bei korrekter Verwednung sofort knallt, d.h. er versucht die Funktiona auszuführen und es kommt eine Fehlermeldung von der Datenbank... nenne ich das einen Bug.

Aber es kommt noch viel schlimmer, nicht nur das ein refresh nicht geht, es entstehen auch schnell Situationen, in denen auch ein close open nicht mehr hilft, (Fehler: Datensatz wurde von einem anderen User geändert, und das wo man allein auf seiner Entwicklungsdatenbank rumarbeitet). Hier hilft dann nur noch ein Löschen der betroffenenen Datensätze, und dann neueingeben (post close etc geht alles nicht mehr). Das hat dann dazu geführt, das ein Kollege mal im simpelsten Denkbaren Fall, eine Tabelle mit Autoincrementfeld, Anbindung an Grid, Tadotable), in schierer Verzweiflung nach jedem Post ein Close open eingefügt hat. Nach jedem Eingeben springt der Cursor in die erste Zeile, ein Glück, das ich den Auftraggeber nicht hab fluchen hören. Die Ursache liegt in einer nicht korrekten Übergabe des von der Datenbank erzeugten Autoincrementwertes nach einem insert. Somit unterscheidet sich der Schlüssel im Client von dem in der Datenbank, und so kann man sich nichteinmal einen Schlüssel merken, um über locate den Cursor nach close open wieder richtig positinieren. Der Wert seteht dann ach vor dem Close Open auf dem Client nicht für den Aufbau von Relationen zur Verfügung etc. Dieser Mechanismus funktioniert bei BDE Paradox, Dbase, und auch bei TBetteradodataset und Access, also nenne ich das einen Bug. Ein vernünftiges Arbeiten war hier gar nicht möglich, da die Probleme durch ein simples download von TBetteradodataset zu lösen war, hat Borland sich das Geld gespart, die Probleme selbst nochmal zuu lösen.

Weiterhin gibt es bei TADOTable heftige Probleme mit komplexeren Locates, da das locate auf dem Client stattfindet, und wenn man sich das Schichtenmodell das dem Zugriff über Ado auf beliebige DB's ansieht, sehe ich IMHO überhaupt keinen Grund, warum das was auf der Clientseite Fehler mit Access ausbügelt, diegleichen nicht mit anderen Datenbank ausbügelt, den die datenbankspezifischen Unterschiede werden ja in einer ganz anderen Schicht gehandelt, davon das alle Theorie keine praktischen Tests ersetzt mal abgesehen.

Zuguterletzt sei noch erwähnt, das die Verwednung von TBetteradodataset auch der offizielle Tip von Borland (TeamB) in den hauseigenen Newsgroups war.

Grüsse
Woki

Fellmer Lloyd 22. Jun 2004 14:05

Re: Problem mit ADOTable und Refresh
 
Hi!

Ich habe noch eine Frage zu den ADO Komponenten.
Das ADOTable hat ja zimlich viele Bugs. Wie siehts mit dem ADOQuery aus? Kann man das unbeschwert verwenden?

Gruss Fellmer

Fellmer Lloyd 24. Jun 2004 07:43

Re: Problem mit ADOTable und Refresh
 
*Push*

Fellmer Lloyd 25. Jun 2004 14:07

Re: Problem mit ADOTable und Refresh
 
Ich pushe das Thema noch ein letztes Mal.
Danach gehe ich davon aus, dass die in Delphi 7 mitgelieferte Komonente TADOQuery keine Fehler enthält.

Danke für alle, die sich meine Fragen angesehen haben :thuimb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr.
Seite 2 von 2     12   

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