Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Kopieren aus DBGrid1 in DBGrid (https://www.delphipraxis.net/132961-kopieren-aus-dbgrid1-dbgrid.html)

mkinzler 28. Apr 2009 22:20

Re: Kopieren aus DBGrid1 in DBGrid
 
Komsich, eigentlich müsste beides vom Typ TBytes sein :gruebel:

Dieter11 28. Apr 2009 22:50

Re: Kopieren aus DBGrid1 in DBGrid
 
Das dachte ich auch.
Der Pointer springt nur nicht auf den markierten Datensatz sondern nur auf den 1.

mkinzler 28. Apr 2009 22:51

Re: Kopieren aus DBGrid1 in DBGrid
 
Welche Delphiversion?

hoika 29. Apr 2009 14:01

Re: Kopieren aus DBGrid1 in DBGrid
 
Hallo,

mach mal ganz am Anfang (vor der for-Schleife)

Delphi-Quellcode:
DBGrid1.SelectedRows.Refresh;

Heiko

Dieter11 29. Apr 2009 19:58

Re: Kopieren aus DBGrid1 in DBGrid
 
Hallo,
Delphi-Quellcode:
DBGrid1.SelectedRows.Refresh;
hat nichts gebracht.
Ich nutze die Delphi Version: 2007

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

hoika 29. Apr 2009 20:17

Re: Kopieren aus DBGrid1 in DBGrid
 
Hallo,

stimmen denn die SelectedRows.Count mit den tatsächlich
markierten Zeilen überhaupt überein.

Nimm doch zur Not völlig separate Queries zum DB-Update.
Ich habe DBGrid nie benutzt.


Heiko

mkinzler 29. Apr 2009 20:26

Re: Kopieren aus DBGrid1 in DBGrid
 
Ich finde es irgendwie komisch, dass
Zitat:

Delphi-Quellcode:
DBGrid1.DataSource.DataSet.GotoBookmark(DBGrid1.SelectedRows.Items[i]);

fehlerhaft sein soll

hoika 29. Apr 2009 20:47

Re: Kopieren aus DBGrid1 in DBGrid
 
Hallo,

ist es nicht
das ist aus der Hilfe zu SelectedRows -> Beispiele

DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DB Grid1.SelectedRows.Items[i]));

klar hätte man auch statt DBGrid1.DataSource.DataSet
das direkte AdoQuery nehmen können.

Die Hilfe bezieht sich aber AFAIK auf die BDE
(wobei TDataSet ja BDE-unabhängig ist)


Heiko

Dieter11 29. Apr 2009 20:53

Re: Kopieren aus DBGrid1 in DBGrid
 
Hier noch einmal der Code:
Delphi-Quellcode:
begin
  inherited;

  with dm_Nails4You_Artikel do
  BEGIN
     ADOQuery_Preisliste.Active := False;
     ADOQuery_Preisliste.SQL.Clear;

     ADOQuery_Preisliste.SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung) VALUES( :ID, :Bezeichnung)';
     ADOQuery_Preisliste.Parameters.ParseSQL(ADOQuery_Preisliste.SQL.Text, true);

     with DBGrid1.DataSource.DataSet do
     begin

//     DBGrid1.SelectedRows.Refresh;
     for i := 0 to DBGrid1.SelectedRows.Count - 1 do
     BEGIN

       DBGrid1.DataSource.DataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));

       ShowMessage('i: ' + InttoStr(i) );

       ADOQuery_Preisliste.Parameters.ParamValues['ID'] := AdoQuery_Artikel.FieldValues['id'];
       ADOQuery_Preisliste.Parameters.ParamValues['Bezeichnung'] := AdoQuery_Artikel.FieldValues['Bezeichnung'];

       ADOQuery_Preisliste.ExecSQL;
    End;

  end;
end;
Die Schleife for i := 0 to DBGrid1.SelectedRows.Count - 1 do funktioniert. Es wird tatsächlich zu jedem Datensatz im Grid gesprungen. D.h., dass auch DBGrid1.DataSource.DataSet.GotoBookmark(pointer(DB Grid1.SelectedRows.Items[i])); funktioniert.
Aber dann wird immer nur der 1. Datensatz kopiert.

mkinzler 29. Apr 2009 20:56

Re: Kopieren aus DBGrid1 in DBGrid
 
Zitat:

Zitat von Delphi-Hilfe
Anmerkung: Unidirektionale Datenmengen unterstützen keine Bookmarks. Wenn Sie GotoBookmark für eine solche Datenmenge aufrufen, ändert sich der aktive Datensatz nicht.



Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr.
Seite 4 von 5   « Erste     234 5      

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 by Thomas Breitkreuz