AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid nur markierte Datensätze löschen
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid nur markierte Datensätze löschen

Ein Thema von Quake · begonnen am 19. Apr 2005 · letzter Beitrag vom 20. Apr 2005
Antwort Antwort
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#1

DBGrid nur markierte Datensätze löschen

  Alt 19. Apr 2005, 11:34
Datenbank: FB • Zugriff über: IBX
Hallo,

ich möchte nur die markierten Datensätze aus einem DBGrid löschen. Dazu verwende ich folgenden Code:
Delphi-Quellcode:
while MyGrid.SelectedRows.Count>0 do
begin
  if MyDataSet.BookmarkValid(pointer(MyGrid.SelectedRows.Items[0]))then
  begin
    MyDataSet.GotoBookmark(pointer(MyGrid.SelectedRows.Items[0]));
    MyDataSet.Delete;
  end;
  MyGrid.SelectedRows.Refresh;
end;
Das dumme daran ist nur, dass MyGrid.SelectedRows.Count trotz des Refresh nicht ändert. Irgendwann kommt dann immer eine Exception 'Datensatz nicht gefunden', was auch logisch ist da MyGrid.SelectedRows.Count ja nie weniger wird.

Und dieser Code funktioniert in meinem Fall genauso wenig.
Delphi-Quellcode:
for i:=0 to MyGrid.SelectedRows.Count-1 do
begin
  if MyDataSet.BookmarkValid(pointer(MyGrid.SelectedRows.Items[i]))then
  begin
    MyDataSet.GotoBookmark(pointer(MyGrid.SelectedRows.Items[i]));
    MyDataSet.Delete;
  end;
  MyGrid.SelectedRows.Refresh;
end;

ciao Martin
  Mit Zitat antworten Zitat
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: DBGrid nur markierte Datensätze löschen

  Alt 19. Apr 2005, 11:45
Hallo Martin,

ich würde die markierten Datensätze erst in ein Array kippen und anschließend an Hand des Arrays
löschen das macht dich unabhängig von irgendwelchen unzuverlässigen DataSet- oder DBGrid-Refresh-
routinen.

Grüße

Frank
Frank
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

Re: DBGrid nur markierte Datensätze löschen

  Alt 19. Apr 2005, 12:09
Hallo Martin
Delphi-Quellcode:
begin
  DBGrid1.DataSource.DataSet.DisableControls;
  while DBGrid1.SelectedRows.Count > 0 do
  begin
    DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows[0]));
    DBGrid1.DataSource.DataSet.Delete;
    DBGrid1.SelectedRows.Refresh;
  end;
  DBGrid1.DataSource.DataSet.EnableControls;
end;
MfG
Stevie
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: DBGrid nur markierte Datensätze löschen

  Alt 19. Apr 2005, 16:21
@Stivie: Das funktioniert auch nicht da das ja nur eine etwas andere Schreibeweise ist wie mein Code.
MyGrid.DataSource.DataSet ist das Gleich wie MyDataSet.
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: DBGrid nur markierte Datensätze löschen

  Alt 20. Apr 2005, 07:58
Moin moin,

ich bin jetzt über den Hinter am Knie vorbei zum Herz gegangen . Es geht halt nicht anders (zu mindes in meinem Fall). Ich habe es so ähnlich gemacht, wie Frank es vorgeschlagen hat.
1. Erzeugen einer TList
2. Speichern aller Datensatz-IDs (primary key)
3. Alle Datensätze löschen die in der Liste vermerkt sind.

Trotzdem Danke an euch.

ciao
Martin
  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 04:37 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