lundi 20 juillet 2015

PostgreSQL, Access et le champs TEXT

Lorsque vous connectez une base Access à PostgreSQL via le driver ODBC, les paramètres par défaut sont de considérer les champs de type TEXT de PostgreSQL comme des LongVarChar, des champs MÉMO dans le jargon Access.



Access ne permet pas de faire des jointures sur des champs MEMO, de plus si votre table ne comprend qu'un identifiant et un champ MEMO, Access perd les pédales lorsque vous ajoutez des données et affiche le célèbre '#supprimé' ou '#deleted' dans les champs.


Il existe plusieurs solutions pour éviter ce problème :
1 - décocher l'option 'Text as LongVarChar'. 
Avec cette option décochée, Access fonctionne normalement mais par contre, ne permet l'encodage que de 255 caractères. 
Si jamais, essayer de modifier la valeur 'Max Varchar' de la section Miscellaneous avec une valeur supérieure à 255 ne fonctionne pas. Access considère un champ texte de plus de 255 comme un champ MEMO. (Croyez-moi, j'ai essayé !)

2 - ne pas utiliser de champ TEXT, mais utiliser un champ de type VARCHAR(x) avec x<255

3 - Faire un Me.Refresh dans l'événement Form_AfterUpdate.
Fonctionne très bien, mais vous perdrez l'élément sélectionné. Tolérable pour quelques éléments, inacceptables pour des grandes listes

4 - plusieurs autres solutions broche à foin que je déconseille...


Aucun commentaire:

Publier un commentaire

Ce commentaire sera validé par notre modérateur.