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.
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.
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.
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.
IF nPos > 0
oRS:BookMark := aWAData[ WA_ABOOKMARKS ][aWAData[WA_INDEXACTIVE]] [ npos ][ 1 ]
ELSE
oRs:MoveLast()
oRs:MoveNext()
ENDIFAntonio, 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! ![]()
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.
Gives 72 (the len of table).
Recordpointer stands on lastrec()+1 and the table is not indexed.
Try the same after dbsetorder and check with ordname and ordkey inyour app order is in fact active.
Antonio, the name and the key is active!
Gunther
And the len of the array?
Len of array is the len of the table!
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()//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()+1Just a idea: should the lenght of bookmark-array have also reccount()+1?
Antonio, please send to my email office(at)byte-one.com a short description from the way you process indexes with UDFs! I will try to help you to ident the problem.
Good Night!