AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit ADOTable und Refresh
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit ADOTable und Refresh

Ein Thema von Nalincah · begonnen am 9. Dez 2003 · letzter Beitrag vom 25. Jun 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von trifid
trifid

Registriert seit: 12. Sep 2003
297 Beiträge
 
#11

Re: Problem mit ADOTable und Refresh

  Alt 10. Dez 2003, 22:05
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 )
Delphi-Quellcode:
id := ADODataSet.FieldByName('FeldID').asInteger;

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

ADODataSet.Close;
ADODataSet.Open;
ADODataSet.Locate ('FeldID', id, []);
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#12

Re: Problem mit ADOTable und Refresh

  Alt 11. Dez 2003, 17:06
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
  Mit Zitat antworten Zitat
Fellmer Lloyd
(Gast)

n/a Beiträge
 
#13

Re: Problem mit ADOTable und Refresh

  Alt 22. Jun 2004, 15:05
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
  Mit Zitat antworten Zitat
Fellmer Lloyd
(Gast)

n/a Beiträge
 
#14

Re: Problem mit ADOTable und Refresh

  Alt 24. Jun 2004, 08:43
*Push*
  Mit Zitat antworten Zitat
Fellmer Lloyd
(Gast)

n/a Beiträge
 
#15

Re: Problem mit ADOTable und Refresh

  Alt 25. Jun 2004, 15:07
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 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