Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Trouver les foreign key dans un dataset [ Archives Visual Basic / Bases de données ] (mot_mot)

mardi 20 septembre 2005 à 10:35:58 | Trouver les foreign key dans un dataset

mot_mot

Bonjour,
je débute en vb.net, et je n'arrive pas à trouver les clés étrangères dans une dataset!

Tout d'abord je récupère le schéma de ma base access

   
    Dim oSchemaTable As DataTable
    classConn.ouvrirConnexion()
    oSchemaTable = classConn.getConnexion.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
     classConn.fermerConnexion()


Ensuite je rempli mon dataset avec un dataAdapter

    Dim oTable As DataTable = getMaTable()
        Try

            For Each oMaLigne In oTable.Rows
                classConn.setStrNomTable(CType(oMaLigne.Item("TABLE_NAME"), String))
                classConn.setDataAdapter(New OleDbDataAdapter("Select * From [" & classConn.getStrNomTable & "]", classConn.getConnexion))
                classConn.getDataAdapter.FillSchema(oMonDataSet, SchemaType.Mapped, classConn.getStrNomTable)
                classConn.getDataAdapter.Dispose()
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try


J'arrive ensuite à retrouver les clés pimaires! Mais rien à faire j'ais du mal à comprendre comme faire pour chercher et trouver les clés étrangères!

Merci d'avance



mardi 20 septembre 2005 à 11:53:24 | Re : Trouver les foreign key dans un dataset

69chris

Salut,

Les clés étrangères sont des relations entre tes tables.
Ces relations sont conservées au niveau du DataSet dans la propriété Relations de type DataRelationCollection.

Chris


N'oubliez pas de cloturer votre post.

mardi 20 septembre 2005 à 15:19:56 | Re : Trouver les foreign key dans un dataset

mot_mot

Merci, mais lorsque par exemple j'affiche le nombre de relations contenus dans ma collection de relations, j'obtient un beau "0". Est-ce normal avec le code ci-dessus ne n'obtenir aucune relations dans une bases qui en est chargée?

oMonDataSet.Relations.Count me donne "0"

Au secour!


mardi 20 septembre 2005 à 15:20:05 | Re : Trouver les foreign key dans un dataset

mot_mot

Merci, mais lorsque par exemple j'affiche le nombre de relations contenus dans ma collection de relations, j'obtient un beau "0". Est-ce normal avec le code ci-dessus ne n'obtenir aucune relations dans une bases qui en est chargée?

oMonDataSet.Relations.Count me donne "0"

Au secour!


mardi 20 septembre 2005 à 19:56:51 | Re : Trouver les foreign key dans un dataset

69chris

Vu le code, je pense qu'elles (les clés étrangères) ne sont pas chargées.
Comment les connaitre/deviner à partir d'une requête select sur une table? Le GetSchemaTable donne la structure de la table. Mais donne-t-elle aussi les clés étrangères?

Chris


N'oubliez pas de cloturer votre post.

mercredi 21 septembre 2005 à 14:16:33 | Re : Trouver les foreign key dans un dataset

mot_mot

Donc si je comprend ce que tu me dis! avec cette requête je n'arriverais pas à obtenir les relations qui existent dans ma base. Ensuite en récupérant le schema de ma base, je n'obtient que la structure de mes tables et pas les relations qui existent entre certaines tables de ma base.

Mais est-ce que tu peux m'aider à y voir plus claire! Comme je l'ais dis je suis débutant et je sais vraiment pas comment m'y prendre!
Je veux être en mesure de pouvoir récupérer mes tables avec ou sans données et aussi les relations qui existent!

merci!


mercredi 21 septembre 2005 à 15:00:00 | Re : Trouver les foreign key dans un dataset

69chris

Et bien, pourt savoir ce qu'il y a en retour de GetSchemaTable, utilise la méthode WriteXml du DataSet. Modifie ton code vers :

   Dim oSchemaTable As DataTable
   Dim oDST As DataSet = new DataSet()
    classConn.ouvrirConnexion()
    oSchemaTable = classConn.getConnexion.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
     classConn.fermerConnexion()
oDST.Tables.Add(oSchemaTable)
oDST.WriteXML("c:\schema.xml")

Ensuite, regarde le résultat, si tu ne comprend pas ce qu'il y a dedans, copie/colle ce resultat ici ou en message privé. Je regarderais.

Chris


N'oubliez pas de cloturer votre post.

mercredi 21 septembre 2005 à 15:47:10 | Re : Trouver les foreign key dans un dataset

mot_mot

Merci mais je crois que je me suis mal exprimé! Ce schema je l'obtiens déjà!

En faite ce que je cherche à obtenir c'est le schema détaillé de ma base de données (sans les données des tables).
Ce schema devra contenir toutes mes tables avec leurs champs. Mais aussi les clés primaires et surtout les clés étrangères! car  c'est pour l'instant elles que je cherche à trouver à partir de DataSet.Relations.

Mais d'après ce que tu m'as dis, mon code ne peux me charger les relations de la bases de données, d'une part à cause du code sql et d'autre part parce que je charge le schema de cette base!

Donc, est-ce que tu peux m'expliquer comment obtenir les relations qui lient certaines tables d'une base de données en utilisant le mode déconnecté.

Merci, thomas



mercredi 21 septembre 2005 à 16:43:36 | Re : Trouver les foreign key dans un dataset

69chris

Je reprend dans l'ordre :
Mon dernier post était là pour vérifier ce que je disais. Car si le schéma obtenu par la méthode GetSchemaTable donne les relations, pas besoin de se casser la tête. C'est pour ça que je t'ai demandé de faire une sauvegarde du résultat sous forme XML.
'----------
Je suis désolé de ne pas pouvoir faire le test, mais j'ai pas Access sur mon poste donc pour faire des tests simples, c'est pas évidant.
----------'
Ensuite, si la méthode GetSchemaTable ne donne rien, il faut allé chercher le descriptif de la base dans les tables systèmes et c'est propre à chaque SGBD. Je sais comment faire avec SQL Server mais c'est tout.

Pour finir, le schéma de ta base est fixe? si c'est le cas, pourquoi ne pas le coder dans un fichier XML?


Chris


N'oubliez pas de cloturer votre post.

jeudi 22 septembre 2005 à 11:26:32 | Re : Trouver les foreign key dans un dataset

mot_mot

Réponse acceptée !
merci pour ton aide! mais je crois que j'ais trouvé la solution!
en faite il suffit de reparcourir ma base de données et pour récupérer cette fois le schema relationnel avec:

GetOleDbSchemaTable(OleDbSchemaGuid.Foreign_Keys, New Object() {Nothing, Nothing, Nothing, Nothing, Nothing, Nothing})

on obtiennt donc le xml suivant:

<?xml version="1.0" standalone="yes" ?>
-     <dataset1>
-         <Foreign_Keys>
            <PK_TABLE_NAME>Patron</PK_TABLE_NAME>
            <PK_COLUMN_NAME>NomPatron</PK_COLUMN_NAME>
            <FK_TABLE_NAME>Vendeur</FK_TABLE_NAME>
            <FK_COLUMN_NAME>nomVendeur</FK_COLUMN_NAME>
            <ORDINAL>1</ORDINAL>
            <UPDATE_RULE>NO ACTION</UPDATE_RULE>
            <DELETE_RULE>NO ACTION</DELETE_RULE>
            <PK_NAME>PrimaryKey</PK_NAME>
            <FK_NAME>PatronVendeur</FK_NAME>
    </Foreign_Keys>
</dataset1>




1 2

Cette discussion est classé dans : trouver, dataset, nothing, clés, classconn


Répondre à ce message

Sujets en rapport avec ce message

Défi trouver l'algo keygen [ par Redman31100 ] Bonjour, alors je demande pas d'aide, je vous défi de trouver l'ago(très simple et facile) de mon keygen.Je vous donne 5 clés générés par mon keygen. Gestion dataset en VB [ par ttornade ] Bonjour à tous,je voudrais implémenter une fonctionalité de recherche particulière dans une base SQL server. Ma stratégie est celle de charger le plus CONNECTION SUR BASE ORACLE AVEC DATASET [ par inforedaster ] Bonjour, je viens de finir un mini projet de gestion hôtelière avec VB.NET mais on utilisant la DATA READER que je me trouve comme un handicape pour b Trouver chemin ldap d'un poste AD [ par remifalcon ] Bonjour à tousQuestion toute bête, je cherche à trouver le chemin ldap des machines de modomaineJ'arrive à trouve que le nom de la machine avec l'attr XSD --> XML [ par jmoronvalle ] Bonjour a tousje dois, a aprtir d'un XSD et de data, remplir un XMLle XSD en question:<xs:schema xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" x Ordonner un DataSet grâce à un DataGrid [ par Papymuzo ] Bonjour à tous (et à toutes ^^), Je vous explique l'état des lieux : je remplis un DataGridView grâce à un DataSet. Maintenant, voilà mon problème : conserver le dataset lorsqu'on déplace la base de données [ par jfuck ] Bonjour à tous,Voilà, j'ai fait une petite appli qui repose sur une BD et j'ai utilisé pour cela des dataset et des tableadapters. Je dois maintenant DataAdapter/ Dataset problem .... [ par Bal1n ] Bien le bonsoir ^^ Donc que je vous explique mon problème.J'effectue une requête tout ce qu'il y a de plus classique :Dim cs As String cs = "Data Sour [VB Express 05] Lire et récupéré info d'un XML. [ par seltsam ] Bonjour !J'ai un XML XML : xml version="1.0" encoding="utf-8" ?><a class="b" style="VISIBILITY: hidden" Où trouver l'outil winsock_control.winsock [ par lagarce ] Rebonjour à tout le monde,Voilà je cherche l'outil winsock_control.winsock afin de créer une appli serveur/clientJ'ai essayer le clic droit dans la bo


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.