Récupérer les relations d'une base Access, en .NET 1.1

Le
Stéphane
Bonjour,

Je cherche à récupérer toutes les relations présentes dans une base Access.

J'ai trouvé ceci sur internet :
http://www.sqlfr.com/codes/SQL-SERVER-RECUPERER-RELATION-ENTRE-TABLES_26611.aspx

* select db_name() + '.' +
rtrim(user_name(ObjectProperty(fkeyid,'ownerid'))) + '.' +
object_name(fkeyid) + ': ' + object_name(constid)
* from sysreferences where
* (rkeyid =object_id('tblTable01'))
* AND (fkeyid =object_id('tblTable02') )

Je pourrais donc si c'est possible, utiliser cette requête dans une
connexion oledb, ou adodb, mais je ne sais pas comment m'y prendre.


Par contre, je sais bien me connecter à la base, récupérer les tables, les
champs et les données.


Le tout en VB .Net 2003 et Framework 1.1.


Merci d'avance pour votre aide.

Stéphane.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stéphane
Le #12245021
Changement de méthode, on se rapproche...

Je pense que le mieux serait de passer toutes les occurences de la table
MSysRelationships.
Par contre, si j'arrive à lire n'importe quelle table, je n'arrive pas à
lire celle-ci...

Message d'erreur :

Impossibe de lire les enregistremnts; pas d'autorisation de lecture sur
'MSysRelationships'.



Je vois 2 solutions pour régler ce problème :

1) soit il existe 1 commande en VB .Net correspondant à cocher la case
Objets système dans le menu Outils, Options d'Access.

2) soit utiliser 1 autre méthode pour lire les données d'une table



Dans ma form, j'ai mis :

1 OleDbDataAdapter1

1 DataSet1

1 OpenFileDialog1

1 OleDbConnection1

1 DataGrid1

et 1 bouton pour lancer ce code :

Dim t2 As New DataTable

Dim r2 As New ADODB.Recordset

Dim conn2 As New ADODB.Connection

Dim cs2, rq2 As String

If Not Me.OpenFileDialog1.ShowDialog = DialogResult.OK Then Exit Sub

cs2 = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet
OLEDB:Database Locking Mode=1;Jet OLEDB:Database Password=;Data Source=""" &
Me.OpenFileDialog1.FileName & """;Password=;Jet OLEDB:Engine Type=5;Jet
OLEDB:Global Bulk Transactions=1;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet
OLEDB:System database=;Jet OLEDB:SFPúlse;Extended Properties=;Mode=Share
Deny None;Jet OLEDB:New Database Password=;Jet OLEDB:Create System
Databaseúlse;Jet OLEDB:Don't Copy Locale on Compactúlse;Jet
OLEDB:Compact Without Replica Repairúlse;User ID­min;Jet OLEDB:Encrypt
Databaseúlse"

conn2.Open(cs2)

rq2 = "select * from MSysRelationships"

r2.Open(rq2, conn2)

Me.OleDbDataAdapter1.Fill(t2, r2)

Me.DataSet1.Tables.Add(t2)

Me.DataGrid1.DataSource = Me.DataSet1.Tables(t2.TableName)


Merci d'avance pour votre aide,

Stéphane.



"Stéphane" news:
Bonjour,

Je cherche à récupérer toutes les relations présentes dans une base
Access.

J'ai trouvé ceci sur internet :
http://www.sqlfr.com/codes/SQL-SERVER-RECUPERER-RELATION-ENTRE-TABLES_26611.aspx

* select db_name() + '.' +
rtrim(user_name(ObjectProperty(fkeyid,'ownerid'))) + '.' +
object_name(fkeyid) + ': ' + object_name(constid)
* from sysreferences where
* (rkeyid =object_id('tblTable01'))
* AND (fkeyid =object_id('tblTable02') )

Je pourrais donc si c'est possible, utiliser cette requête dans une
connexion oledb, ou adodb, mais je ne sais pas comment m'y prendre.


Par contre, je sais bien me connecter à la base, récupérer les tables, les
champs et les données.


Le tout en VB .Net 2003 et Framework 1.1.


Merci d'avance pour votre aide.

Stéphane.



Publicité
Poster une réponse
Anonyme