Bonjour (Delphi7 et DBase 4)
Je me bats pour indexer une table.
Essai 1 : utilisation bête du code fourni dans l'aide de Delphi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
with Modele_Compte do // c'est le nom de ma table
  begin
    Active := False;
    TableType := ttDBase;
    DatabaseName := '';
    TableName := 'Modele_Compte.dbf';
    if not Modele_Compte.Exists then
      begin
        with FieldDefs do
          begin
            Clear;
            with AddFieldDef do
              begin
                Name := 'Num_Auto';
                DataType := ftInteger;
                Required := True;
              end;
            with AddFieldDef do
              begin
                Name := 'Libellé';
                DataType := ftString;
                Size := 30;
              end;
          end;
         with IndexDefs do
            begin
              Clear;
              // Le 1er index n'a pas de nom car il s'agit
              // d'une clé primaire Paradox
              with AddIndexDef do
                begin
                  Name := '';
                  Fields := 'Num_Auto';
                  Options := [ixPrimary];
                end;
              with AddIndexDef do
                begin
                  Name := 'Index2';
                  Fields := 'Libellé';
                  Options := [ixCaseInsensitive];
                end;
            end;
          CreateTable;
      end;
  end;
end;
Résultat : message d'erreur "Descripteur d'index incorrect. La table n'existe pas..."

Essai2 : adaptation du code de Nono40 trouvé dans la FAQ
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
      with Modele_Compte do
        begin
          Active := False;
          TableType := ttDBase;
          DatabaseName := '';
          TableName := 'Modele_Compte.dbf';
          if not Modele_Compte.Exists then
            begin
              with FieldDefs do
                begin
                  Clear;
                  with AddFieldDef do
                    begin
                      Name := 'Num_Auto';
                      DataType := ftInteger;
                      Required := True;
                    end;
                  with AddFieldDef do
                    begin
                      Name := 'Libellé';
                      DataType := ftString;
                      Size := 30;
                    end;
                end;
              CreateTable;
            end;
        end;
        Modele_Compte.AddIndex('','Num_Auto',[ixPrimary]);
Résultat : pas d'erreur, fichier index .MTX créé

Question : cette seconde méthode est-elle la seule et unque ? Ou y a-t-il mieux ?
Cordialement.
AlainVH