Subject |
Re: begintrans() |
From |
Mustansir Ghor <mustan31@hotmail.com> |
Date |
Tue, 06 Dec 2022 05:52:48 -0500 |
Newsgroups |
dbase.getting-started |
Dear Mervyn Sir
Great, 100% clear. Thank you
Below is my Save function
function PBSAVE_onClick()
form.qsales.active=true
do
sleep 0.5
until form.qsales.rowset.lockset()
form.qsales.rowset.last()
m1 =str(val(form.qsales.rowset.fields["sno"].value)+1,6) // Getting the Serial no for the new record. Not using autoinc (my reservation)
form.qsales.active=false
m2=form.qcustomer.rowset.fields["code"].value
m7 = "TSH"
m3 = datetime()
m4 = _app.session.user()
m5 = form.etotala.value
m6 = form.edrem.value
m8=form.rbgodown.text
form.qsales.rowset.unlock()
insert into :plastic:XORDERA (sno,sdate,custcode,op,remark,invtype,loc) values(:m1,:m3,:m2,:m4,:m6,:m7,:m8) // this is same file that is assign to query qsales used in lock and unlock
form.qtempsal.rowset.first() // in this is query temporary table used in local computer
do while not form.qtempsal.rowset.endofset
with (form.qtempsal.rowset)
fields["sno"].value=m1 //Serial no is assigned to each record here
save()
next()
endwith
enddo
form.qtempsal.rowset.first()
upd = new updateset()
upd.source=form.qtempsal.rowset // Temporary table
upd.destination=form.qsalesi.rowset //Child table in the server for master XorderA
upd.append()
upd = null
class::novprint() // the order goes for printing
form.qtempsal.active=false
form.poslocal.emptytable("tempsal") //temporary local table is emptied
form.qtempsal.active=true
return
Anybody pls guide me how to incorporate Try and Endtry with database begintrans(), Commit() and rollback() to enhance my data saving function
Best Regards
Mustansir
Mervyn Bick Wrote:
> On 2022/12/06 11:18, Mustansir Ghor wrote:
> ..
> > However, Below text is copied from dbase help. Here why is the command form.rowset.parent.database.begintrans() and not form.database.begintrans()
> >
> > try
> > form.rowset.parent.database.beginTrans( ) // Begin the transaction
> > form.rowset.parent.database.commit( ) // If you got this far, there were no
> > catch ( Exception e ) // The parameter receives the Exception object that describes
> > form.rowset.parent.database.rollback( ) // Undo any changes that did take
> > endtry
> >
>
> Although it's not usual, a form may have more than one database object
> and each database object may have more than one query (and as a result
> more than one rowset) associated with it.
>
> If you know which database associated with the query, and hence the
> rowset you are working with, then by all means use
> form.oDatabase.begintrans()
>
> Although a form may have several rowsets in play only one can be
> assigned to the form's rowset property.
>
> Example code in the help file needs to be fairly universal. In this
> case the author is using the rowset assigned to the form's rowset
> property. He does not, therefore, need to name the query. By working
> back up the "parentage" the author also specifies the correct database
> without needing to know it's actual name.
>
> If you need to work with a rowset not assigned to the form's rowset
> property then you need to specify the rowset in the command if you don't
> specify the actual database.
>
> form.MyDatabase1.begintrans()
> or
> form.customers1.rowset.parent.database.beginTrans( )
>
>
> Mervyn.
>
>
>
|
|