![]() |
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:
Das Ergebnis aus ShowMessage ist immer CurrentID: 1.
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; 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] |
Re: Kopieren aus DBGrid1 in DBGrid
Ich würde zuerst den select machen und dann in der Schleife den entsprechenden Insert
|
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:
Füge ich aber die Parameter ein, erhalte ich die Fehlermeldungen.
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; [edit=mkinzler]Delphi-Tag eingefügt. das nächste Mal bitte selber machen! Mfg, mkinzler[/edit] [edit=mkinzler]BBCode reaktiviert Mfg, mkinzler[/edit] |
Re: Kopieren aus DBGrid1 in DBGrid
Zeig mal den nicht funktionierenden Code
|
Re: Kopieren aus DBGrid1 in DBGrid
Delphi-Quellcode:
[edit=mkinzler]Das mit dem Formatieren war ernst gemeint :warn: Mfg, mkinzler[/edit]
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; |
Re: Kopieren aus DBGrid1 in DBGrid
Der Parameter heisst auch Currentid
Delphi-Quellcode:
Parameters.ParamValues['Currentid'] := currentID;
|
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). |
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.
|
Re: Kopieren aus DBGrid1 in DBGrid
Es sind unterschiedliche Tabellen. Nur die im Select angegebenen Datenfelder sind identisch.
|
Re: Kopieren aus DBGrid1 in DBGrid
Also handelt es ich um 3 Tabellen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr. |
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