AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi selectedrows einer dbgrid
Thema durchsuchen
Ansicht
Themen-Optionen

selectedrows einer dbgrid

Ein Thema von stromer · begonnen am 24. Mai 2005 · letzter Beitrag vom 25. Mai 2005
Antwort Antwort
stromer

Registriert seit: 14. Aug 2004
15 Beiträge
 
#1

selectedrows einer dbgrid

  Alt 24. Mai 2005, 19:51
Datenbank: SQL • Zugriff über: BDE
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: selectedrows einer dbgrid

  Alt 25. Mai 2005, 06:10
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: selectedrows einer dbgrid

  Alt 25. Mai 2005, 06:37
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
  Mit Zitat antworten Zitat
stromer

Registriert seit: 14. Aug 2004
15 Beiträge
 
#4

Re: selectedrows einer dbgrid

  Alt 25. Mai 2005, 13:28
@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
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
  Mit Zitat antworten Zitat
stromer

Registriert seit: 14. Aug 2004
15 Beiträge
 
#5

Re: selectedrows einer dbgrid

  Alt 25. Mai 2005, 15:02
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: selectedrows einer dbgrid

  Alt 25. Mai 2005, 16:40
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
Angehängte Dateien
Dateityp: zip datafrm_122.zip (1,7 KB, 67x aufgerufen)
  Mit Zitat antworten Zitat
stromer

Registriert seit: 14. Aug 2004
15 Beiträge
 
#7

Re: selectedrows einer dbgrid

  Alt 25. Mai 2005, 19:56
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: selectedrows einer dbgrid

  Alt 25. Mai 2005, 20:29
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 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