Dag allen,
Momenteel ben ik bezig met een project waarvan we een Client/Server hebben.
Voor de Server gebruiken we de datasnap (TDataSnapServer). Via bepaalde methodes kunnen we gegeven opvragen.
De gegevens uit de database worden opgehaald via TFDConnection/TFDQuery. Die worden dan doorgestuurd als TFDJSONDataSets naar de Client.
Via Client Gui wordt de TFDJSONDataSets via de TFDJSONDataSetsReader in de een TFDMemTable geplaatst.
Tot hiertoe lukt het op gegevens om te halen vanuit de Client Gui.
Het volgende methode is een insert van mijn data.
Via de Client Gui wordt er een insert uitgevoerd. De TFDMemTable staat in cachedupdates.
En mij PrimaryKey in de TFDMemTable staat op arAutoInc.
Dus bij een insert staat mijn PK op een negatief getal. (bv -1)
Bij een volgende insert is die PK van nieuw record op -2. (en zo verder)
De data wil ik doorsturen naar de server. De data wordt opgevangen op de server en geplaatst in een TFDQuery.
In de TFDQuery zijn de PK in record1 ook -1 en record2 op -2. Bij een ApplyUpdates worden de PK's gewijzigd volgens de PK uit de Database.
Mijn vraag is nu hoe ik de PK's op de client -1 en -2 kan wijzigen?
- een mogelijkheid is de hele selectie terug opvragen maar dan vind ik dit overkill als dit over een groot aantal records gaat en waarvan we 2 records hebben toegevoegd.
- via de client enkel één per één record doorsturen en de PK terugkrijgen van de server. (200 insert = 200 insert calls naar server, ipv 1 delta insert call)
- de delta insert doorsturen en een lijst met oude PK en nieuwe PK terug krijgen en deze dan updaten in de dataset. (aan de server kant de delta doorlopen en één per één inserten om zo de PK op te vangen)
- andere oplossingen
Zijn er mensen die hiermee ervaring hebben en mij in de juiste richting kan helpen?
Bookmarks