[fpc-pascal] TBufDataSet: ApplyUpdates

Marcos Douglas md at delfire.net
Thu May 3 19:22:47 CEST 2012


On Thu, May 3, 2012 at 1:01 PM, Sven Barth <pascaldragon at googlemail.com> wrote:
> On 03.05.2012 15:40, Marcos Douglas wrote:
>>
>> On Thu, May 3, 2012 at 10:01 AM, LacaK<lacak at zoznam.sk>  wrote:
>>>
>>> Marcos Douglas  wrote / napísal(a):
>>>
>>> On Thu, May 3, 2012 at 2:52 AM, LacaK<lacak at zoznam.sk>  wrote:
>>>
>>>
>>> I saw the TBufDataSet.ApplyUpdates and it calls ApplyRecUpdate.
>>> The ApplyRecUpdate just raises an exception...
>>>
>>>
>>>
>>> Yes it is virtual method, which can be overriden by descendants
>>>
>>>
>>>
>>>
>>> There is some implementation, in some place, to work with ApplyUpdates
>>> (like a Delphi's TClientDataSet)?
>>>
>>>
>>>
>>> Yes, see in sqldb.pp at TCustomSQLQuery
>>>
>>>
>>> Yeah... I did not know that the TCustomSQLQuery descended of
>>> TCustomBufDataSet.
>>> Well, I tried to use ApplyUpdates with TSQLQuery and TMSSQLConnection
>>> (SQLServer).
>>> I put a DBGrid, DataSource... blablabla... I edited the record on the
>>> Grid and click in Apply button (ApplyUpdates(0))
>>>
>>> ERROR 20019:
>>> "Attempt to initiate a new SQL Server operation with results pending."
>>>
>>> On the internet I found this:
>>> http://www.sybase.com.br/detail?id=897#1825
>>>
>>> I don't have other SGBD now to test so, I would like to know if this
>>> is a problem in TMSSQLConnection or in ApplyUpdates?
>>>
>>>
>>>
>>> Yes it is a known problem (also in ODBC), read also in
>>> sqldb/mssql/readme.txt:
>>> - DB-Library error 10038 "Results Pending" - set
>>> TSQLQuery.PacketRecords=-1
>>> to fetch all pendings rows
>>> HTH
>>> -Laco.
>>
>>
>> You're right, but I have others problems:
>> I changed PacketRecords=-1 and test again. No errors, but didn't
>> commited (I'm seeing the SQL Profiler).
>> So, I used:
>>   SQLQuery1.ApplyUpdates(0);
>>   SQLTransaction1.Commit;
>>
>> Worked, using Commit, but the DataSet was closed (?)
>>
>> The SQLQuery properties are:
>> UpdateMode = upWhereKeyOnly
>> UsePrimaryKeyAsKey = True
>>
>> Maybe there is no problem and I just have to know how the SQLdb works.
>> Could you help me on this?
>
>
> If you don't want the dataset closed then you must use CommitRetaining (or
> RollbackRetaining for Rollback).
>
> Regards,
> Sven

Yeah, I remember now... =(
I already talked with Laco about this months ago (Laco, sorry my forgetfulness)
Sven, thanks for the info.

BTW, worked perfectly.

Thanks.

Marcos Douglas



More information about the fpc-pascal mailing list