Metadata access

cs_solons Messages postés 6 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 20 août 2008 - 6 août 2008 à 10:19
cs_solons Messages postés 6 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 20 août 2008 - 20 août 2008 à 10:02
Bonjour,

Je voudrais savoir comment récupérer les metadonnées d'une base access autrement qu'avec la méthode
oledebdatareader.getschematable() qui ne fonctionne pas pour la propriété AllowDBNull.

Merci d'avance.

2 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
6 août 2008 à 23:20
Salut

Avec ADOX (object COM) tu peux interroger la structure de la base de données ACCESS

Lire l'ADOX technopoche
Exemple http://www.microsoft.com/downloads/thankyou.aspx?familyId=d9b669dc-97b6-4510-9c63-2b6118adeac9&displayLang=fr en vb6 (désolé)

bon coding
0
cs_solons Messages postés 6 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 20 août 2008
20 août 2008 à 10:02
Ma question était un peu sommaire et du coup la réponse ne correspond pas à mes besoins. Merci quand meme d'avoir pris le temps de me répondre sur les deux sites!!

Je vais préciser mon problème des fois que vous ayez une idée de la marche à suivre.

Je suis en stage et je n'ai à mon actif qu'une vingtaine d'heures de java et d'ada, soit presque rien.
Je suis chargé de fabriquer un outils capable de prendre une source de données (access, excel, ou xml)
et de générer automatiquement un script reproduisant le contenue de cette source dans une base SQL serveur.
(ça semble difficile considérant que je ne savais pas ce qu'était visual studio il y a trois semaine encore et que je ne connaissais
meme pas l'éxistence du cigle SQL, mais tant qu'il y a de la vie il y de l'éspoir)
Je me suis donc attelé à l'analyse du problème et j'ai trouvé une excellente source qui fait exactemement ce que je veux,
enfin qui devrait, mais elle contient plusieurs bugs, dont notament un qui me dépasse.

Le script généré à partir d'une base access et globalement le bon, mis a part la propriété "AllowDbNull" ce qui n'est quand meme pas rien. Pour récuperer ses propriétés, l'auteur de cette source utilise la méthode : 

oOleDbDataReader = new System.Data.OleDb.OleDbCommand("SELECT * FROM [" + sCurrentTable + "]", oOleDbConnection).ExecuteReader(System.Data.CommandBehavior.KeyInfo);
                     
 oDataTableInfosTable = oOleDbDataReader.GetSchemaTable();

Cette methode renvoie une datatable "oDataTableInfosTable" qui contient toutes les informations seulement celle-ci sont fausses. En effet la propriété "AllowDbNull" ne correspond pas au valeurs stoquées dans access. Je me suis donc dis que cette méthode ne marchait pas et j'ai refait la mème chose avec le provider odbc, qui malheuresement ne marche pas non plus.

Le résultat n'est pas le meme que pour le provider OleDb, la propriété étant bonne pour les colonne conténant des booléens. mais tt ce qui est chaine de caractère est automatiquement en null autorisé. Sachant que les données sur lesquels je travaille contienent 50 à 60 tables, il est difficile de refaire cette propriété à la main.

N'ayant apris que le C# du fait de la courte durée de mon stage j'aurais besoin d'une autre façon d'acceder à cette propriété dans ce language.

D'avance merci.
0
Rejoignez-nous