Autor Beitrag
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 27.09.02 00:23 
Hallo leute

ich habe eine übersicht über alle vorhandenen Datensätze die auf einem ibdataset basiert und die eine eigene transaktion besitzt.

Nun füge ich im context einer zweiten transaction einen datensatz in die tabelle ein und mache ein refresh auf die daten. Dann bekomme ich aber den neuen datensatz nicht angezeigt.

Die einfüge Transaction mach ein commit zum Beenden und das klappt auch einwandfrei. In der Lese-Transaction habe ich read_commited eingestellt.
Wenn ich die Lese tabelle schließe und wieder öffne geht es aber. Nur das möchte ich nicht zwingend, da dann ja ewig viele daten beim einfügen neu geladen werden. (ca 6000 - 10000 datensätze)
Kann mir wer helfen?

Gruß
Ken
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 27.09.02 07:39 
Hi
das Problem liegt in der Implementierung von Refresh in TDataSet. Es tritt immer dann auf wenn Daten von einer SQL-Datenbank abgerufen werden und lässt sich auch nicht umgehen.
Die einzige Lösung ist das Schliessen und Öffnen deiner ersten Abfrage. Und hier würde ich auch versuchen die Menge der Daten einzugrenzen um das Ganze zu beschleunigen.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 27.09.02 09:18 
Guten Morgen. *gähn*

Danke für die Antwort Lothar. Ok, dann werde ich das halt machen.
Das mit dem eingrenzen ist so eine sache.
Aber egal. wenn ich die Daten nun nicht in einem DB-Grid anzeige, sondern dem user eine eingabemaske zur verfügung stelle, wo er dann immer nur mit next und prior durchscrollen kann, dann werden doch nicht sofort alle daten angefordert, oder?

gruß
KEn
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 27.09.02 10:17 
Hi
vollkommen korrekt. Bei so grossen Datenmengen ist der Verzicht auf DBGrid die beste Lösung. Leider sind die Anwender da meist anderer Meinung :(
Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 27.09.02 11:30 
Danke für den hinweis.

Ich habe das jetzt umgestellt, kann auch durch die daten mittels next und prior scrollen.

Aber wenn ich nun durch eine andere Transaction einen datensatz einfüge, kann ich den trotzdem nicht annavigieren. Die anzahl der datensätze stimmt zwar, aber an der stelle des neuen datensatzes ist jetzt nicht der neu eingefügt, sondern befindet sich die kopie eines anderen.
Was mache ich denn jetzt falsch???
Gruß
Ken
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 27.09.02 11:47 
Hallo,

kurze Zwischenfrage : wenn ich mit WHERE die Datenmenge einkreise, dann würden doch in dem Grid nur die gewünschten Werte drin stehen.

Sollte der Parameter für where indiziert werden oder geht es auch ohne Index, bzw. wie wirkt sich das ganze jeweils aus ?

Gruß
Hansa
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 27.09.02 12:03 
Hi
auch wenn du mittels navigator auf die Daten zugreifst, kommst du um das öffnen und schliessen der Datenmenge nicht drumrum. Und dann sollte auch dein Datensatz vorhanden sein.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 27.09.02 14:26 
Und wie sieht es aus, wenn ich nur mit einem dataset arbeite und dann darauf ein insert aufrufe? sind die daten nach dem post in dem dataset verfügbar?
´Wirklich gutes design wäre das wohl nicht, oder? *g*

Gruß
Ken
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 27.09.02 14:29 
Zitat:

Wirklich gutes design wäre das wohl nicht, oder?

Ne, nicht wirklich :wink:
Aber du könntest die beiden Operationen innerhalb einer Transaktion ablaufen lassen.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
CenBells Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 27.09.02 14:31 
wäre das dann besser?

aber, ich glaube, das hat nicht geholfen. Ich werde nochmal testen
ansonsten mache ich es mit close open

Danke und nochmal gruß
Ken