Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

1 réponse
Avatar
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.

1 réponse

Avatar
Stéphane
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" a écrit dans le message de
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.