Bonjour,

J'ai un problème pour renommer un champ d'une table access à l'éxécution et j'ai donc besoin de vos lumières.

Access n'autorise pas de renommer un champ simplement. Il faut en passer par la séquence suivante :
La requète suivante crée un champ temporaire de type booléen (Vrai/Faux):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
req:= 'ALTER TABLE Livres ADD temp BIT'
Ensuite, à l'aide d'une requète, je copie les valeurs de mon champ dans la requète temporaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
req:='UPDATE Livres SET temp = '+QuotedStr(AQLivres.Fields[19].FieldName); <== ICI se produit l'erreur
J'efface le champ à renommer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
req:= 'ALTER TABLE Livres DROP '+QuotedStr(AQLivres.Fields[19].FieldName);
Je crée un nouveau champ avec le nouveau nom :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
req:= 'ALTER TABLE Livres ADD '+QuotedStr(Edit1.Text)+' BIT'
Enfin, je recopie les données du champ temporaire dans le nouveau champ:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
req:='UPDATE Livres SET '+QuotedStr(Edit1.Text)+' = temp';
Et pour terminer, j'efface le champ temporaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
req:= 'ALTER TABLE Livres DROP temp';
Eh bien, ça ne marche pas : J'ai une erreur lorsque je copie mes données dans le champ temporaire : Une Ole Exception : Type de données incompatible dans l'expression du critère.

Pourtant le champ indiqué par QuotedStr(AQLivres.Fields[19].FieldName) est bien de type booléen comme le champ créé temporairement. Je ne comprends donc pas pourquoi j'ai cette erreur.

Merci de m'aider.

Didier