Dbase indexer champs caractère avec numeri

Fermé
BRUNOROB Messages postés 3 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 4 avril 2007 - 4 avril 2007 à 01:38
 MB - 17 avril 2007 à 01:39
Bonjour
Comment faire pour indexer un champs caractère avec un champ numérique
En DBASE
use c:\maTABLE.DBF
index on SUBSTR(NOM,1,25) +STR(NOMBRE,13) to c:\monINDEX.NDX
use c:\maTABLE.DBF index c:\monINDEX.NDX


Les NOMs sont indexes mais pas les NOMBREs (évidement)

avec
index on (NOM) +(NOMBRE) to c:\monINDEX.NDX
même problème et ainsi de suite

Je jette l’éponge avant de flanquer l’ordi par la fenêtre
Un grand merci à celui qui connaît la réponse à ce problème basique
A voir également:

1 réponse

Bernard.Mouille
4 avril 2007 à 23:37
Bonjour,

Je ne sais pas quel dBase tu utilise, mais quand j'écris :

en dBase III + ou en db2k(dBase PLUS),

use c:\maTABLE.DBF
index on SUBSTR(NOM,1,25) +STR(NOMBRE,13,O) to c:\monINDEX.NDX
SET INDE TO c:\monINDEX.NDX

ça fonctionne.

En dBase actuel, il faut toujours passer les décimales de la fonction STR(), même si c'est à zéro.

Bonne nuit

BM
0
Salut, essaie ceci :

use c:\maTABLE.DBF
index on left(NOM,25) +transform(NOMBRE,"####") to c:\monINDEX.NDX
*SET INDE TO c:\monINDEX.NDX && Pas la peine, l'index est activé automatiquement suite à l'indexation

Remarques :
> Au lieu de SUBSTR(NOM,1,25) utilise plutot left(NOM,25) && (ca donne le même résultat)
> Avec str(...), la suite 1,2,10,20 par ex est ordonnée ainsi : 1,10,2,20. Alors qu'avec transform(..), elle est ordonnée normalement : 1,2,10,20
> Utilise le même nombre de dièses que la largeur de ton champ NOMBRE
> Si celui-ci comporte des décimales, utilise "####.##" (pour un champ NOMBRE à 2 décimales)

>> Bonne débasation. BM
0