Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Eine Zeile aus DBGrid löschen (https://www.delphipraxis.net/48854-eine-zeile-aus-dbgrid-loeschen.html)

egal 1. Jul 2005 09:35

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.

Sharky 1. Jul 2005 09:42

Re: Eine Zeile aus DBGrid löschen
 
Zitat:

Zitat von egal
Hallo,
wie kann ich in einem DBGrid die ganze Zeile löschen bzw. ausschneiden, ohne Änderungen in der Datenbank? Danke.

Hmmm... eigentlich überhaupt nicht. Das DBGrid zeigt ja einfach die Daten der TDataSource an. Und jede änderung betrifft dann auch das TDataSet.

Kompon Ente 1. Jul 2005 09:44

Hi,

ich denke hiermit sollte es gehn:

Delphi-Quellcode:
DBGrid1.Columns.Delete;
Viel Erfolg!

Treffnix 1. Jul 2005 09:54

Zitat:

Zitat von Kompon Ente
Hi,

ich denke hiermit sollte es gehn:

Delphi-Quellcode:
DBGrid1.Columns.Delete;
Viel Erfolg!

Column ist aber doch die Spalte und nicht die Zeile.

Warum änderst du nicht einfach das Statement des Datasets? Select ... where not id = 123...

egal 1. Jul 2005 09:55

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.

egal 1. Jul 2005 09:57

Zitat:

Zitat von Treffnix
Column ist aber doch die Spalte und nicht die Zeile.

Warum änderst du nicht einfach das Statement des Datasets? Select ... where not id = 123...

so geht nicht, ich habe jetzt auch meine Aufgabe genauer beschrieben, guck mal mein vorheriges Post

shmia 1. Jul 2005 10:21

Re: Eine Zeile aus DBGrid löschen
 
Zitat:

Zitat von egal
wie kann ich in einem DBGrid die ganze Zeile löschen bzw. ausschneiden, ohne Änderungen in der Datenbank?

Das geht so nicht.
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

egal 1. Jul 2005 11:06

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?

shmia 1. Jul 2005 11:58

Re: Eine Zeile aus DBGrid löschen
 
Zitat:

Zitat von egal
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?

Filter helfen dir hier nicht.
Ich würde voll auf Memory-Datasets setzen. Sowohl in der Quell- als auch Zieltabelle.
http://www.torry.net/pages.php?id=572
TkbmMem Table v.3.01 taugt wirklich was.

egal 1. Jul 2005 15:53

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 01:18 Uhr.
Seite 1 von 2  1 2      

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