Pb ajout champs DBase

Résolu
cupracing Messages postés 27 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 24 février 2005 - 17 déc. 2004 à 10:30
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 - 20 déc. 2004 à 15:02
Bonjour à tous, bon j'expose mon problème. J'ai crée un petit programme en Delphi 4 qui travaille avec des tables de données DBase IV.

Sur une des tables DBase j'aimerais pouvoir ajouter un champs de type "Float" à une table existante à l'execution mais je n'ais absolument pas trouvé comment faire.

La seule aide que j'ai trouver c'est comment créer une nouvelle table. La aussi si je crée un champ de type string ça marche bien mais si j'essaie de créer un champ de type Float ça ne marche pas.

with Table1 do // Table1: TTable;
begin
TableName := 'Data.dbf';
TableType := ttDBase;
TableLevel := 4;

with FieldDefs do
begin
Clear;
Add('Filed1', ftFloat, 0, false);
end;

CreateTable;
end;

Je vous remerci d'avance pour votre aide !!

13 réponses

jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
20 déc. 2004 à 12:03
ca roule c'est sympa.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
3
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
17 déc. 2004 à 11:29
Alors la commande pour ajouter un champ float est :

Table1.FieldDefs.Add(NomChamp,FieldType,LStrChaine,Required);

Avec :
NomChamp = Le nom que tu veux pour ton champ;
FieldType = Le type de ton champ FieldType := FtFloat pour un champ float
LStrChaine = Taille du champ ici 0 pour un float car le format float est définie par defaut
Required = Boolean est ce que ce champ doit toujours etre remplit

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
cupracing Messages postés 27 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 24 février 2005 1
17 déc. 2004 à 15:17
merci jmp77 pour ta réponse, mais j'arrive toujours pas à ajouter un champs à l'execution. Le code passe mais aucun champ n'est crée :sad) . Voici mon code:

Table1.Active := False;
Table1.Filtered := False;
Table1.TableName := 'c:\Test.dbf';
Table1.FieldDefs.Add('NEW', ftFloat, 0, true);


Si j'ajoute CreateTable il m'efface tous les champs et me crée mon champ "NEW".

Je vous remercie d'avance si vous avez une solution 8-)
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
17 déc. 2004 à 15:54
Effectivement en recherchant dans ma émoire je me souviens que j'ai du faire ce genre d'opérations il ya quelques mois en arriere et je n'ai jamais trouvé comment faire. J'étais passer par un composant annexe mais pas freeware. Mais son utilisation etait temporaire.
Je suppose que toi tu desires garder en permanence cette fonctionnalité sur ton soft?

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cupracing Messages postés 27 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 24 février 2005 1
17 déc. 2004 à 16:03
oui j'aimerais bien garder cette fonctionnalité sur mon soft, tu te souviens du composant que tu avais utilisé ?
Je vais encore essayer de chercher une solution, sinon j'essayerais d'utiliser le composant dont tu me parles.

En tout cas merci pour ta réponse ;)
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
17 déc. 2004 à 16:25
Alors j'ai peut etre trouver une solution.

Telecharge et installe ce compo freeware :
http://www.torry.net/db/other/db_other/dbupdate.zip

Ensuite tu le poses sur ton appli et tu tapes ceci :
DbUpdate1.TableName := 'C:\Matable.db';
DbUpdate1.AddField('new',ftfloat,0);
DbUpdate1.Exec;


A 1er vue ca fonctionne avec dbase mais je n'ai que des tables paradox pour essayer et ce ne marche pas. Dis moi si avec une table dbase ca fonctionne.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
17 déc. 2004 à 16:34
Tiens finalement en cherchant bien j'ai trouvé ces deux liens qui repondent à tes attentes :
http://www.elists.org/pipermail/delphi-db/2000-November/002733.html
http://info.borland.com/devsupport/bde/bdeapiex/dbidorestructure.html

Voila avec ca tu devrais avoir ton bonheur.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
cupracing Messages postés 27 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 24 février 2005 1
17 déc. 2004 à 16:52
j'ai essayé le composant "dbupdate", lorsque j'essaie j'ai une erreure lorsque j'appel la fonction "Exec". L'erreur est la suivante:

Le projet Project1.exe a provoqué une classe d'exception EDBEngine Error avec le message 'Fonctionnalité non supportée.' Processus stoppé ...


tu trouves la même erreur avec les tables paradox ?

Sinon merci pour les 2 liens je pense effectivement que je vais trouver mon bonheur ! je te tiens au courant !!

merci merci :big)
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
17 déc. 2004 à 17:00
Ouais la meme erreur.

Lache l'affaire et prends les deux liens que je t'ai donné normalement avec ca c ok.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
17 déc. 2004 à 17:02
Et surtout sans composants additionels.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
20 déc. 2004 à 10:30
Alors ca a fonctionner au fait?

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
cupracing Messages postés 27 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 24 février 2005 1
20 déc. 2004 à 12:01
excuse moi de te répondre que maintenant, mais j'ai pas pu testé ce week end. Là je viens d'essayer mais j'ai encore une erreur quand j'appelle la fonction "Check"

Le projet Project1.exe a provoqué une classe d'exception EDBEngine Error avec le message Descripteur de champ incorrect.' Processus stoppé ...


je ne sais pas non plus qu'est ce qu'il faut saisir dans ces variables:

pFlds^.iFldType := NewField.iType;
pFlds^.iSubType := NewField.iSubType;
pFlds^.iUnits1  := NewField.iLength;
pFlds^.iUnits2  := NewField.iPrecision;


bon je continue a chercher d'où vient le problème et te tiens au courant.
A+
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
20 déc. 2004 à 15:02
Trop cool je suis content.

En plus tu en as fais une source. Ca c'est super sympa pour la communauté.

Félicitations.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
0
Rejoignez-nous