Creation d'une datarelation

harbonne Messages postés 10 Date d'inscription vendredi 19 avril 2002 Statut Membre Dernière intervention 3 mai 2007 - 20 mai 2005 à 10:38
lmu Messages postés 24 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 7 octobre 2009 - 10 juin 2005 à 16:31
curieuse_asp


Bonjour,





Voici la situation:





j'ai crée une table TERME qui contient des termes choisis par un documentaliste.





Le structure de cette table est la suivante :





ID_TERME, Lib_TERME( libellé du terme), EM( numéro de synonyme qui est également un terme), NA( chaine de caractères), DATE.





J'ai crée une table GENERIQUES qui contient les termes de la table TERME avec leur terme(s) générique(s) (générique signifie qui se situe à un niveau hiérarchique supérieur dans une arborescence)





La structure de la table générique est la suivante :


ID_TG( n° incrémenté), ID_TERME_SOURCE ( qui est le numéro du terme dans la table TERME qui possède un terme générique), ID_TERME_GENERIQUE qui est le numéro du terme générique qui est lui même un terme de la table TERME..





Dans la table GENERIQUES il existe des termes qui n'ont pas de terme générique parce que ce sont des termes RACINE et les concernant, la valeur du champ ID_TERME_GENERIQUE = 0





J'aimerais crée un treeview qui montre :





-toutes les racines





-tous les termes qui ont les racines pour terme générique, c'est à dire pour lesquels les racines sont situées à un niveau hiérarchique supérieur.


exemple:
agriculture(terme racine)
agriculturebiodynamique(terme qui a pour terme générique la racine 'agriculture'


J'ai crée deux Data Adapter qui servent à la communication entre un data set et la source de données (sql serveur).





J'ai crée un dataset objDS rempli du contenu du résultat de deux sélections par le biais de deux requêtes sql.





Il se trouve que le deuxième dataadapter da2 remplit le dataset objDS du contenu d'une table GENERIQUES qui est une table enfant de la première table "RACINES".





J'ai donc besoin de créer une DATARELATION mais le code implémenté ne fonctionne pas bien.


En fait , les deux requêtes sql se font sur les mêmes tables 'TERME' et 'GENERIQUES' etje ne sais pas comment déterminer la clé primaire et la clé etrangère pour créer la datarelation.

voici le code implémenté:



Imports System.Data


Imports System.Data.SqlClient


Imports Microsoft.Web.UI.WebControls


Public 
Class TreeView1



Inherits System.Web.UI.Page



Protected 
WithEvents TreeView1 
As Microsoft.Web.UI.WebControls.TreeView



Sub Page_Load(
ByVal sender 
As System.Object, 
ByVal e 
As System.EventArgs) 
Handles 
MyBase.Load



Dim sConnString 
As String "Data Source localhost ; Initial Catalog =THESAURUS ; User Id =""; Password=""; integrated security = SSPI"



Dim objConn 
As 
New SqlConnection(sConnString)


objConn.Open()



Dim objDS 
As 
New DataSet()



Dim dt1 
As DataTable



Dim dt2 
As DataTable



Dim i 
As 
Integer



'creation d'un Adapter qui se charge des communications entre le Dataset et la source de données



Dim da1 
As 
New SqlDataAdapter("SELECT Lib_TERME from TERME WHERE ID_TERME IN (SELECT ID_TERME_SOURCE_G from GENERIQUES WHERE ID_TERME_GENERIQUE = 0)", objConn)


da1.Fill(objDS, "RACINES")


dt1 = objDS.Tables("RACINES")



'autre DataAdapter qui va prendre les enfants de dette racine



Dim da2 
As 
New SqlDataAdapter("SELECT Lib_TERME from TERME WHERE ID_TERME IN (SELECT ID_TERME_SOURCE_G from GENERIQUES WHERE ID_TERME_GENERIQUE = ID_TERME)", objConn)



'je fais un fill avec un nom de table enfant


da2.Fill(objDS, "GENERIQUES")


dt2 = objDS.Tables("GENERIQUES")



For i = 1 
To dt1.Columns.Count



If dt1.Columns(0).ColumnName = dt2.Columns(i).ColumnName 
Then



Dim RACINES_GENERIQUES1 
As 
New DataRelation(dt2.TableName & "_" & dt1.TableName, dt2.Columns(0), dt1.Columns(i))-> c'est ici que cela pose problème!!


objDS.Relations.Add(RACINES_GENERIQUES1)



End 
If



Next



' objDS.Tables("RACINES").Columns("ID_TERME_SOURCE_G"), objDS.Tables("GENERIQUES").Columns("ID_TERME"))


objConn.Close()



'création des types de données du tree view



Dim nodeTERME 
As TreeNode



Dim rowTERME 
As DataRow



For 
Each rowTERME 
In objDS.Tables(0).Rows


nodeTERME = 
New TreeNode()


nodeTERME.Text = rowTERME("Lib_TERME")


TreeView1.Nodes.Add(nodeTERME)



Next



End 
Sub


End 
Class




Merci beaucoup de votre aide par avance.
Bien cordialement.

2 réponses

lmu Messages postés 24 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 7 octobre 2009
10 juin 2005 à 15:46
Je pense que c'est une erreure d'écriture, essaie :
Dim RACINES_GENERIQUES1 As New DataRelation(dt2.TableName & _
dt1.TableName, dt2.Columns(0), dt1.Columns(i))
0
lmu Messages postés 24 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 7 octobre 2009
10 juin 2005 à 16:31
Pardon
Dim RACINES_GENERIQUES1 As New DataRelation(dt2.TableName, & _
dt1.TableName, dt2.Columns(0), dt1.Columns(i))
0
Rejoignez-nous