Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Von DBGrid mit BatchMove einzelne Datensätze kopieren? (https://www.delphipraxis.net/101917-von-dbgrid-mit-batchmove-einzelne-datensaetze-kopieren.html)

LingNeu 20. Okt 2007 09:18

Datenbank: TurboDB • Zugriff über: über Dataset

Von DBGrid mit BatchMove einzelne Datensätze kopieren?
 
Hallo Delphifreunde,
habe eine Quell-Tabelle über ein DBGrid angezeigt. Sind ca. 100 Datensätze.
Im Grid kann ich die einzelnen Zeilen markieren.
Jetzt möchte ich über BatchMove diese markierten Datensätze in eine zweite, leere Ziel-Tabelle (hat die gleiche Struktur) übertragen.
Leider kopiert mir BatchMove immer alle Datensätze und nicht die markierten
Wo mache ich da einen Fehler?
Ich hoffe, mir kann geholfen werden.
Besten Dank für jeden Hinweis!!

LINGNeu

marabu 20. Okt 2007 11:13

Re: Von DBGrid mit BatchMove einzelne Datensätze kopieren?
 
Hallo,

BatchMove kennt nur die Datasets, die Markierung ist aber ein Feature des Grids. Um dein Problem mit BatchMove zu lösen kannst du vor dem Aufruf von BatchMove.Execute die Schlüssel der markierten Datensätze zwischenspeichern und diese Schlüssel für eine Filterung (OnFilterRecord) benutzen. BatchMove honoriert dann die Filtereinstellung.

Alternativ kannst du dir mal das TurboSQL-Statement INSERT INTO ... SELECT anschauen. Du musst zwar immernoch den Umfang deiner Selektion feststellen, aber immerhin ist SQL zukunftsträchtiger als die Komponente TBatchMove.

Grüße vom marabu

LingNeu 20. Okt 2007 14:19

Re: Von DBGrid mit BatchMove einzelne Datensätze kopieren?
 
@marabu,
vielen Dank für Deine Hinweise.
SQL kommt nicht in Frage, da ich keine Ahnung davon habe und die Applikation ganz klein ist.
Da werde ich mich mal an die Arbeit machen, Deinen BatchMove-Tipp umzusetzen. Habe zwar noch keinen Peiler (bin kein DB-Profi) wie ich die Schlüssel vom DBGrid abspeichere, aber vielleicht finde ich was in der Hilfe.
Wenn Du noch Lust hast, kannst Du mir vielleicht einen Tipp dazu noch geben. Ansonsten nochmals besten Dank.
ciao
LINGNeu

mkinzler 20. Okt 2007 17:41

Re: Von DBGrid mit BatchMove einzelne Datensätze kopieren?
 
Zitat:

SQL kommt nicht in Frage, da ich keine Ahnung davon habe und die Applikation ganz klein ist.
Die Einarbeitung lohnt sich aber imho trotzdem, auch wenn du auch meinst, daß du es für dieses Projekt nicht brauchst, aber höchstwahrscheinlich beim Nächsten.

LingNeu 20. Okt 2007 18:25

Re: Von DBGrid mit BatchMove einzelne Datensätze kopieren?
 
@mkinzler
danke Dir für den Tipp. Ich hab mir auch vorgenommen, mich mit diesem Thema zu beschäftigen. Hatte früher mal was mit dBase zu tun und da denke ich, werde ich das schon irgendwie lernen.
Nur kann ich das momentan nicht, da die kleine Datenselektion bis Anfang der Woche fertig werden muss, da es für eine Freundin ist und die braucht die Sache.
Bis jetzt habe ich auch noch nicht gefunden, wie man die markierten Datensätze im DBGrid auswertet. Es gibt zwar folgenden Code,
da bekomme ich aber einen Hinweis, das BookmarkValid nicht definiert ist.

Delphi-Quellcode:
for i := 0 to YourGrid.SelectedRows.Count-1 do begin
  if BookmarkValid (TBookmark(YourGrid.SelectedRows.Items[i])) then
   begin
     GotoBookmark (TBookmark(YourGrid.SelectedRows.Items[i]));
     {Tu_Was_Mit_Daten;}
  end;
end;
Schöne Grüsse
LingNeu

mkinzler 20. Okt 2007 18:40

Re: Von DBGrid mit BatchMove einzelne Datensätze kopieren?
 
Es handelt sich hier um eine Methode der TDataSet-Klasse. Es müsste also irgendwo
Delphi-Quellcode:
with <DataSet> do
stehen oder du schreibst
Delphi-Quellcode:
<DataSet>.BookmarkValid

LingNeu 20. Okt 2007 18:58

Re: Von DBGrid mit BatchMove einzelne Datensätze kopieren?
 
@mkinzler
Du bist Super! :kiss:
So funktioniert die Sache wirklich.
Ein sehr guter Hinweis.
Merci nochmals
LingNeu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:03 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