Chargement du dataview

trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010 - 26 juil. 2005 à 16:27
trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010 - 27 juil. 2005 à 10:09
Bonjour,
j'ai une petite question concernant les datagrid et les tables liées....Pour l'affichage d'une table dans un datagrid, j'utilise ce code :

Public
Sub affichageBDToDatagrid(
ByVal requete
As
String,
ByVal table1
As
String,
ByVal DataGridViewName
As DataGrid)



Try
cnx.Open()
'ouverture de la connection
'lien entre la base et la requète
liaison =
New OleDbDataAdapter(requete, base)

'charge la table en mémoire
liaison.Fill(memoire, table1)

Dim vue
As
New DataView(memoire.Tables(table1))
DataGridViewName.DataSource = vue
cnx.Close()

Catch ex
As Exception
MessageBox.Show(ex.Message)

End
Try
End
Sub

Mais maintenant que j'ai besoin d'afficher deux tables liées dans mon datagrid ca se complique un peu! Pour la requete, je pense avoir trouvé un truc avec "iner join"... mais commennt faire pour charger mes deux tables dans mon dataview?!

Merci d'avance,

4 réponses

cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
26 juil. 2005 à 18:07
Bonjour,



Pour tes tables liées, moi pas bien comprendre.

Enfin, je te donne une technique.

Tout d'abord, pas besoin de faire un DataView si tu fais pas de filtrage, tu peux utiliser directement la DataTable.

Ensuite pour lier deux tables ensembles, il existe la classe
DataRelation (propriété Relations du DataSet). Pour tester, réalises 2
requêtes successives sur 2 tables différentes mais liées par une clé
étrangère. Ensuite ajoute une relation entre table mère et table fille.
Affiche la table mère dans le datagrid et là, magie, il y a une petite
croix sur l'en tête de ligne pour afficher les enregistrements enfants
qui vont bien.



Autrement, si tu veux tout afficher d'un coup à partir de deux (ou
plus) DataTable, faut une recherche sur les champs calculés dans un
DataSet (En relisant ta question, c'est plutôt ca que tu veux faire).



Pour finir, si tu souhaite pas te prendre la tête, fais tout dans la requête et là, le JOIN sera le bien venu.


Chris


N'oubliez pas de cloturer votre post.
0
trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010
27 juil. 2005 à 09:42
J'ai utilisé une requète et ca marche plutôt bien.
Mais j'ai un petit problème avec ma requète ci dessous :


cnxClasse.affichageBDToDatagrid(
"SELECT [Nom couple] , [Abscisse] , [demi ouverture y] , [z] FROM [Géométrie], [Couple] where [Nom abs géometrie] =[Nom couple] AND [Abscisse] BETWEEN 2 AND 10 ORDER by Abscisse ",
"Géométrie", DataGridGeometrie)


J'aimerais que l'affichage par ordre soit dynamique. Sur deux textbox, présent dans mon formulaire je récupère deux valeurs de [Nom couple] (début et fin) . A chaque [Nom couple] correspond une abscisse...donc comment transformer ma portion de requète :
[Abscisse] BETWEEN 2 AND 10
en "[Abscisse] BETWEEN abscisse du début couple AND abscisse du fin couple "...sans passer par deux autres requètes stockant les variables debut abscisse et fin abscisse.

Cordialement,
0
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
27 juil. 2005 à 09:54
Comme ça, je vois que 2 requêtes. Peut être qu'avec un système de sous
requête ça marcherait mais c'est chaud de faire ça en pas longtemps
sans la DB pour tester (pour te dépanner à distance quoi). Enfin, la
requête pourrait te donne quelque chose du genre :



Select * from maTable Where Abscisse IN (SELECT AbscisseValue From
TableCoupleAbscisse where couple<val1 and couple > val2)

C'est comme ça pour l'exemple. Le IN est pas top. Pour des petites
tailles de résultat, ca ira. Si ta sous requête revoie trop
d'enregistrement tu va perdre en performance et la jointure sera sans
doute plus efficace.



En espérant que ça t'aiguille un peut dans tes recherches.



Chris

N'oubliez pas de cloturer votre post.
0
trexor Messages postés 134 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 17 octobre 2010
27 juil. 2005 à 10:09
Je vais rechercher un truc de ce genre pour trouver val1 et val2 (valeur d'abscisse correspondant a coupledebut et couple fin)
Merci de ta réponse
0