Indexation DBase / Table level changed ?

Signaler
Messages postés
4
Date d'inscription
jeudi 17 octobre 2002
Statut
Membre
Dernière intervention
12 mars 2003
-
Messages postés
14
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
23 juin 2021
-
Je viens du clipper et voudrais me mettre au DELPHI :

Je n'arrive pas a (re)indexer un fichier DBase (clipper) avec la sequence d'instructions suivantes :

Tfichier: Ttable;
....
....
TFichier.close;
Tfichier.AddIndex('FI000E0','Coderr',[]);

Le fichier en question comporte 2 champs de type String et 1 champ memo....

Le fichier FI000E0.NDX n'est pas cree car une erreur libellee 'Table level changed' survient.

Quelqu'un pourrait-il m'aider ?
Grand merci d'avance.

sybille :question)

5 réponses

Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
2
C'est bizarre car je viens d'essayer sur une base de bas niveau ( LEVEL 3 dans le BDE ) et la création d'index fonctionne...

Par contre le champ servant d'index doit être le premier champ de la table !! Sinon la table DBASE III change de niveau ( ce n'est sans doute pas génant ). Dans ce cas l'index est créé mais avec un fichier .DBT plutôt que .MDX

--- :sleepy) Nono du Moulin :sleepy) ---
Messages postés
4
Date d'inscription
jeudi 17 octobre 2002
Statut
Membre
Dernière intervention
12 mars 2003

Bonsoir et merci pour ta contribution.

Un fichier DBT n'est pas un fichier index, mais un fichier memo.
Le champ (coderr) sur lequel j'indexe est précisément en première position dans la table, mais ça ne marche pas. De plus, si le champ servant a indexer doit obligatoirement etre en premiere position, je trouve ca tres tres genant.

Je commence a desesperer de pouvoir me servir de Delphi avec des fichiers DBase.

Ce qui est bizarre aussi, c'est que le Database Desktop permet de le faire sans probleme; mais je ne peux tout de meme pas envoyer un utilisateur effectuer cette manoeuvre dans le Database Desktop !!!! Je dois pouvoir automatiser la chose dans mon appli....

sybille
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
2
Quelle version de Delphi Utilises-tu ?
Avec quoi as-tu créé la table ?
Si tu crées la table avec DataBase Desktop, as-tu le même problème ?

Je viens encore d'essayer et ça fonctionne aussi sous Delphi ( 6 version entreprise )

Note que c'est très fréquent dans les bases de données que les index primaires soient sur la(les) première(s) colonne(s). C'est avec les index secondaires qu'ensuite les tri sur des colonnes quelquonques sont effectués.

--- :sleepy) Nono du Moulin :sleepy) ---
Messages postés
4
Date d'inscription
jeudi 17 octobre 2002
Statut
Membre
Dernière intervention
12 mars 2003

Bonsoir Nono,

J'utilise Delphi6 Pro et il s'agit de tables clipper (sans les index .NTX) qui proviennent d'une appli que je voudrais porter en DELPHI.

Tu m'as mis sur la piste de l'erreur 'Table level changed' -> en fait, je n'avais pas bien configuré le BDE pour qu'il génère des index dBase III+.
De plus, j'ai du passer par la fonction dbiAddIndex du BDE au lieu de la méthode Table.AddIndex
Maintenant, c'est OK pour des index .NDX.

Ceci dit, j'ai aussi pensé upgrader mes fichiers .dbf du format dBase III+ au format dBase IV. Pour effectuer cette manoeuvre, je suis passee par le Database DeskTop et il m'a bien transforme mes fichiers Clipper en dBase IV. MAIS, MAIS,... Là où ça devient incompréhensible, c'est pour (ré)générer les index .MDX via mon appli (DELPHI 6 Pro) : si le fichier .MDX est absent avant de lancer la fonction de reindexation, je reçois un message d'erreur (fichier inexistant lors de l'ouverture du fichier) et si le fichier est présent, je reçois un autre message d'erreur pour me dire que le fichier .MDX existe déjà : donc pas de (ré)-indexation possible ! Que les index soient de type Maintained ou non ne change rien au problème.
Alors, je retournée au format DBASE III+....

Merci encore pour ta réponse.

sybille
Messages postés
14
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
23 juin 2021

Bonjour ts le monde les index de clipper5.3 a delphi c' est une galéré je nage toujours pour créer un index sur delphi. sur clipper5.3 c'est très simple mètre sur le programme prg
use etudiant pour ouvrir la base après mètre index on npm+prenom to etude et le fichier etude.ntx et créer automatiquement