FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour clarification respect a recordset
Posts: 400
Joined: Fri May 11, 2007 08:20 PM
clarification respect a recordset
Posted: Sat Aug 31, 2019 01:53 AM

Guys:

I am migrating my progs from dbf to sql for this I use exclusively ado but I have a doubt about how a recordset works
The oBrw: delete, oRs: delete and delete from table are instructions that do the same delete records and a Recordset (oRs) is a copy of the table that is brought from the server to the client, then starting from that premise why when the instruction oRs delete or obrw: delete are invoked both delete the record of the client and of the server, isn't it just that it should be done to the client? I would like to be clarified, please
Thank you

Arturo

fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: clarification respect a recordset
Posted: Sat Aug 31, 2019 04:57 AM
It is true that ADO reads the data from the server and holds it in the client's memory.

We normally open recordsets using adLockOptimistic.

All calls to the methods Update(), Delete() and AddNew( aCols, aVals ) make the changes to the underlying database immediately and are visible to other users on the network.

We can also open the recordset using adLockBatchOptimistic mode.
Code (fw): Select all Collapse
oRs := FW_OpenRecordSet( oCn, cSql, adLockBatchOptimistic )


In this case, all changes including methods Update(), Delete(), AddNew(...) are all applied to the copy of data in the client's memory only. No changes are written to the server. These changes are also not visible to the other users on the network.

Calling the method CancelBatch() cancels all changes and restores the data in the client's memory to the original state.

Calling the method UpdateBatch() flushes all changes to the physical database on the server at once. From then on the changes are visible to the other users on the network. When some of the records are already modified by other users, they can not be written and the programmer has to handle these conflicts.

When we open recordset in batch mode, it is not necessary to keep the connection open. We can reopen the connection while saving the changes with UpdateBatch() call.

All web-software open recordsets in batch mode only.

Handling recordsets opened in batch mode requires greater expertise of ADO. It is not as easy as it may appear. For normal use in our programs, it is simple and easy to use the adLockOptimistic.

You may also consider using FWH mariadb library instead of ADO. FWH library is more powerful than ADO and (1) can do more than what is possible with even ADO (2) lot more easier to write code and (3) no need to install mysql ODBC connectors on each client.
Regards



G. N. Rao.

Hyderabad, India
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: clarification respect a recordset
Posted: Sat Aug 31, 2019 07:50 PM

Hi Mr. Rao,

Using mariadb I want to use pessimistic mode. I want to limit other users when one user read a record. Is it possible? (When one user read one record, record should be locked. at the same time other users can only read the record. not update)

if possible can you please give an example using maria15.prg.

Thank you.

Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Re: clarification respect a recordset
Posted: Sat Aug 31, 2019 10:12 PM

As Rao mentions .. many of the methods he has created handy wrappers .. to dig a bit deeper .. have a look and this fivewin wiki

https://wiki.fivetechsoft.com/doku.php? ... ted_stuffs

Rick Lipkin

Posts: 400
Joined: Fri May 11, 2007 08:20 PM
Re: clarification respect a recordset
Posted: Sat Aug 31, 2019 11:24 PM

Thank for repky master rao!
your response always clear and precise

fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: clarification respect a recordset
Posted: Mon Sep 02, 2019 06:42 PM
Horizon wrote:Hi Mr. Rao,

Using mariadb I want to use pessimistic mode. I want to limit other users when one user read a record. Is it possible? (When one user read one record, record should be locked. at the same time other users can only read the record. not update)

if possible can you please give an example using maria15.prg.

Thank you.


:-)
Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: clarification respect a recordset
Posted: Tue Sep 03, 2019 08:37 AM
Whatsnew.txt : FWH1806
-----------------------------

- Enhancement to method EditBaseRecord(...)
Added optional new 5th param, lLock (default .f.)
Revised syntax:
EditBaseRecord( [cFieldList], [lNew], [bEdit], [oBrw], [lLock] )
If lLock is set to true, the row is locked for edit and lock is released
after edit.
Regards



G. N. Rao.

Hyderabad, India
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: clarification respect a recordset
Posted: Wed Sep 25, 2019 12:32 PM
nageswaragunupudi wrote:Whatsnew.txt : FWH1806
-----------------------------

- Enhancement to method EditBaseRecord(...)
Added optional new 5th param, lLock (default .f.)
Revised syntax:
EditBaseRecord( [cFieldList], [lNew], [bEdit], [oBrw], [lLock] )
If lLock is set to true, the row is locked for edit and lock is released
after edit.


Hi Mr. Rao,

I use FWH 19.03.

I have updated the lLock parameter as you described in maria15.prg from fwh\samples directory.

Code (fw): Select all Collapse
   @ 20, 20 BTNBMP PROMPT "ADD"  SIZE 100,30 PIXEL FLAT OF oDlg ;
      ACTION oRs:EditBaseRecord( nil, .t., { |oRec| MyEditDlg( oRec ) }, oBrw, .T. )


I have compiled and run from two different computer. When I edit one row in first computer, it does not locked the record. Other computer can also edit the record.


Is this the way it should be?

Thanks.
Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: clarification respect a recordset
Posted: Wed Sep 25, 2019 12:57 PM

We will test and come back to you on this.

Regards



G. N. Rao.

Hyderabad, India
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: clarification respect a recordset
Posted: Fri Sep 27, 2019 07:05 AM
nageswaragunupudi wrote:We will test and come back to you on this.


Hi Mr. Rao,


Also can a procedure be run if the record is not locked?

Code (fw): Select all Collapse
EditBaseRecord( [cFieldList], [lNew], [bEdit], [oBrw], [lLock], [bNotLock] )


Thanks.
Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: clarification respect a recordset
Posted: Mon Sep 30, 2019 06:05 AM

:shock:

Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: clarification respect a recordset
Posted: Fri Oct 04, 2019 05:21 PM

up

Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: clarification respect a recordset
Posted: Fri Oct 11, 2019 12:04 PM

Hi Mr. Rao,

Could you please help me about Lock parameter?

Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: clarification respect a recordset
Posted: Wed Oct 16, 2019 07:59 AM

Has been fixed in new Fwh? :roll:

Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: clarification respect a recordset
Posted: Sat Nov 23, 2019 07:22 PM
Regards



G. N. Rao.

Hyderabad, India

Continue the discussion