AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Kopieren aus DBGrid1 in DBGrid
Thema durchsuchen
Ansicht
Themen-Optionen

Kopieren aus DBGrid1 in DBGrid

Ein Thema von Dieter11 · begonnen am 22. Apr 2009 · letzter Beitrag vom 30. Apr 2009
Antwort Antwort
Seite 3 von 5     123 45      
Dieter11

Registriert seit: 18. Nov 2008
35 Beiträge
 
#21

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 23. Apr 2009, 21:52
Meinst Du so:
Delphi-Quellcode:

     ADOQuery_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;
Auch hier habe ich, beim 1. Klick auf irgendeine Zeile im GRID beim ShowMessage: CurrentID: 1
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#22

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 23. Apr 2009, 22:01
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'];
Markus Kinzler
  Mit Zitat antworten Zitat
Dieter11

Registriert seit: 18. Nov 2008
35 Beiträge
 
#23

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 23. Apr 2009, 22:12
Du meinst:
Delphi-Quellcode:
     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;
Ergebnis:
- 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]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#24

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 23. Apr 2009, 22:16
Lass mal das Open weg, den ein Insert liefert keine Ergebnismenge.

Ist das Grid mit AdoQuery_Artikel verknüpft?
Markus Kinzler
  Mit Zitat antworten Zitat
Dieter11

Registriert seit: 18. Nov 2008
35 Beiträge
 
#25

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 23. Apr 2009, 22:29
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.
  Mit Zitat antworten Zitat
Dieter11

Registriert seit: 18. Nov 2008
35 Beiträge
 
#26

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 28. Apr 2009, 20:47
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#27

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 28. Apr 2009, 20:58
Und CurrentID ist richtig?

Ich würde
Delphi-Quellcode:
       ADOQuery_Preisliste.SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung) VALUES( :ID, :Bezeichnung)';
       ADOQuery_Preisliste.Parameters.ParseSQL(ADOQuery_Preisliste.SQL.Text, true);
vor die Schleife ziehen
Markus Kinzler
  Mit Zitat antworten Zitat
Dieter11

Registriert seit: 18. Nov 2008
35 Beiträge
 
#28

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 28. Apr 2009, 21:08
Das hatte ich bereits probiert.

Ich denke, dass das Problem hier liegt:
      DBGrid1.DataSource.DataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i])); [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#29

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 28. Apr 2009, 21:09
Lass mal Pointer() weg.
Markus Kinzler
  Mit Zitat antworten Zitat
Dieter11

Registriert seit: 18. Nov 2008
35 Beiträge
 
#30

Re: Kopieren aus DBGrid1 in DBGrid

  Alt 28. Apr 2009, 21:16
dann erhalte ich folgende Fehlermeldung:
[DCC Fehler] u_frm_Testformular.pas(54): E2010 Inkompatible Typen: 'Pointer' und 'string'
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 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