[vb.net] Datagrid - Dataset - Datatable

Signaler
Messages postés
70
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
17 janvier 2010
-
voger
Messages postés
47
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
27 décembre 2004
-
Bonjour,
J'arrive a afficher les donnees dans un datagrid avec se code :

command.Connection = conn
adapt.SelectCommand = command
adapt.Fill(dataSet, "MaTable")
dataTable = dataSet.Tables("MaTable")
DataGridEx1.AdjustColumnWidths(dataSet.Tables(0))
DataGridEx1.DataSource = dataTable

Cependant, si je remplis le datagrid avec une autre table de ma base, forcement sa efface le contenu de mon datagrid et sa affiche le nouveau resultat avec la nouvelle table.

Je voudrais afficher le resultat de ma requete a la suite dans mon datagrid, malgres les differentes tables.

Exemple :
- REQ1 = requete sur la base1.Table1
- REQ2 = requete sur la base2.Table1
- DataGrid = Affiche le resultat de la REQ1 et a la suite affiche le resultat de la REQ2

Note : les requetes ont les memes "SELECT", donc pas de probleme d'ajout de colonne ou autre...

Voila, comment je peut faire ? quelle est la meilleur methode ?
merci de votre aide.

8 réponses

Messages postés
70
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
17 janvier 2010
1
je n'ai pas reussi a utilise le "UNION" dans le Sql query analyser.

Donc finalement j'utilise une table temporaire et je fais des "INSERT INTO".

Merci pour votre reponse, elle m'a permit d'acceder a une autre solution ;-)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Messages postés
1356
Date d'inscription
samedi 8 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2006
6
labout

Il faut faire la requete avec union
requete sur la base1.Table1
Union
requete sur la base1.Table2

Si les champs des 2 tables n'ont pas le même non il faut leur donner le
même nom avec champ1 as truc, champ2 as machin etc

exemple
select Tb1titre as titre, tb1Auteur as auteur from table1
Union
select Tb2titre as titre, tb2Auteur as auteur from table2

@+
Messages postés
47
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
27 décembre 2004

coucou

j'ai rempli un dataset a partir d'une db

a present je veux bosser avec le dataset. par exemple afficher un datagrid a partir d'une requete faite sur le dataset

je pense que je dois créer une datatable en plus ds mon dataset et remplir le datagrid avec cette nouvelle datatable?

merci

David
Messages postés
1356
Date d'inscription
samedi 8 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2006
6
labout

Voici un exemple mais sans DataGridTableStyle

Dim dSet As DataSet
Dim strSql As String
dSet = New DataSet
Dim objImmoCM As CurrencyManager 'Gère une liste d'objets ici champs de la table Immo
Dim oConnect As OleDbConnection = New OleDbConnection
oConnect = New OleDbConnection
oConnect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\vb.net\Immo\Immo\Database\immo.mdb"

' interception d'une éventuelle erreur
Try
With oConnect
.Open()
End With
Catch dbError As OleDbException
Stop
End Try

oConnect.Close()
' requete SQL sur la table Immo
strSql = "SELECT * from immo order by noinv"

' interception d'une éventuelle erreur
Try
' ajoute la requete à l'oleadapter
With New OleDbDataAdapter(selectCommand:=New OleDbCommand(cmdText:=strSql, _
Connection:=oConnect))
' remplit le dataset
.Fill(DataSet:=dSet, srcTable:="immo")
' libère OleAAdapter de la memoire
.Dispose()
End With

Catch dbError As OleDbException
Stop
End Try

' alimente objImmoCM avec le dataset cela n'est pas nécessaire si nous
' n'avions pas de GridTableStyle
With dSet.Tables
objImmoCM = CType(Me.BindingContext(.Item(Name:="immo")), CurrencyManager)
End With

@+
Messages postés
47
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
27 décembre 2004

salut labout

j'ai regardé ce que tu as fait et également des infos sur msdn

j'ai une classe connexion où j'ai la fonction suivante qui alimente le dataset et le datatable

Shared Function remplidataset(ByVal nomdb As String, ByVal nomtable As String, ByVal strselect As String) As DataSet

Dim strconnection As String = "Provider=Microsoft.jet.oledb.4.0; Data Source=" & nomdb
cn = New OleDbConnection(strconnection)
cn.Open()

da = New OleDbDataAdapter(strselect, cn)
ds = New DataSet()
Dim autogen As New OleDbCommandBuilder(da)
da.Fill(ds, nomtable)
dt = ds.Tables(nomtable)
row = dt.NewRow()
cn.Close()

Return ds

End Function

ensuite dans une autre forme, je voudrai alimenter mon datagrid en fonvtion du numero client que je tape ds mon textbox1. cette recherche devrait se faire sur la colonne "numcli"

voici ce que j'ai fais

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

BindControl(dt)

End Sub

Private myCurrencyManager As CurrencyManager

Private Sub BindControl(ByVal myTable As DataTable)

TextBox1.DataBindings.Add("text", myTable, " numcli ")
myCurrencyManager = CType(Me.BindingContext(myTable), CurrencyManager)
myCurrencyManager.Position = 0
End Sub

j'ai créé les sub pour avancer de position

cependant, je pige pas un truc

comment faire pour afficher ds le datagrid les lignes du dataset qui corresponent à ce que je met ds le textbox1???

merci

David
Messages postés
1356
Date d'inscription
samedi 8 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2006
6
labout

Il faut passer par un dataview
Vas voir les 101 exemples pour vb.net chez Microsoft il y a
un exemple qui traite du filtre dans un datagrid

http://www.microsoft.com/downloads/details.aspx?familyid=87951cb9-5aeb-4f46-9bf0-2b3e3664be77&displaylang=en

@+
Messages postés
47
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
27 décembre 2004

je te remercie pour l'info, ca m' a aidé

a présent je me penche sur le passage de parametres du datagrid à une form, lorsque je clique sur un item du contextmenu associé au datagrid

David de Bxl
Messages postés
47
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
27 décembre 2004

j'ai donc affiché mes donnees ds un datagrid a l'aide du Defaultview.

a present j'ai relie un contextmenu au datagrid et je voudrais par exemple afficher sur une page les donnees d'une ligne(sur laquelle je clique) du datagrid.

j'ai vu sur msdn qu'il existe le selecteditem...mais j'ai pas saisi son fonctionnement.

j'espere que qqu un sait m'aider

thanks

David