Page 65 of 70

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 3:25 pm
by AHF
Gunther,

Right nevertheless that was a bug!

Is it still occur if you comment TESTADISC->(dbgoto(TESTADISC->(lastrec()+1))) //damit keine anzeige ?

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 3:31 pm
by byte-one
Antonio, no! If this line comment out is functioning!
But when i make a dbseek() with found()==.F. the recordpointer also go to lastrec()+1 and no moree seeks are possible!
ATTENTION: THIS BEHAVIOR ONLY IN SEEKS WITH UDF.

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 4:16 pm
by AHF
Gunther,

Please place a msginfo in ado.seek after ELSE //WITH :FILTER OR MOE THAN ONE FIELD and check if it is called.

You can place another one in the else for not softseek reporting npos.

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 4:37 pm
by byte-one
Please place a msginfo in ado.seek after ELSE //WITH :FILTER OR MOE THAN ONE FIELD and check if it is called.

Yes, is called
You can place another one in the else for not softseek reporting npos.

shows 0

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 5:03 pm
by AHF
Code: Select all  Expand view
       
        IF nPos > 0
            oRS:BookMark :=  aWAData[ WA_ABOOKMARKS ][aWAData[WA_INDEXACTIVE]] [ npos ][ 1 ]

         ELSE
            oRs:MoveLast()
            oRs:MoveNext()

         ENDIF
 


If it gets here and is 0 then goes eof and !found.
Then the key is not in the array.

Are you trying both seeks with the same key ?
The first that works and the second?

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 5:34 pm
by byte-one
Antonio, on both no found()!
Conclusion: Always if i use dbsetorder() before dbseek() and the recordpointer is on lastrec()+1 and a UDF is in work the index is not functioning! :)

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 5:44 pm
by AHF
So its a set order problem!
If you browse it is it ordered ok?

Place again a msginfo( len( aWAData[ WA_ABOOKMARKS ][aWAData[WA_INDEXACTIVE]] ) the same place as before and check if effectively has the index built.

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 6:09 pm
by byte-one
Gives 72 (the len of table).
Recordpointer stands on lastrec()+1 and the table is not indexed.

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 6:54 pm
by AHF
Try the same after dbsetorder and check with ordname and ordkey inyour app order is in fact active.

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 7:03 pm
by byte-one
Antonio, the name and the key is active!

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 7:28 pm
by AHF
Gunther

And the len of the array?

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 7:38 pm
by byte-one
Len of array is the len of the table!

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 7:42 pm
by AHF
Try this:

Code: Select all  Expand view

SET ADODBF TABLES INDEX LIST TO { {"AW2015",{"REV",'REV2TO2(REDATUM)'},{"RR","bu_korrindex(redatum,ideingdat)"},{"EW",'REV2TO2(REDATUM)'} } }
SET ADO INDEX UDFS TO {"IF","&","SUBSTR","SUBS","==","REV2TO2","REVEING","BU_KORRINDEX"}

//TESTADISC->(dbgoto(TESTADISC->(lastrec()+1)))  
TESTADISC->(dbsetorder(1))
BROWSE() //IS IT WELL ORDERED ?
GO TOP // TRY WITH AND WITHOUT THIS
BROWSE() //IS IT WELL ORDERED ?
TESTADISC->(dbseek("0227"))
MSGINFO( CVALTOCHAR(FOUND())+" "+CVALTOCHAR(EOF()) ) // .F. .T. ?
GO TOP
MSGINFO(RECNO())
DO WHILE !EOF()
     ? INDEXKEY(0) //DO YOU SEE THE KEYYOU ARE SEEKING?
      SKIP
ENDDO
 Browse()
 


Having the msginfo in ado_seek as previously.

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 8:01 pm
by byte-one
Antonio, the results:

Code: Select all  Expand view
//TESTADISC->(dbgoto(TESTADISC->(lastrec()+1)))
TESTADISC->(dbsetorder(1))
BROWSE() //IS IT WELL ORDERED ? -> ordered well
GO TOP // TRY WITH AND WITHOUT THIS //equal
BROWSE() //IS IT WELL ORDERED ? -> ordered well
TESTADISC->(dbseek("0227"))
MSGINFO( CVALTOCHAR(FOUND())+" "+CVALTOCHAR(EOF()) ) // .F. .T. ?    ->  .T. .F.
GO TOP
MSGINFO(RECNO()) // -> 1
DO WHILE !EOF()
      ? INDEXKEY(0) //DO YOU SEE THE KEYYOU ARE SEEKING? -> key is right
      SKIP
ENDDO
Browse() // ->  stands on lastrec()+1

Now the recordpointer is NOT on lastrecord()

Re: ADO RDD xHarbour

PostPosted: Thu Nov 05, 2015 9:00 pm
by byte-one
Just a idea: should the lenght of bookmark-array have also reccount()+1?