![]() |
Re: Kopieren aus DBGrid1 in DBGrid
Meinst Du so:
Delphi-Quellcode:
Auch hier habe ich, beim 1. Klick auf irgendeine Zeile im GRID beim ShowMessage: CurrentID: 1ADOQuery_Preisliste.Active := False; ADOQuery_Preisliste.SQL.Clear; currentID := AdoQuery_Artikel.FieldValues['id']; ShowMessage('CurrentID: ' + IntToStr(CurrentID)); AdoQuery_Artikel.SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung) VALUES( :ID, :Bezeichnung)'; AdoQuery_Artikel.Parameters.ParseSQL(AdoQuery_Artikel.SQL.Text, true); AdoQuery_Artikel.Parameters.ParamValues['ID'] := AdoQuery_Artikel.FieldValues['id']; AdoQuery_Artikel.Parameters.ParamValues['Bezeichnung'] := AdoQuery_Artikel.FieldValues['Bezeichnung']; AdoQuery_Artikel.ExecSQL; ADOQuery_Preisliste.Open; end; anschliessend die Meldung: "Ein Parameterobjekt ..... " (wie oben) und beim nächsten Klick auf eine Zeile die Meldung: Could not convert variant of type (Null) into type (Integer). Die Felder ID sind Integer und Bezeichnung ist String bzw. Text |
Re: Kopieren aus DBGrid1 in DBGrid
Eher
Delphi-Quellcode:
AdoQuery_Insert.SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung) VALUES( :ID, :Bezeichnung)';
AdoQuery_Insert.Parameters.ParseSQL(AdoQuery_Insert.SQL.Text, true); AdoQuery_Insert.Parameters.ParamValues['ID'] := AdoQuery_Artikel.FieldValues['id']; |
Re: Kopieren aus DBGrid1 in DBGrid
Du meinst:
Delphi-Quellcode:
Ergebnis:
ADOQuery_Preisliste.Active := False;
ADOQuery_Preisliste.SQL.Clear; currentID := AdoQuery_Artikel.FieldValues['id']; ShowMessage('CurrentID: ' + IntToStr(CurrentID)); ADOQuery_Preisliste.SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung) VALUES( :ID, :Bezeichnung)'; ADOQuery_Preisliste.Parameters.ParseSQL(ADOQuery_Preisliste.SQL.Text, true); ADOQuery_Preisliste.Parameters.ParamValues['ID'] := AdoQuery_Artikel.FieldValues['id']; ADOQuery_Preisliste.Parameters.ParamValues['Bezeichnung'] := AdoQuery_Artikel.FieldValues['Bezeichnung']; ADOQuery_Preisliste.ExecSQL; ADOQuery_Preisliste.Open; end; - ShowMessage zeigt wieder den 1. Datensatz - der 1. Datensatz wird kopiert - folgende Fehlermeldung wird angezeit: ADOQuery_Preisliste: CommandText gibt keine Ergebnismenge zurück [edit=mkinzler]Delphi-Tag gefixt Mfg, mkinzler[/edit] |
Re: Kopieren aus DBGrid1 in DBGrid
Lass mal das Open weg, den ein Insert liefert keine Ergebnismenge.
Ist das Grid mit AdoQuery_Artikel verknüpft? |
Re: Kopieren aus DBGrid1 in DBGrid
Jetzt erscheint keine Fehlermeldung mehr, aber kopiert wird immer nur der 1. Datensatz.
Also der gewünschte Datensatz wird markiert, aber nicht kopiert Grid1 ist mit ADOQuery_Artikel und Grid2 mit ADO_Query_Preisliste verknüpft. |
Re: Kopieren aus DBGrid1 in DBGrid
Hallo mkinzler,
Danke für Deine Hilfe. Ein Problem habe ich leider noch: Es wird immer der 1. Datensatz in die Zieltabelle geschrieben, egal welchen ich im Grid1 markiere. Vielleicht kannst Du mir nocheinmal einen Tip geben.
Delphi-Quellcode:
procedure Tfrm_Testformular.Button1Click(Sender: TObject);
var i, currentID: Integer; begin inherited; with dm_Nails4You_Artikel do BEGIN ADOQuery_Preisliste.Active := False; ADOQuery_Preisliste.SQL.Clear; for i := 0 to DBGrid1.SelectedRows.Count - 1 do BEGIN DBGrid1.DataSource.DataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i])); currentID := AdoQuery_Artikel.FieldValues['id']; ShowMessage('CurrentID: ' + IntToStr(CurrentID)); ShowMessage('i: ' + InttoStr(i)); ADOQuery_Preisliste.SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung) VALUES( :ID, :Bezeichnung)'; ADOQuery_Preisliste.Parameters.ParseSQL(ADOQuery_Preisliste.SQL.Text, true); ADOQuery_Preisliste.Parameters.ParamValues['ID'] := AdoQuery_Artikel.FieldValues['id']; ADOQuery_Preisliste.Parameters.ParamValues['Bezeichnung'] := AdoQuery_Artikel.FieldValues['Bezeichnung']; ADOQuery_Preisliste.ExecSQL; ADOQuery_Preisliste.Refresh; End; end; end; |
Re: Kopieren aus DBGrid1 in DBGrid
Und CurrentID ist richtig?
Ich würde
Delphi-Quellcode:
vor die Schleife ziehen
ADOQuery_Preisliste.SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung) VALUES( :ID, :Bezeichnung)';
ADOQuery_Preisliste.Parameters.ParseSQL(ADOQuery_Preisliste.SQL.Text, true); |
Re: Kopieren aus DBGrid1 in DBGrid
Das hatte ich bereits probiert.
Ich denke, dass das Problem hier liegt:
Delphi-Quellcode:
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
DBGrid1.DataSource.DataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
|
Re: Kopieren aus DBGrid1 in DBGrid
Lass mal Pointer() weg.
|
Re: Kopieren aus DBGrid1 in DBGrid
dann erhalte ich folgende Fehlermeldung:
[DCC Fehler] u_frm_Testformular.pas(54): E2010 Inkompatible Typen: 'Pointer' und 'string' |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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