Re: Preventing Duplicates in BeforePost event.
- From: "Chris Cooper" <cooperc@xxxxxxxxxxx>
- Date: Wed, 20 Jul 2005 15:21:16 -0600
Now I have a new problem. I got the BeforePost working but now the pending
updates will not post to the database. I have verifed that there are indeed
updates pending, and after a call to UpdateBatch there are no more updates
pending, but the records are not in the database.
If I comment out the code in the BeforePost, then the record are posted to
the database. However, for some reason if the code in the BeforePost is
used then no records will be posted to the database on the UpdateBatch.
One more thing is there anyway to debug the UpdateBatch procedure? I would
like to step through it and see some command is not being executed do to
some status. the only procedure I can step into is the following..
procedure TCustomADODataSet.UpdateBatch(AffectRecords: TAffectRecords);
begin
CheckBrowseMode;
Recordset.UpdateBatch(AffectRecordsValues[AffectRecords]); --- Can I step
into this somehow?
UpdateCursorPos;
Resync([]);
end;
Here is my new and inproved BeforePost...
--------------
procedure TdmTestDelay.dsetAccessionBeforePost(DataSet: TDataSet);
var CloneSet : TADODataSet;
RS : _RecordSet;
procedure CloneIt;
begin
CloneSet.Connection := dmADOConnections.conANSR;
CloneSet.LockType := ltBatchOptimistic;
RS := TADODataSet(DataSet).Recordset.Clone(adLockUnspecified);
RS.Set_ActiveConnection(nil);
CloneSet.Recordset := RS;
end;
begin
if not(DataSet.State in [dsInsert, dsEdit]) then exit;
CloneSet := TADODataSet.Create(nil);
try
if (DataSet.State in [dsInsert]) then
begin
CloneIt;
if
CloneSet.Locate('ACCESSION',DataSet.FieldByName('ACCESSION').AsString,[])
then
begin
MessageDlg(DataSet.FieldByName('ACCESSION').AsString+
' has already been entered.', mtInformation, [mbOK], 0);
Abort;
end;
end else
begin
CloneIt;
if
(CloneSet.Locate('ACCESSION',DataSet.FieldByName('ACCESSION').AsString,[]))
and not(CloneSet.RecNo = DataSet.RecNo) then
begin
MessageDlg(DataSet.FieldByName('ACCESSION').AsString+
' has already been entered.', mtInformation, [mbOK], 0);
Abort;
end;
end;
finally
CloneSet.Close;
CloneSet.Free;
end;
end;
-----------------------
"Brian Bushay TeamB" <BBushay@xxxxxxxxx> wrote in message
news:704rd1993hf8j3jjojl8tqqp6pnou3go4u@xxxxxxxxxx
>This worked great while the user was entering the values. However, if at a
>later time in the code a record had to be modified, the BeforePost event
>would fire and then I would get the message about a dupicate record. This
>is because the cloned dataset now had all entered record and whenever the
>BeforePost event fires it aready has the values.
You should be able to check the STATUS property. If it is dsInsert use
your
code and if it is DSUpdate you need to check for more than one record with
your
key value
>
>Does anyone else know of a better way to prevent duplicates?
--
Brian Bushay (TeamB)
Bbushay@xxxxxxxxx
.
- Follow-Ups:
- Re: Preventing Duplicates in BeforePost event.
- From: Brian Bushay TeamB
- Re: Preventing Duplicates in BeforePost event.
- References:
- Preventing Duplicates in BeforePost event.
- From: Chris Cooper
- Re: Preventing Duplicates in BeforePost event.
- From: Brian Bushay TeamB
- Preventing Duplicates in BeforePost event.
- Prev by Date: General question from someone new to ado
- Next by Date: Re: Preventing Duplicates in BeforePost event.
- Previous by thread: Re: Preventing Duplicates in BeforePost event.
- Next by thread: Re: Preventing Duplicates in BeforePost event.
- Index(es):
Relevant Pages
|
|