![]() |
Datenbank: Access 2000 • Zugriff über: ADO
Eine Zeile aus DBGrid löschen
Hallo,
wie kann ich in einem DBGrid die ganze Zeile löschen bzw. ausschneiden, ohne Änderungen in der Datenbank? Danke. |
Re: Eine Zeile aus DBGrid löschen
Zitat:
|
Hi,
ich denke hiermit sollte es gehn:
Delphi-Quellcode:
Viel Erfolg!
DBGrid1.Columns.Delete;
|
Zitat:
Warum änderst du nicht einfach das Statement des Datasets? Select ... where not id = 123... |
Re: Eine Zeile aus DBGrid löschen
Das ist nicht gut. Dann muss ich StringGrid nehmen, aber das wollte ich eigentlich vermeiden, weil ich mit großen Daten arbeiten kann.
Ich muss 2 DBGrid oder 2 StringGrid nehmen und in einem Datensätze anzeigen. Der Anwender soll die Datensätze auswählen und die ausgewählte Dastensätze soll ich im zweiten Grid anzeigen, im ersten Grid soll ich sie löschen. So eine blöde Aufgabe. |
Zitat:
|
Re: Eine Zeile aus DBGrid löschen
Zitat:
Es gibt aber 2 Möglichkeiten: 1.) die Tabelle wird mit einem Feld (z.B. "DeleteFlag") erweitert. Wenn du eine Zeile löschen möchtest wird nur "DeleteFlag" auf True gesetzt. Im DBGrid werden Zeilen mit DeleteFlag=True rot eingefärbt. Am Ende kannst du entscheiden, ob die markierten Zeilen wirklich gelöscht werden oder ob nur die Lösch-Markierung auf False gesetzt wird 2.) gesamte Tabelle in ein Memory-Dataset kopieren im Memory-Dataset löschen Am Ende Memory-Dataset -> Tabelle |
Re: Eine Zeile aus DBGrid löschen
Der Anwender kann noch außerdem die ausgewählte Sätze im zweiten Grid wieder löschen, d.h. ich muss diese Sätze in meinem ersten Grid wieder anzeigen.
Soll ich vielleicht Filter verwenden? |
Re: Eine Zeile aus DBGrid löschen
Zitat:
Ich würde voll auf Memory-Datasets setzen. Sowohl in der Quell- als auch Zieltabelle. ![]() TkbmMem Table v.3.01 taugt wirklich was. |
Re: Eine Zeile aus DBGrid löschen
hm, Memory-Tabelle. Das bringt mir eigentlich auch nicht viel.
Ich beschreibe noch einmal die Aufgabe. es gibt 2 Grids. In einem wird beim Starten der Inhalt einer Tabelle angezeigt werden. Tabelle ändern darf ich nicht(DeleteFlag kann man an dieser Stelle vergessen). Der Kunde wählt einen Satz aus, dann drückt er den Button und im zweiten Grid muss dieser ausgewählte Satz angezeigt werden, im anderen Grid muss dieser Satz aber veschwunden. So, der Anwender hat zum Beispiel 10 Sätze ausgewählt, dann denkt er, ich habe einen Mist gebaut, diesen Satz brauche ich nicht. Er wählt diesen Satz aus, drückt den andern Button, der Satz muss im 2 Grid gelöscht und im ersten Grid wieder angezeigt werden. Wenn ich jetzt Memory-Data-Set mache, dann habe ich ein Problem mit der Wiederherstellung der Sätze, weil der Satz schon aus Memory gelöscht wurde. Ich hab's versucht doch mit Filter zu machen, aber das klappt nur zum ersten Mal, dann stehe ich immer auf den ersten Satz in der Datenbank und kann keine Filter mehr richtig einsetzen. Kann ich irgendwie auf eine Zelle im DBGrid greifen, wenn ich da stehe, nicht auf die Datenbank? Dann könnte ich Filter richtig einsetzen oder geht so nicht? Wenn nicht, dann muss ich wirklich wahrscheinlich Select machen und die DB immer wieder öffnen und schliessen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz