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 1 von 2  1 2      
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

Problem mit ADOTable und Refresh

  Alt 9. Dez 2003, 14:03
Immer wenn ich mit das aufrufe (Steht in TADOTable.AfterPost), also nen Datensatz poste

TADOTable.Refresh; Krieg ich ne Fehlermeldung:

Code:
Nicht genügend Schlüsselfeldinformationen zum Aktualisieren
Liegt das an der TADOTable? Oder muss ich noch was beachten
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von trifid
trifid

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

Re: Problem mit ADOTable und Refresh

  Alt 9. Dez 2003, 16:59
Hallo,

probier es mal damit
verwende statts einen
   ADOtable.Refresh; folgende Zeilen
Delphi-Quellcode:
   ADOtable.Close;
   ADOtable.Open;
  Mit Zitat antworten Zitat
woki

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

Re: Problem mit ADOTable und Refresh

  Alt 9. Dez 2003, 17:05
Hi,

ist ein Bug in der TAdotable, wenn Du Dir ganz viel Ärger ersparen willst, zieh dir TBetterAdodataset aus dem Netz. Ist Freware, links über Google oder auch per Suche hier in der DP.

Grüsse
Woki
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#4

Re: Problem mit ADOTable und Refresh

  Alt 10. Dez 2003, 07:25
@trifid: Bringt mir nichts. Dann bin ich nach dem "open" beim ersten Datensatz. Das will ich aber nicht.
@woki: Hab ich schon, bin aber noch nicht ganz durchgestiegen

Ausserdem hab ich bei mir jetzt noch nen TClientDataSet und nen TDataSetProvider eingebaut, und in meinem ClientDataSet in AfterPost das reingeschrieben

ClientDataSet1.ApplyUpdates(0); Jetzt wird zwar beim posten der Datensatz gespeichert, aber wenn ich unter dieser zeile ein ClientDataSet1.Refresh ausführe, passiert nix. Ich muss die Tabelle schließen und wieder öffnen, dann bin ich aber wieder beim ersten Datensatz und bei großen Tabellen ist das auch eine nicht sehr gute Lösung
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#5

Re: Problem mit ADOTable und Refresh

  Alt 10. Dez 2003, 09:28
welchen Datenbanktreiber nutzt du?
welche Datenbank?
bei den ADO hilft eigentlich immer zum refreshen nur die holzhammermethode
cose und dann open
diesen tip habe ich vom Andreas Kosch - und der sollte es wissen

aber hier noch eine andere ausführung aus dem Entwicklerforum
Zitat:
intern ruft Refresh die Methode Resync des eigentlichen ADO Objektes auf, falls dies unterstützt wird. Das bedeutet, dass für jede angezeigte Zeile ein SELECT auf die Datenbanktabelle angesetzt wird um diese zu aktualisieren. D.h. du solltest eigentlich die Änderungen innerhalb der Daten nun sehen können (bei mir funktioniert es bei gleichen Voraussetzungen). Was allerdings hier nicht funktioniert, ist die Anzeige von neuen Zeilen, also wenn ein anderer Benutzer über INSERT neue Zeilen einfügt. In diesem Fall musst du die Methode Requery aufrufen. Mit ihr wird das SELECT deiner Abfrage noch einmal neu ausgeführt!
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#6

Re: Problem mit ADOTable und Refresh

  Alt 10. Dez 2003, 09:37
Zitat von HomerGER:
welchen Datenbanktreiber nutzt du?
welche Datenbank?
bei den ADO hilft eigentlich immer zum refreshen nur die holzhammermethode
cose und dann open
diesen tip habe ich vom Andreas Kosch - und der sollte es wissen

aber hier noch eine andere ausführung aus dem Entwicklerforum
Zitat:
intern ruft Refresh die Methode Resync des eigentlichen ADO Objektes auf, falls dies unterstützt wird. Das bedeutet, dass für jede angezeigte Zeile ein SELECT auf die Datenbanktabelle angesetzt wird um diese zu aktualisieren. D.h. du solltest eigentlich die Änderungen innerhalb der Daten nun sehen können (bei mir funktioniert es bei gleichen Voraussetzungen). Was allerdings hier nicht funktioniert, ist die Anzeige von neuen Zeilen, also wenn ein anderer Benutzer über INSERT neue Zeilen einfügt. In diesem Fall musst du die Methode Requery aufrufen. Mit ihr wird das SELECT deiner Abfrage noch einmal neu ausgeführt!
Datenbank: SAP DB 7.4
Also das Refresh mit ADOTable klappt gar nicht. Mit dem BetterADODataSet funktioniert nur das Requery bzw. das Refresh wenn ich RefreshType := rtRequery gesetzt hab, was aber beides das gleiche ist, oder?

Auf jeden Fall hab ich nach nem Requery zwar alle Datensätze aktualisiert, aber leider bin ich dann immer beim ersten Datensatz.

Kann das an nem Insert liegen? Es geht darum, dass wenn ich nen neuen Datensatz einfüge ein Trigger ausgeführt wird der im ID-Feld automatisch einen Wert anlegt. Will einfach nur das direkt nach dem Insert ein Refresh aufgerufen wird, damit der Wert sofort angezeigt wird und ich die Tabelle nicht neu öffnen muss (Also kein Close/Open). Geht das überhaupt?
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
woki

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

Re: Problem mit ADOTable und Refresh

  Alt 10. Dez 2003, 15:48
Zitat von General2003:

Datenbank: SAP DB 7.4

Kann das an nem Insert liegen? Es geht darum, dass wenn ich nen neuen Datensatz einfüge ein Trigger ausgeführt wird der im ID-Feld automatisch einen Wert anlegt. Will einfach nur das direkt nach dem Insert ein Refresh aufgerufen wird, damit der Wert sofort angezeigt wird und ich die Tabelle nicht neu öffnen muss (Also kein Close/Open). Geht das überhaupt?
Fändest Du es nicht etwas fairer gegenüber den Leuten,die bereit sind ihre Zeit zu investieren um dir zu helfen, diese Informatinen von Anfang an preiszugeben, statt erstmal alle im trüben fischen zu lassen?
Also bei Datenbankproblemen gehören doch auf jeden Fall die verwendeten Komponenten, die Datenbank, alles mit Versionen und das genaue Vorgehen gleich in die Frage.

Grüsse
Woki
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#8

Re: Problem mit ADOTable und Refresh

  Alt 10. Dez 2003, 15:52
Schon klar das mit der Frage. Aber ich wusste erst nicht woran der Fehler liegt, da es bei jeder Tabelle und bei der Datenbank passiert. Auch bei z.B. Access-Datenbanken
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
woki

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

Re: Problem mit ADOTable und Refresh

  Alt 10. Dez 2003, 16:30
Zitat von General2003:
Schon klar das mit der Frage. Aber ich wusste erst nicht woran der Fehler liegt,
Wenn Du's schon wüßtest, bräuchtest Du ja auch nicht zu fragen. Auch was Du schon probiert hast, gehört als Info mit dazu. Um gleich weiter im Dunkeln zu tappen, bei Access hattest Du es wahrscheinlich mit einem Autoincrementfeld getestet?
Bei Access im Zusammenhang mit einem Autoincrementfeld ist es ein Bug, da hilft TBetteradodataset (kann man genauso verwenden wie eine TTable, muß man nur einstellen, du solltest aber mal auf SQL und Queries umsteigen, wenn du mit anderen Dingen als filebasierten Desktopdatenbanken arbeitest), Auf den Bug hatte ich auch einfach mal blind getippt.
Bei der Version mit dem Trigger wäre auch verwunderlich wenn es funktionierte, denn für das refresh müßte er ja die Datensätze, die von der Datenbank kommen, mit den lokalen abgleichen, wie soll er das, wenn ein Trigger zwischendurch den Schlüssel eines Datensatzes verändert hat, wie soll er den dann für den Abgleich wiederfinden, ich denke hier kann man so nicht vorgehen.

Grüsse
Woki
  Mit Zitat antworten Zitat
Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#10

Re: Problem mit ADOTable und Refresh

  Alt 10. Dez 2003, 17:55
wenn du access als DB benutzt welchen treiber ?
jet und wenn ja welche version auf weelchen os?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:13 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