Hallo allemaal,
ik heb het volgende probleem waar ik totaal geen antwoord op heb. Ik heb twee datasets, met elkaar verbonden via een MasterSource. Vervolgens worden de master via een TDataSetProvider beschikbaar gemaakt. Dit betekend dat de Child dus een geneste dataset wordt. Tot zover geen problemen.
Als ik nu ga proberen een nieuw record toe te voegen dan ontstaat de ellende. Delphi gaat nu namelijk automatisch de primary key van een waarde voorzien (namelijk 1). Bestaat deze waarde al, dan krijg ik dus een 'Key Violation.'
Ik kan geen enkele manier ontdekken om hieraan te ontkomen. Ook al verander ik na de Append en voor de Post de waarde van deze key, hij blijft hardnekkig er een 1 van maken.
Ik heb even op het web wat testcode gezet, zodat duidelijk is wat het probleem is:
http://www.2at.nl/testprojectsource.zip
Je moet wel even in Delphi de ConnectionString aanpassen zodat de database en de systeemdatabase gevonden kunnen worden. (Bij versies voor Access XP mag de systeemdatabase gewoon leeg gelaten worden!)
Als iemand dit gedrag wel begrijpt of misschien een workaround ziet, dan hoor ik het graag!
Bas.
p.s. Een stap bij stap gids naar de problemen:
PROBLEEM
1) Zet je cursor in het tweede grid (en laat het eerste record in het eerste grid actief)
2) Druk op het pijltje naar beneden (voegt nieuw record toe)
3) Vul bij naam even een waarde in
4) Verlaat het record (pijltje omhoog): 'Key Violation'
INZICHTJE
1) Ga in het eerste grid naar het laatste record
2) Zet je cursor in het tweede grid
3) Maak een nieuw record aan, zoals boven beschreven
4) Het HandelingsNr is nu 1 (of 2, 3, ...) voor een volgende post.
Grappig is dat het nu dus goed blijft gaan totdat hij bij 5 aankomt. Die bestaat al: 'Key Violation'.
Ik kan dit nummer dat hij genereert op geen enkele manier beinvloeden, waardoor ik dus altijd tegen zo'n 'Key Violation' op kan lopen.
(Verder krijg je de problemen natuurlijk alsnog als je je ClientDataSet applied... Hij zou de boel leeg moeten laten totdat de database met een nummer op de proppen komt... Helaas!)
Bookmarks