Bonjour
Je veux créer une table à partir d'une sélection dans un fichier .txt.

Comme je ne peux pas appliquer de requête sur ce fichier, je le transfère dans une table temporaire Paradox par BatchMove. Cette table comporte le même nombre d'enregistrements que mon fichier .txt.


Pourtant, après ExecSql d'une requête de sélection des champs qui m'intéressent, les enregistrements sont apparemment copiés 2 fois et si je mets un clé sur un champs j'ai une erreur d'exécution.

Et si j'ouvre la table avec le module de base de données BDE, elle est renseignée comme contenant 6 enregisrements alors que j'en vois 12. Quand je sélectionne tout pour les effacer, il n'encadre que les 6 premiers mais par contre il les efface tous.


Source :

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
Begin
 TableDiv.Open;
 if TableDiv.RecordCount = 0 Then
   Begin
    Tablediv.Close;
    with TableTemp do  // Création de la table temporaire
     begin
     TableType := ttParadox;
     TableName := 'TempTable';
     with FieldDefs do  // Définition de champs de la table temporaire Div
      begin   
       Clear;      // Description des champs
       Add('DivCode', ftSmallInt, 0, True);
       Add('Localite', ftString, 32, True);
       Add('lt', ftString, 1, True);
       Add('admnr', ftString, 5, False);
       Add('Div', ftSmallInt, 0, True);
       Add('Commune', ftString, 25, True);
       Add('Mut', ftString, 2, False);
       Add('Dan2', ftString, 32, False);
       Add('adm2', ftString, 25, False);
     end;
     CreateTable;
     TableCadaTemp.TableName := 'da.txt';
     BatchMoveTemp.Execute;
     CreateQuery.Close;     // Transfert dans TableDiv
     CreateQuery.SQL.Text;
     CreateQuery.SQL.Clear;
     CreateQuery.SQL.Add('Insert into TableDiv (Div, Localite, Commune, DivCode) ');
     CreateQuery.SQL.Add('Select Div, Localite, Commune, DivCode ' );
     CreateQuery.SQL.Add('FROM TempTable;');
     CreateQuery.ExecSQL;
   end;
end;
Quelqu'un aurait-il une idée pour m'aider à résoudre ce problème.

Merci d'avance

[edit] Balises de code ajoutées par Pascal Jankowki[/edit]