Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DB-Grid - letzter Datensatz (https://www.delphipraxis.net/200319-db-grid-letzter-datensatz.html)

MarcRB75 9. Apr 2019 11:05

DB-Grid - letzter Datensatz
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe mit einem DB-Grid ein Darstellungsproblem:

Ich setze einen Filter in einer DB und wenn ich den Filter entferne, wird im DB-Grid der letzte Datensatz leer dargestellt, obwohl es einen letzten Datensatz noch gibt.

Setze ich wieder einen Filter, dann werden alle Datensätze angezeigt. Wenn ich ihn wieder entferne, fehlt mir die letzte Zeile.

Kennt jemand das Problem oder hat davon schon gehört? Warum wird mir der DS nicht angezeigt?

Könnte mir da bitte jemand weiterhelfen?

hoika 9. Apr 2019 11:57

AW: DB-Grid - letzter Datensatz
 
Hallo,
mache nach dem Filter setzen ein

Lösung1:
DataSet.Close;
DataSet.Open;

oder
Lösung2:
DataSet.First;

DataSet = deine Query oder Table

MarcRB75 9. Apr 2019 12:39

AW: DB-Grid - letzter Datensatz
 
Danke für Deine Nachricht.

Ahhh... okay ... das werde ich gleich mal versuchen.

MarcRB75 9. Apr 2019 13:01

AW: DB-Grid - letzter Datensatz
 
Also es ist mal wieder alles sehr seltsam ....

Die ursprüngliche Lösung:
Einmal geht es, einmal nicht.

Die neue Lösung:
Bis jetzt gibt's keine Problem.
Wäre ja super, wenn es so bleibt.

Danke nochmal.

hoika 9. Apr 2019 13:24

AW: DB-Grid - letzter Datensatz
 
Hallo,
welche der beiden Lösungen hast du benutzt, 1 oder 2?

Delphi.Narium 9. Apr 2019 14:11

AW: DB-Grid - letzter Datensatz
 
Lösung 3?

Nach dem Filtersetzen / -aufheben dem Grid sagen, es möge sich bitte neu zeichnen?

Close und Open sind sicherlich eine Lösung und bei vielen Datensätzen erhöht es vermutlich den Kaffeekonsum ;-)

Wenn ich zum Filtern schon Close und Open nutze, kann ich auch statt des Filters direkt eine per SQL entsprechend angepasste Datenmenge selektieren ;-)

hoika 9. Apr 2019 14:13

AW: DB-Grid - letzter Datensatz
 
Hallo,
Zitat:

Wenn ich zum Filtern schon Close und Open nutze, kann ich auch statt des Filters direkt eine per SQL entsprechend angepasste Datenmenge selektieren
Dann kann ich aber nicht das schöne AutoEdit der TTable-Komponente benutzen ..., so ;)

Delphi.Narium 9. Apr 2019 14:19

AW: DB-Grid - letzter Datensatz
 
Wieso nicht, mach' ich bei den Querykomponenten auch immer, hat immer funktioniert.

Egal ob TQuery, TADOQuery, TZQuery ...

Egal wo die Daten herkommen, bei meinen DBGrids kann ich immer im Grid die Daten bearbeiten.

Ausnahme: Man hat im SQL Daten mehrere Tabellen zusammengejoint, dann geht ein Autoedit nicht mehr bzw. beim Post fragt die Datenbank an, was das denn bitteschön soll. Teilweise funktioniert aber selbst das, wenn man im SQL sicherstellt, dass von allen betroffenen Tabellen alle Schlüsselspalten mit in der Ergebnismenge sind. (Und nein: Elegant und/oder empfehlenswert ist das nicht.)

Bei 'nem Select * from Tabelle where Spalte = :Wert klappt das wunderbar.

MarcRB75 9. Apr 2019 19:15

AW: DB-Grid - letzter Datensatz
 
Also ich habe das jetzt anders gelöst:

Zum einen verwende ich:
DBGrid.DataSource.DataSet.EnableControls;
DBGrid.DataSource.DataSet.DisableControls;

Und dann benutze ich zwei Tabellen bei der Datenbank.
Die eine ist die "für das sichtbare Grid".

Und die 2. Tabelle, sich für das - unsichtbare Grid -. Also das erstelle ich bei der Laufzeit.
Beide filtere ich mit dem selben Filter.

Dann benutze ich die unsichtbare Tabelle, ändere, das ggf. beim Datensatz zu ändern ist und dann aktualisiere ich das
sichtbare Grid wieder und schon fehlt mir keine Zeile mehr und vor allem, die Zeile springt mir nicht mehr zur Mitte, sondern
der zu ändernde Datensatz bleibt im sichtbaren Grid dort, wo er vor der Anderung war.
Ich muss dazu aber sagen: ich ändere nur Datensätze und lösche keine oder füge neue hinzu.

(Diese Hopserei/Springerei, war ja auch schrecklich) ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz