Entwickler-Ecke
Datenbanken - Datensatz in interbase eingefügt, beim refresh nicht da...
CenBells - Fr 27.09.02 00:23
Titel: Datensatz in interbase eingefügt, beim refresh nicht da...
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 - 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
CenBells - 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 - 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
CenBells - 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 - 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 - 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
CenBells - 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 - 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
CenBells - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!