Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi selectedrows einer dbgrid (https://www.delphipraxis.net/46421-selectedrows-einer-dbgrid.html)

stromer 24. Mai 2005 19:51

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

Sharky 25. Mai 2005 06:10

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;

marabu 25. Mai 2005 06:37

Re: selectedrows einer dbgrid
 
Hallo stromer,

für die Aktion "Markierung umkehren" verwende ich in meinen Programmen folgenden Code:

Delphi-Quellcode:
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;
Eine Vorbedingung ist natürlich, dass das DBGrid mit den Options [dgRowSelect, dgMultiSelect] ausgestattet sein muss.

Grüße vom marabu

stromer 25. Mai 2005 13:28

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:
dbgrid1.selectedrows.delete
Auszuführen, aber dann würden die daten ja auch aus dem source also der *.sql datei gelöscht,
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

stromer 25. Mai 2005 15:02

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

marabu 25. Mai 2005 16:40

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

stromer 25. Mai 2005 19:56

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

marabu 25. Mai 2005 20:29

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 13:45 Uhr.

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