harbonne
Messages postés10Date d'inscriptionvendredi 19 avril 2002StatutMembreDernière intervention 3 mai 2007
-
20 mai 2005 à 10:38
lmu
Messages postés24Date d'inscriptionvendredi 6 juin 2003StatutMembreDerniè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.
lmu
Messages postés24Date d'inscriptionvendredi 6 juin 2003StatutMembreDerniè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))