Modifier un champ Access avec BDE - c++ builder

Rionirind Messages postés 26 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 juillet 2011 - 5 juil. 2011 à 18:27
Rionirind Messages postés 26 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 juillet 2011 - 8 juil. 2011 à 15:54
Bonsoir à tous.

Pour faire simple, mon souci est que je n'arrive pas à modifier un champ d'une table Access 2003.

J'ai tout d'abord essayé de modifier ce champ en SQL mais la commande ALTER TABLE n'est pas entièrement supporté.
En fouinant sur le net j'ai pu voir que certains avaient réussit à résoudre ce problème avec ADO et DAO (composant microsoft). Je me suis inspiré de ces travaux pour tenter la même chose mais avec BDE (inclus avec BCB6 ):

//Condition pour faire la mise à jour
if (NomChamp_actuel != edt_NomChamp_nouveau->Text)
{
     //ouverture des sessions, de la base et de la table
     Session_bdd->Open();
     Base_de_donnee->Open();                                                          
     table_resultats->Active = true;

     //Ecriture du nouveau nom saisie par l'operateur dans la table Resultat
     table_resultats->Fields->FindField(NomChamp_actuel)->FieldName = edt_NomChamp_nouveau->Text;

     //ouverture des sessions, de la base et de la table
     tb_resultats->Active = false;
     Base_de_donnee->Close();
     Session_bdd->Close();
}


Avec ce bout de code j'obtiens une erreur me disant que la modification n'est pas possible sur une table ouverte.
Normal me direz vous, mais du coup je ne sais pas comment m'y prendre pour faire la modification sur la table fermé.
Merci par avance pour vos idées.

1 réponse

Rionirind Messages postés 26 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 juillet 2011
8 juil. 2011 à 15:54
Bon ben il semblerait que cela pas encore possible.

J'ai choisi une solution "lourde" en sql qui permet de donner l'impression d'un renommage :
- Copie de la table1 vers table2, (copie de la table entière par simple précaution)
- Suppression dans la table1 de tous les champs à partir de celui à renommer,
- Insertion du champ dans table1 avec le nom de champ voulu,
- Insertion des champs de la table2 dans la table1 après celui à renommer,
- Copie des données de la table2 vers la table1,
- Suppression la table2.

Mais ça ne me conviendra pas sur le long terme, car plus il y aura de données, plus cette procédure sera longue...
Donc je reste ouvert à vos suggestions.
0
Rejoignez-nous