Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Cancel indsat post

0 views
Skip to first unread message

Michael Sørensen

unread,
Feb 15, 2010, 4:23:55 PM2/15/10
to
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;

0 new messages