HEj.
 
 Jeg har forsøgt med diverse onBeforeXXX og onAfterXXX (post, insert osv) 
 uden at have fundet den korrekte metode.
 
 En clientdataset forbundet til en database med et felt, der er primærnøgle.
 
 Når der indsættes en ny linie i min grid, der er forbundet med 
 clientdatasettet, så indsætter jeg automatisk 3 værdier i nogle af 
 postens felter( Dette er en form for standardforslag til slutbrugeren, 
 så felterne ikke er tomme fra starten). Det gør jeg med
 
 Procedure Tform1.clientdataset1AfterInsert(Dataset: TDataSet);
 Begin
    Clientdataset1('Felt1'):= 'indhold';
    ...
 End;
 
 Vælger jeg efter at have indsat en ny linie at indtaste en værdi i 
 feltet, der har primær nøgle, er der ingen problemer. Posten "bogføres" 
 som den skal.
 
 Vælger jeg derimod at forlade den nyligt indsatte linie uden at indtaste 
 yderligere end det ovenfor automatisk indtastede, så kommer en violation 
 key error, forståeligt nok.
 
 Havde jeg valgt IKKE at indsætte de automatiske indsætninger, ville 
 posten blot have været automatisk annulleret, når jeg forlod den nye 
 linie uden at indtatte noget. Men idet jeg har indtastet de automatiske 
 værdier, så er min tanke, at jeg manuelt skal annullere posten (som jeg 
 ikke ønsker, når jeg ikke har indtastet en værdi i primær feltet.
 
 Derfor har jeg prøvet med en onBeforePost, onBeforeINsert, onAfterPost 
 osv. uden a finde den rigtige kombination.
 
 Eksempel herunder:
 
 procedure Tform1.clientdatasetBeforePost(DataSet: TDataSet);
 begin
    If (clientdataset['Felt1'] = 'indhold') and
      (clientdataset['Felt2'] = null) and
      ....
    clientdataset1.delete;
 end;
  
            
             |