![]() |
Datenbank: SQL • Zugriff über: BDE
selectedrows einer dbgrid
hallo, wie kann ich alle datensätze eines dbgrids löschen, die nicht markiert sind,
oder wie kann ich alle markierten datensätze in ein anderes dbgrid einfügen, das zu erreichende ziel ist, dass nur die markierten datensätze alleine in einer tabelle stehen... stromer |
Re: selectedrows einer dbgrid
Hai stomer,
mit diesem Code werden alle selektierten Datensätze "durchlaufen". Damit müsstest Du dein Problem lösen könne.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ndx: integer; begin if DBGrid1.SelectedRows.Count > 0 then begin with DBGrid1.DataSource.DataSet do begin for ndx := 0 to DBGrid1.SelectedRows.Count - 1 do begin GotoBookmark(pointer(DBGrid1.SelectedRows.Items[ndx])); // Mache etwas mir dem aktieven Datensetz end; end; end; end; |
Re: selectedrows einer dbgrid
Hallo stromer,
für die Aktion "Markierung umkehren" verwende ich in meinen Programmen folgenden Code:
Delphi-Quellcode:
Eine Vorbedingung ist natürlich, dass das DBGrid mit den Options [dgRowSelect, dgMultiSelect] ausgestattet sein muss.
procedure TDataForm.InvertSelection;
var bm: TBookmark; ds: TDataSet; begin ds := DBGrid.DataSource.DataSet; bm := ds.GetBookmark; ds.DisableControls; ds.First; while not ds.Eof do begin with DBGrid.SelectedRows do CurrentRowSelected := not CurrentRowSelected; ds.Next; end; ds.GotoBookmark(bm); ds.EnableControls; end; Grüße vom marabu |
Re: selectedrows einer dbgrid
@marabu: Vielen Dank, ich habe das Gefühl, dass dein Code sehr nützlich für mich sein wird,
ich dachte daran, die auswahl umzukehren, und dann
Delphi-Quellcode:
Auszuführen, aber dann würden die daten ja auch aus dem source also der *.sql datei gelöscht,
dbgrid1.selectedrows.delete
gibt es keine möglichkeit, die ausgewählten datensätze einfach 'auszublenden', ohne dass sie aus der quelldatei gelöscht werden? ansonsten würde ich den kleinen umweg über eine Backupdatei der *.SQL gehen, bei der dann die datensätze gelöscht werden können ... stromer |
Re: selectedrows einer dbgrid
ich bins nochmal ;)
also ich habe mich jetzt dafür entschieden, zu anwendungsstart nur eine backupdatei zu erstellen und dann mit dieser zu arbeiten, mein problem dabei ist, wenn ich jetzt versuche die markierten datensätze zu löschen, wird mir angezeigt, das die datenbank einen schreibschutz hat, ist jetzt bestimmt ne dämliche frage und es tut mir auch leid um die ganze nerverei, aber wie entferne ich den schreibschutz bzw öffne die datenbank ohne schreibschutz stromer |
Re: selectedrows einer dbgrid
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo stromer,
du willst dein Anzeigeproblem dadurch lösen, dass du die Daten wirklich löschst und, damit keine echten Daten verloren gehen, willst du eine shadow table erzeugen und in dieser löschen? Welch ein Abenteuer. Schau dir mal die Demo an, die ich für dich gemacht habe. Vielleicht kommst du dann noch auf andere Gedanken. marabu |
Re: selectedrows einer dbgrid
hallo,
ein großes dankeschön als erstes für die mühe, aber ich kann mir deine datei leider nicht richtig anzeigen lassen, ich sehe immer nur den quellcode vor mir, es fehlt doch aber auch eine projektdatei oder? aber zu dem was ich bis jetzt erkennen konnte: invertselection: umkehren der markierung, wie ich es jetzt schon in meinem code verwende selectedkeys: alle markierten datensätze werden in eine stringlist kopiert(brauche aber wieder eine aneige in einem dbgrid) filterbuttonklick: alle markierten datensätze die einen bestimmten string beinhalten werden zu etwas benutzt ... Stromer |
Re: selectedrows einer dbgrid
Du musst einfach ein neues Delphi Projekt öffnen und die Unit1 gegen die DemoUnit von mir auswechseln, dann kannst du den Code in Aktion sehen.
marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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