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
Résultat : message d'erreur "Descripteur d'index incorrect. La table n'existe pas..."
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;
Essai2 : adaptation du code de Nono40 trouvé dans la FAQ
Résultat : pas d'erreur, fichier index .MTX créé
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]);
Question : cette seconde méthode est-elle la seule et unque ? Ou y a-t-il mieux ?
Cordialement.
AlainVH
Partager