Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Rushmore, don't get it
Message
De
21/04/2005 08:42:02
 
 
À
21/04/2005 08:11:35
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 6 SP5
OS:
Windows XP SP2
Database:
Visual FoxPro
Divers
Thread ID:
01006860
Message ID:
01006927
Vues:
21
>Thomas,
>
>That's avoiding the index. And that's what I was doing, ie using (j_ref=0) instead of (bintoc(j_ref) == bintoc(0))
>
>I'm currently testing Cetin's suggestion and I think, although not confirmed yet, that it solves the problem
>
>cheers,

Gregory,
move the index don't fix the bug.
The first REINDEX will kill the index.

Run the code with this workaround:
	clear
	set ansi on
	set exact on
	set collate to 'machine'
	set optimize on

	create cursor CursorTest ;
		( 	j_ref		I ;
		)
	
	index on bintoc(j_ref)+' ' tag j_ref
	
	insert into CursorTest values(44 )
	insert into CursorTest values( 0 )
	insert into CursorTest values(44 )

	REINDEX
	? KEYMATCH(bintoc(0)+' ')

	?'-------------------------------------'

	locate for (bintoc(j_ref)+' ' == bintoc(0)+' ')
	?'optimize locate 0 (TRUE)', found(), '  ERROR'

	locate for (bintoc(j_ref)+' ' == bintoc(0)+' ') NOOPTIMIZE
	?'no optimize locate 0 (TRUE)', found(), ' OK'

	local aa[1]
	aa[1] = 0

	select count(*) ;
		from CursorTest ;
		into array aa ;
		where (bintoc(j_ref)+' ' == bintoc(0))

	?'optimize count 0 (1):', aa[1], ' ERROR'

	set optimize off
	select count(*) ;
		from CursorTest ;
		into array aa ;
		where (bintoc(j_ref)+' ' == bintoc(0))
	set optimize on

	?'no optimize count 0 (1):', aa[1], aa[1], ' ERROR'


	locate for (bintoc(j_ref)+' ' == bintoc(44)+' ')
	?'optimize locate 44 (TRUE), recno 1:', found(), 'OK ', recno()

	insert into CursorTest  values( 0 )
	locate for (bintoc(j_ref)+' ' == bintoc(0)+' ')
	?'optimize locate 0 (TRUE), recno 2:', found(), recno(), 'ERROR'
Fabio
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform