TIP, cursor life circle

Ruslan Zasukhin sunshine at public.kherson.ua
Mon Aug 23 12:18:50 CDT 2004


On 8/23/04 12:16 PM, "Ruslan Zasukhin" <sunshine at public.kherson.ua> wrote:

> On 8/10/04 10:35 AM, "Barney" <barney at custombased.com> wrote:
> 
> Hi Barney,
> 
> 1) I can reproduce problem on your project
>   very interesting, because all looks simple.
>   I continue debugging.
> 
> 
> 2) small tip advice.
> 
> You have function
> 
> Sub foo
> 
> Dim Pcur as VCursor
> Dim Err as boolean
> Dim S as string
> 
> S = Listbox1.cell(listbox1.listindex, 0)
> 
> 
> 
> Pcur = App.DB.SQLSelect(
>          "Select * from componants where componant = '" + S + "'", 2,1,2)
> 
> If Pcur <> Nil and Pcur.RecordCount > 0 then
>   Err = Pcur.deleteAll()
> End if
> 
> setupcomp
> end
> 
> 
> 
> ----------------
> I recommend to have it as
> 
> Sub foo
> 
> Dim Pcur as VCursor
> Dim Err as boolean
> Dim S as string
> 
> S = Listbox1.cell(listbox1.listindex, 0)
> 
> 
> 
> Pcur = App.DB.SQLSelect("Select * from componants where componant = '" + S
> + "'", 2,1,2)
> 
> If Pcur <> Nil and Pcur.RecordCount > 0 then
>   Err = Pcur.deleteAll()
> End if
> 
> App.Db.Flush
> pcur = nil
> 
> setupcomp
> 
> Sub foo
> 
> 
> 
> 
> ---------------
> Because you call function setupcomp() where you again do SQL queries.
> But your pCur still exists, and it CAN conflict with your next queries.
> 
> 
> So TIP:
> 
> * kill cursors AS SOON AS POSSIBLE.
> 
> * after modifications it is always good call Flush()


TIP2:

- You create cursor pCur only to delete all its records.
- you not use its fields.
- then you can save a little time and resources using

        SELECT RecID FROM T


-- 
Best regards,
Ruslan Zasukhin      [ I feel the need...the need for speed ]
-------------------------------------------------------------
e-mail: ruslan at paradigmasoft.com
web: http://www.paradigmasoft.com

To subscribe to the Valentina mail list go to:
http://lists.macserve.net/mailman/listinfo/valentina
-------------------------------------------------------------



More information about the Valentina mailing list