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