Subject Re: Switch index off - SOLVED
From Hanspeter <hpg@intertape.de>
Date Wed, 11 Oct 2017 05:12:45 -0400
Newsgroups dbase.getting-started

Hi Mervyn, hi Akshat,
the source code of Mervyn gave me the hint to the problem finally. If you look to my source code:

-When the procedure starts a query is already active
-Before I start a new query, I try to swith the index off and the problem
arises
-So I added following line to my code before I try to switch the inderx off:

form.query1.active:=false

And after this:

form.query1.rowset.indexname:=""

This solved the problem.

So again thank you so much and best regards from
Hanspeter


Hanspeter Wrote:

> Hi Mervyn, hi Akshat,
> first of all I have to apologize that I wrote Mervyns name wrong in my first reply and second for your great help. Mervyns code runs without any problem or failure message, so I have to search again where the problem comes from. But if someone in this forum has another idea or help, please let me know. Kind regards from Frankfurt/Germany
> Hanspeter
>
>
> Akshat Kapoor Wrote:
>
> > Hi Hanspeter,
> > Were you able to run Mervyn's Code successfully.
> > If yes then the problem is somewhere else and not on that line.
> > I had faced similar problem sometime ago with beginappend()
> > It seems my autonullfields were off and there was a lookuprowset
> > assigned for one of the fields.
> > I had to develop a workaround
> > delink to lookuprowset , beginappend() , assign a valid value to the
> > field having lookup and reassign the lookuprowset.
> >
> > So if Mervyn's code did run without error then the error is somewhere
> > else. So please check that .wfm file (You may have to convert it to
> > german / build a simple form on same pattern I use only english hence do
> > not know)
> >
> > Regards
> > Akshat
> >
> > On 10/10/2017 23:56, Hanspeter wrote:
> > > Hi Mervin,
> > > thanks for your help and pls. find the code below. My dBase runs in German language and the failure message says that dBase won´t run anymore and there is the choice only to end the program.
> > >
> > > If I put a * in front of form.query1.rowset.indexName := "" the index is still on of course and the query runs without any problem. But I would like to switch the index off in order to get a faster query speed. Regards Hanspeter
> > >
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >        local fsuch1
> > >        if mscan=.t.
> > >           class::xx()
> > >        endif
> > >        set procedure to such.wfm additive
> > >        fsuch1=new einForm()
> > >        fsuch1.mdi=false
> > >        fsuch1.text="Scannen"
> > >        fsuch1.readmodal()
> > >        mt=fsuch1.entryfield1.value
> > >        form.tabbox1.cursel:=4
> > >        form.query1.rowset.indexname:=""
> > >        ts=seconds()
> > >        if .not.empty(mt)
> > >           form.query1.sql = 'select * from ebene where upper(name) like "%&mt%" or upper(direc) LIKE "%&mt%"'
> > >           form.query1.active:=true
> > >           form.query1.rowset.first()
> > >           mscan:=.t.
> > >        endif
> > >        close procedure such.wfm
> > >        fsuch1.release()
> > >        release mt, ts
> > >        form.grid1.setfocus()
> > >        return
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >
> > >
> > >
> > >
> > > Mervyn Bick Wrote:
> > >
> > >> On 2017-10-10 4:31 PM, Hanspeter wrote:
> > >>> Hi, I am seeking on an index without any problem. But when I try to switch the index temporarely off, dBase crashes. In order to swith the index off, I am using following code:
> > >>>
> > >>> this.rowset.indexName := ""
> > >>>
> > >>> Even if I am trying thiis.rowset.indexName := null, I get the same problem.
> > >>>
> > >>> I am working with dBase Plus 2.8. Can someone help me to solve the problem?
> > >>> Thanks in advance and regards
> > >>> Hanspeter
> > >>>
> > >>
> > >> Where is the code in your program?  What error message (if any) did
> > >> dBASE show?
> > >>
> > >> 'this'  refers to the object executing the code.  In the code you have
> > >> posted the only place that the code will do what you expect is if it is
> > >> executed in an event handler triggered by the rowset's parent query.
> > >>
> > >> If, for instance, the code is in a pushbutton's onCLick event handler
> > >> 'this' refers to the pushbutton which doesn't have a rowset object with
> > >> a property named indexName.
> > >>
> > >> I no longer have dBASE 2.8 on my computer but the attached little
> > >> example, made using dBASE 11.3.1, should work for you.
> > >>
> > >> Mervyn.
> > >>
> > >>
> > >>
> > >>
> > >>
> > >> if file('test_index.dbf')
> > >>    // drop table test_index
> > >> endif
> > >>
> > >> if not file('test_index.dbf')
> > >>     create table test_index  (id autoinc,data character(15))
> > >>
> > >>     use test_index exclusive
> > >>     generate 10
> > >>     index on upper(data) tag upper_data
> > >>     use
> > >> endif
> > >>
> > >> ** END HEADER -- do not remove this line
> > >> //
> > >> // Generated on 2017-10-10
> > >> //
> > >> parameter bModal
> > >> local f
> > >> f = new test_indexForm()
> > >> if (bModal)
> > >>     f.mdi = false // ensure not MDI
> > >>     f.readModal()
> > >> else
> > >>     f.open()
> > >> endif
> > >>
> > >> class test_indexForm of FORM
> > >>     with (this)
> > >>        height = 21.5
> > >>        left = 105.8571
> > >>        top = 7.0
> > >>        width = 51.2857
> > >>        text = ""
> > >>     endwith
> > >>
> > >>     this.TEST_INDEX1 = new QUERY()
> > >>     this.TEST_INDEX1.parent = this
> > >>     with (this.TEST_INDEX1)
> > >>        width = 8.0
> > >>        height = 1.0
> > >>        sql = 'select * from "test_index.DBF"'
> > >>        active = true
> > >>     endwith
> > >>
> > >>     with (this.TEST_INDEX1.rowset)
> > >>        indexName = "UPPER_DATA"
> > >>     endwith
> > >>
> > >>     this.GRID1 = new GRID(this)
> > >>     with (this.GRID1)
> > >>        dataLink = form.test_index1.rowset
> > >>        height = 13.0
> > >>        left = 6.0
> > >>        top = 1.5
> > >>        width = 42.0
> > >>     endwith
> > >>
> > >>     this.PUSHBUTTON1 = new PUSHBUTTON(this)
> > >>     with (this.PUSHBUTTON1)
> > >>        onClick = class::PUSHBUTTON1_ONCLICK
> > >>        height = 1.0909
> > >>        left = 12.0
> > >>        top = 17.0
> > >>        width = 22.0
> > >>        text = "Disconnect index"
> > >>     endwith
> > >>
> > >>     this.PUSHBUTTON2 = new PUSHBUTTON(this)
> > >>     with (this.PUSHBUTTON2)
> > >>        onClick = class::PUSHBUTTON2_ONCLICK
> > >>        height = 1.0909
> > >>        left = 12.0
> > >>        top = 19.0
> > >>        width = 22.0
> > >>        text = "Connect index"
> > >>     endwith
> > >>
> > >>     this.rowset = this.test_index1.rowset
> > >>
> > >>     function PUSHBUTTON1_onClick()
> > >>        form.rowset.indexName := ""
> > >>        return
> > >>
> > >>     function PUSHBUTTON2_onClick()
> > >>        form.rowset.indexName := "UPPER_DATA"
> > >>        return
> > >>
> > >> endclass
> > >>
> > >
> >
>