Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Datensatz in selbe Tabelle kopieren (https://www.delphipraxis.net/194852-datensatz-selbe-tabelle-kopieren.html)

Luca Haas 16. Jan 2018 08:47

Datensatz in selbe Tabelle kopieren
 
Hi Leute, ich bin dabei einen Knopf zu programmieren mit dem ich den aktuellen Datensatz in dieselbe Tabelle kopiere. Der einzige Unterschied soll sein, dass die Felder für den Namen, MA-Nr, etc.. leer bleiben sollen.
Ich versuche das ganze mit
Delphi-Quellcode:
procedure TAufgabenMusterForm.Button1Click(Sender: TObject);
begin
  AufgabenMusterPosQuery.Open();
  AufgabenMusterPosQuery.Append();
  AufgabenMusterPosQuery.FieldByName('PositionsNr').AsInteger := AufgabenMusterPosQuery.FieldByName('PositionsNr').AsInteger;
  AufgabenMusterPosQuery.FieldByName('Name').AsString := AufgabenMusterPosQuery.FieldByName('Name').AsString;
  AufgabenMusterPosQuery.FieldByName('Prioritäten').AsInteger := AufgabenMusterPosQuery.FieldByName('Prioritäten').AsInteger;
  AufgabenMusterPosQuery.FieldByName('MitarbeiterGruppe').AsString := AufgabenMusterPosQuery.FieldByName('MitarbeiterGruppe').AsString;
  AufgabenMusterPosQuery.FieldByName('Datum').AsDateTime := AufgabenMusterPosQuery.FieldByName('Datum').AsDateTime;
  AufgabenMusterPosQuery.FieldByName('Erledigt').Value := AufgabenMusterPosQuery.FieldByName('Erledigt').Value;
  AufgabenMusterPosQuery.FieldByName('ErledigtDatum').AsDateTime := AufgabenMusterPosQuery.FieldByName('ErledigtDatum').AsDateTime;
  AufgabenMusterPosQuery.FieldByName('ErledigtMANr').AsInteger := AufgabenMusterPosQuery.FieldByName('ErledigtMANr').AsInteger;
  AufgabenMusterPosQuery.Post();
end;
allerdings erhalte ich so nur einen leeren Datensatz.
Kann mir jemand hierbei helfen ?

Jasocul 16. Jan 2018 09:00

AW: Datensatz in selbe Tabelle kopieren
 
Ich möchte dir ungern das Denken abnehmen. Daher beschreibe ich jetzt einfach mal in Worten, was du aktuell machst:
- Du öffnest das Query (Open)
- Du legst einen neuen Datensatz an (Append), auf dem du dann auch aktuell "stehst"
- Du weist die aktuellen Daten auf den aktuellen Datensatz zu

Da aber dort nichts drin steht (ist ja ein neuer Datensatz), bleibt der Datensatz leer.

Jetzt die Preisfrage für dich:
Was musst du machen, damit die Daten, die dort eingetragen werden sollen, auch nach dem Append zur Verfügung stehen?

Luca Haas 16. Jan 2018 09:09

AW: Datensatz in selbe Tabelle kopieren
 
Ich denke mal, ich muss wieder den Datensatz auswählen, den ich kopieren möchte und nicht den neuen, der mit Append erzeugt wurde.
Richtig so ?

Jasocul 16. Jan 2018 09:29

AW: Datensatz in selbe Tabelle kopieren
 
Dann musst du mit zwei Querys arbeiten. Eine für den "alten" Datensatz und eine für den neuen.
Die Alternative wäre, dass du dir die alten Daten in Variablen zwischenspeicherst.
Es gibt noch andere Möglichkeiten, aber die basieren auf ähnlichen Konzepten oder erfordern mehr SQL-Kenntnisse.

Mir ist nur wichtig, dass du verstehst, warum dein erster Ansatz nicht funktionieren kann.

Luca Haas 16. Jan 2018 09:33

AW: Datensatz in selbe Tabelle kopieren
 
Ah okay, ja das hab ich jetzt verstanden, ich wusste nicht, dass ein mit Append erstellter Datensatz sofort ausgewählt wird.

Dann schau ich mal wie ich das jetzt löse, aber das sollte ja kein Problem werden.

Danke für die Hilfe.

hoika 16. Jan 2018 16:04

AW: Datensatz in selbe Tabelle kopieren
 
Hallo,
entweder speicherst Du die Daten des "alten" Datensatzes in lokalen Variablen zwischen,
oder Du arbeitest einfach mit 2 Queries, wo schon vorgeschlagen wurde.

Wenn Du eine 2. Query benutzt, kannst Du auch gleich mit richtigem SQL arbeiten,
also "Insert Into Tabelle"


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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