je cherche un moyen ou un code source pour convertir un fichier dbf " dbase" en fichier paradox "delphi"
je cherche un moyen ou un code source pour convertir un fichier dbf " dbase" en fichier paradox "delphi"
regarde DataPump fourni avec Delphi ...
Sinon, ouvre ta table Dbase via un TTable, ouvre un autre TTable Paradox, copie les FieldDefs, puis fait les Append ...
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Salut, je ne sais pas si c'est toujours d'actualité, mais je suis aussi dans cette problématique. Voici le bout de code que j'ai testé aujourd'hui et qui fonctionne. Je récupère une table *.dbf à laquelle j'accède avec le composant TaCycle1 et je la transpose dans la table TestCycle.db que j'accède au moyen du composant TaPdx créé dynamiquement.
Deux remarques :
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 //creation de la nouvelle table Pdox TaPdx := TTable.Create(nil); TaPdx.Active := False; TaPdx.TableType := ttParadox; TaPdx.TableName := ExtractFilePath(Application.ExeName) + 'TestCycle.db'; //Au cas où suppression des définitions de champs existantes TaPdx.FieldDefs.Clear; //Ouverture de la table *.dbf TaCycle1.Open; //récupération des champs de l'ancienne table et copie vers la nouvelle For i := 0 To TaCycle1.FieldCount - 1 Do TaPdx.FieldDefs.Add(TaCycle1.Fields[i].FieldName, TaCycle1.Fields[i].DataType, TaCycle1.Fields[i].Size,TaCycle1.Fields[i].Required); //Au cas où suppression des définitions de d'index existantes TaPdx.IndexDefs.Clear; //Les tables paradox doivent avoir au moins un index primaire TaPdx.IndexDefs.Add('',TaCycle1.Fields[0].FieldName,[ixPrimary]); //récupération et copie des index For i := 0 To TaCycle1.IndexDefs.Count - 1 Do TaPdx.IndexDefs.Add(TaCycle1.IndexDefs.Items[i].Name, TaCycle1.IndexDefs.Items[i].Fields,[ixCaseInsensitive]); //Création de la nouvelle table TaPdx.CreateTable; //Copie des enregistrement de la table *.dbf vers la table *.db TaPdx.BatchMove(TaCycle1,batAppendUpdate);
- je ne suis pas absolument certain que les tables paradox doivent comporter un index primaire mais il m'a fallu en créer un pour pouvoir monter la table dans une DBGrid,
- je n'ai pas su récupérer les "options" des index de la table *.dbf (savoir si l'index est maintenu, unique et/ou descendant) pour les transposer vers la table *.db donc par défaut j'ai mis attribué l'option "ixCaseInsensitive" à tous les index de la nouvelle table... Si quelqu'un à une solution je suis preneur![]()
Bonjour,
L'index primaire est obligatoire dans Paradox, alors qu'il n'existe pas pour dBase.
PL
Partager