Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

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)

Dieter11 22. Apr 2009 22:08

Datenbank: MS Access 2007 • Version: 2007 • Zugriff über: ADO

Kopieren aus DBGrid1 in DBGrid
 
Hallo Zusammen,

ich versuche Daten aus einem Grid in ein 2. Grid zu kopieren:

Delphi-Quellcode:
procedure Tfrm_Testformular.DBGrid1DblClick(Sender: TObject);
var
  currentID: Integer;

begin

  with dm_Nails4You_Artikel do
  begin

    with ADOQuery_Artikel do
    Begin

       currentID := AdoQuery_Artikel.FieldValues['id'];
       ShowMessage('CurrentID: ' + IntToStr(CurrentID));

       SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung, VK_Netto, VK_Brutto) SELECT Artikel.ID, Artikel.Bezeichnung, Artikel.VK_Netto, Artikel.VK_Brutto FROM Artikel WHERE Artikel.ID = 17';
       Parameters.ParseSQL(SQL.Text, true);
       Parameters.ParamValues['ID'] := currentID;

       ExecSQL;
    End;
  end;
end;
Das Ergebnis aus ShowMessage ist immer CurrentID: 1.
Anschliessend erhalte ich die Meldung: ADOQuery_Artikel: Parameter 'ID' nicht gefunden.

Hinter dm_Nails4You_Artikel steckt je ein ADOQuery und ein DataSource beider Tabellen. Die zu kopierenden Felder der Tabellen sind identisch.

Weiss jemand Rat?

Gruss

Dieter

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

mkinzler 22. Apr 2009 22:22

Re: Kopieren aus DBGrid1 in DBGrid
 
Ich würde zuerst den select machen und dann in der Schleife den entsprechenden Insert

Dieter11 23. Apr 2009 20:43

Re: Kopieren aus DBGrid1 in DBGrid
 
Ich habe das SQL-Statement mit festen ID (also z.B. 16) in Access getestet, da läuft es ohne Probleme.

Das Problem liegt m.E. im Parameter.

Wenn ich die Prozedure so ändere, funktioniert diese auch.

Delphi-Quellcode:
procedure Tfrm_Testformular.DBGrid1DblClick(Sender: TObject);

var
  currentID: Integer;

begin

  with dm_Nails4You_Artikel do
  begin

    with ADOQuery_Artikel do
    Begin
       SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung, VK_Netto, VK_Brutto) SELECT Artikel.ID, Artikel.Bezeichnung, Artikel.VK_Netto, Artikel.VK_Brutto FROM Artikel WHERE Artikel.ID = 16';

       ExecSQL;
    End;
  end;
end;
Füge ich aber die Parameter ein, erhalte ich die Fehlermeldungen.

[edit=mkinzler]Delphi-Tag eingefügt. das nächste Mal bitte selber machen! Mfg, mkinzler[/edit]
[edit=mkinzler]BBCode reaktiviert Mfg, mkinzler[/edit]

mkinzler 23. Apr 2009 20:48

Re: Kopieren aus DBGrid1 in DBGrid
 
Zeig mal den nicht funktionierenden Code

Dieter11 23. Apr 2009 20:59

Re: Kopieren aus DBGrid1 in DBGrid
 
Delphi-Quellcode:
procedure Tfrm_Testformular.DBGrid1DblClick(Sender: TObject);

var
  currentID: Integer;

begin

  with dm_Nails4You_Artikel do
  begin

    with ADOQuery_Artikel do
    Begin

      currentID := AdoQuery_Artikel.FieldValues['id'];
//       ShowMessage('CurrentID: ' + IntToStr(CurrentID));

       SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung, VK_Netto, VK_Brutto) SELECT Artikel.ID, Artikel.Bezeichnung, Artikel.VK_Netto, Artikel.VK_Brutto FROM Artikel WHERE Artikel.ID = :Currentid';
       Parameters.ParseSQL(SQL.Text, true);
       Parameters.ParamValues['ID'] := currentID;

       ExecSQL;
    End;
  end;
end;
[edit=mkinzler]Das mit dem Formatieren war ernst gemeint :warn: Mfg, mkinzler[/edit]

mkinzler 23. Apr 2009 21:02

Re: Kopieren aus DBGrid1 in DBGrid
 
Der Parameter heisst auch Currentid
Delphi-Quellcode:
Parameters.ParamValues['Currentid'] := currentID;

Dieter11 23. Apr 2009 21:24

Re: Kopieren aus DBGrid1 in DBGrid
 
Danke.
Jetzt habe ich folgendes Phänomen:
Es wird immer nur der 1. Datensatz aus der Tabelle "Artikel" in die Tabelle "Preisliste" kopiert, unabhängig vom angeklickten Datensatz.
Beim 2. Versuch, erhalte ich folgende Fehlermeldung: "Could not convert variant of type (Null) into type (Integer).

mkinzler 23. Apr 2009 21:27

Re: Kopieren aus DBGrid1 in DBGrid
 
Verwendet ADOQuery_Artikel die Artikeltabelle, in die du einfügen willst? Dann kannst du auf das 2. Select ja verzichten und direkt die Werte des aktuellen DS einfügen lassen.

Dieter11 23. Apr 2009 21:30

Re: Kopieren aus DBGrid1 in DBGrid
 
Es sind unterschiedliche Tabellen. Nur die im Select angegebenen Datenfelder sind identisch.

mkinzler 23. Apr 2009 21:33

Re: Kopieren aus DBGrid1 in DBGrid
 
Also handelt es ich um 3 Tabellen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr.
Seite 1 von 5  1 23     Letzte »    

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