Dbase indexer champs caractère avec numeri

BRUNOROB Messages postés 3 Statut Membre -  
 MB -
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
Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. Bernard.Mouille
     
    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
    1. MB
       
      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