Question

L’application existante est en C #. Au démarrage, l'application appelle une méthode virtuelle pour modifier la base de données (par exemple, une nouvelle révision peut nécessiter le calcul d'un nouveau champ ou autre). Une connexion OleDb ouverte est transmise à la méthode.

Je dois changer la largeur d'un champ. L'instruction ALTER TABLE fonctionne correctement. Mais je voudrais éviter d'exécuter l'instruction ALTER TABLE si le champ a déjà la taille appropriée. Existe-t-il un moyen de déterminer la taille d’un champ MS Access en utilisant la même connexion OleDb?

Était-ce utile?

La solution

Je ne suis pas sûr de bien comprendre votre question.
Mais vous pouvez interroger la table pour 0 lignes (SELECT 1 FROM myTable WHERE 1 = 0)

Et vous pouvez utiliser la collection de champs de Recordet, reportez-vous à ce champ par son nom ou son index et utiliser les propriétés du champ telles que la taille, le type, etc.

Est-ce que cela vous aide?

Autres conseils

Voici ce que je propose en me basant sur la réponse de Shahkalpesh:

var command = new OleDbCommand("SELECT FIELD FROM TABLE", connection); 
var reader = command.ExecuteReader(CommandBehavior.SchemaOnly); 
var schema = reader.GetSchemaTable(); 
var size = Convert.ToInt32(table.Rows[0]["ColumnSize"]);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top