AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken sql insert problem, datensatzübergreifend

sql insert problem, datensatzübergreifend

Ein Thema von Serienchiller · begonnen am 30. Apr 2012 · letzter Beitrag vom 30. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2   
Serienchiller

Registriert seit: 15. Jun 2011
Ort: Wurzen
40 Beiträge
 
Delphi 7 Professional
 
#1

sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:33
Datenbank: firebird • Version: 2.1 • Zugriff über: ib expert
hallo liebe community!

ich habe gerade ein riesen problem, an dem ich seit ein paar stunden hänge
ich hoffe ihr könnt mir helfen...

also ich muss aus der datenbank alle rechnungen des vorjahres kopieren und als neue datensätze wieder mit erhöhtem datum in die db einsetzen, samt allen verlinkten tabellen.

soweit klappt das schon ganz gut, jetzt bin ich aber auf ein prob gestoßen:

wenn eine rechnung mit einer gutschrift verknüpft ist, hat sie den pk id, und ein weiteres feld mit der id der verknüpften gutschrift. bei der gutschrift ist es genau umgekehrt. so hängt eine gutschrift immer mit einer rechnung zusammen.

mit einer for select anweisung gehe ich nun ds für ds durch und dupliziere jeden ds und lasse dabei per generator eine neue id generieren. nur wie schaffe ich es jetzt, wenn ich einen ds erstelle, das feld gutschriftid zu füllen? diese wird ja erst später erstellt...

und wenn später die gutschrift erstellt wird, weiß ich nicht mehr, wie ich den ds vorher finden soll, der mit der jeweiligen gutschrift verknüpft ist...

ich hoffe das war einigermaßen verständlich

würde mich sehr über hilfe freuen...

Geändert von Serienchiller (30. Apr 2012 um 14:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
24.603 Beiträge
 
Delphi XE Professional
 
#2

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:41
D.h. beide Tabellen enthalten einen Fremdschlüssel auf die jeweils andere Tabelle? Wozu soll das denn gut sein?
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
35.983 Beiträge
 
Delphi XE6 Professional
 
#3

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:41
Grunsätzlich geht das einfacher durch insert into ... select Das Problem mit der Gutschrift bleibt aber.
Ich würde diese Verknüpfung später setzen.

Ich frage mich aber, ob es sinnvoll ist, die Rechnungen des Vorjahres so vorzutragen. Zudem erscheint mir es fraglich, ob die Gutschriften im Folgejahr genauso zutreffen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
24.603 Beiträge
 
Delphi XE Professional
 
#4

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:42
Wenn man eine SP verwendet, könnte man sich die "alten" bzw. "neuen" IDs ja auch merken (INSERT INTO ... RETURNING...) und ggf. ersetzen.
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Serienchiller

Registriert seit: 15. Jun 2011
Ort: Wurzen
40 Beiträge
 
Delphi 7 Professional
 
#5

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:45
es handelt sich nur um demodaten, die automatisch ins nächste jahr übertragen werden sollen, deswegen ist die gültigkeit egal.

es geht nur um die eine tabelle, in der der pk die id ist und ein weiteres feld heißt "rechgutid", wo halt die id des jeweils verknüpften ds drin steht.

das mit dem ds merken ist deswegen problematisch, weil es sein kann, dass die zusammengehörenden ds in der tabelle ganz weit auseinanderliegen...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
24.603 Beiträge
 
Delphi XE Professional
 
#6

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:50
das mit dem ds merken ist deswegen problematisch, weil es sein kann, dass die zusammengehörenden ds in der tabelle ganz weit auseinanderliegen...
Verstehe ich nicht. Angenommen, Du hast einen DS mit der ID 10 und einem FK auf ID 42. Dann machst Du ein INSERT INTO mit RETURNING, merkst Dir die zurückgegebene ID, kopierst den referenzierten DS, merkst Dir auch dessen ID und machst dann ein Update der ersten Tabelle, indem Du den FK auf den gerade gemerkten setzt. Dabei ist es doch wurscht, wie weit die auseinander liegen.
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Serienchiller

Registriert seit: 15. Jun 2011
Ort: Wurzen
40 Beiträge
 
Delphi 7 Professional
 
#7

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:56
das problem is ja, dass gutschriften und rechnungen in EINER tabelle liegen und es folglich keinen foreign key gibt...

die unterscheidung ist lediglich durch das boolean feld "gutschrift" 0 oder 1 gegeben.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
24.603 Beiträge
 
Delphi XE Professional
 
#8

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 14:58
Und wie sind die DS dann miteinander verknüpft?

BTW: Klemmt Deine Shift-Taste?
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Serienchiller

Registriert seit: 15. Jun 2011
Ort: Wurzen
40 Beiträge
 
Delphi 7 Professional
 
#9

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 15:02
in der db garnicht. erst durch das programm kommt die verknüpfung. und das programm merkt, welche ds zusammen gehören, indem es schaut wo die id in dem einen, und "rechgutid" in dem anderen ds den selben wert haben.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
24.603 Beiträge
 
Delphi XE Professional
 
#10

AW: sql insert problem, datensatzübergreifend

  Alt 30. Apr 2012, 15:14
Also doch ein Fremdschlüssel, wenn auch auf dieselbe Tabelle.
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2014 by Daniel R. Wolf