Index: DOM/PM/Maatwerk/Syncs/DotNet/MaatwerkCalculator/impl/Halffabs.cls.xml =================================================================== diff -u -r66047 -r66354 --- DOM/PM/Maatwerk/Syncs/DotNet/MaatwerkCalculator/impl/Halffabs.cls.xml (.../Halffabs.cls.xml) (revision 66047) +++ DOM/PM/Maatwerk/Syncs/DotNet/MaatwerkCalculator/impl/Halffabs.cls.xml (.../Halffabs.cls.xml) (revision 66354) @@ -95,7 +95,11 @@ #dim PropertyNaam, Waarde As %String Set Klasse = ##class(%Dictionary.CompiledClass).%OpenId(Klassenaam) Set Halffab.GemaaktVoorKenmerkenSetID = $Piece(Halffab.GemaaktVoorKenmerkenSetID,".",1) + // Eerste ronde: properties van de basisklasse + // We gebruiken @@IDENTITY voor de foreign key, dit is de autogenerated ID + // van deze eerste INSERT. + #dim DeclareStuk As %String = "DECLARE @HALFFAB_ID INT;" #dim IntoStuk As %String = "INSERT INTO " _ ..GeefBasistabelNaam() _ " (ProductID,MyDiscriminator,Versie,LaatstAangepast" #dim ValuesStuk As %String = "VALUES ('" _ Halffab.GeefProductID() _ "','" _ TypeCode _ "_" _ Rolstukje _ "'," _ 1 _ ",'" _ ..GeefHuidigeTimeStamp()_"'" Set PropertiesIterator = ##class(TECH.ListIterator).%New(Klasse.Properties) @@ -118,16 +122,19 @@ } Set IntoStuk = IntoStuk _ ") " Set ValuesStuk = ValuesStuk _ "); " + #dim AssignStuk As %String = "SET @HALFFAB_ID = @@IDENTITY;" + + #dim Statement As %String = DeclareStuk _ IntoStuk _ ValuesStuk _ AssignStuk - #dim Statement As %String = IntoStuk _ ValuesStuk + // Tweede ronde: Id in tussenliggende klasse toevoegen + Set IntoStuk = "INSERT INTO " _ ..GeefTussenliggendeTabelNaam(TypeCode) _ " (Id) " + Set ValuesStuk = "VALUES (@HALFFAB_ID);" + Set Statement = Statement _ IntoStuk _ ValuesStuk - // Tweede ronde: properties van de afgeleide klasse - // We gebruiken SCOPE_IDENTITY() voor de foreign key, dit is de autogenerated ID - // van de eerste INSERT. De scope is hier de batch van queries - // (2 inserts gescheiden door ;). - + // Derde ronde: properties van de afgeleide klasse + // De scope is hier de batch van queries (2 inserts gescheiden door ;). Set IntoStuk = "INSERT INTO " _ ..GeefRoltabelNaam(Rolstukje, TypeCode) _ " (Id" - Set ValuesStuk = "VALUES (SCOPE_IDENTITY()" + Set ValuesStuk = "VALUES (@HALFFAB_ID" Set PropertiesIterator = ##class(TECH.ListIterator).%New(Klasse.Properties) while (PropertiesIterator.HasNext()) { @@ -165,42 +172,77 @@ UnId:%String,Rolstukje:%String,TypeCode:%String + +UnId:%String,Rolstukje:%String,TypeCode:%String +TECH.ResultSetIterator + + + 1 %String + +TypeCode:%String +1 +%String + + + Rolstukje:%String,TypeCode:%String 1