Binding navigator

beet2che Messages postés 84 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 14 avril 2009 - 1 sept. 2008 à 14:31
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 9 sept. 2008 à 11:09
bonjour
je commence par décrire la situation:
j'ai crée dans ma form des textbox certains liés à une table table1 et d'autres à une table table2 .
le but est manipuler les données des deux tables via un bindingnavigator.
 j'ai pas compris comment je précéde pour réaliser celà car un moment je bloque devant le fait que bindingnavigator.datamembet=nom datatable
est ce que l'astuce sera au niveau de la requête?
cordialement 

5 réponses

youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
2 sept. 2008 à 16:35
Salut,

Première question: est-ce que tes tables sont liées?
Ton bindingnavigator pointe vers un bindingsource. si tes tables sont liées pointe ta table fille sur le bindingsource du parent et tu pointes ton bindingsource de ton navigator vers le bindingsource du parent. comme cela quand tu avances avec ton navigator il avancera le parent qui affichera les data correspondantes dans le child.
Concernant le datamember d'un binding source voila un exemple
        Dim tst As New BindingSource
        tst.DataMember = "table"
        tst.DataSource = SampleDataSet
sinon tu peux faire tst.datasource =SampleDataSet.tables("table")
si j'ai pas été clair, dis le moi.
@+
youpi :)
0
beet2che Messages postés 84 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 14 avril 2009
5 sept. 2008 à 12:26
j'ai ajouté deux tables à ma dataset ds puis j'ai lié les deux tables.
mon bindingnavigator pointe sur  EQPBindingSource (le pointage dans la fonction sub new() )




UTILBindingSource pointe sur EQOBindingSource


Dim
SqlCnx As SqlConnection = New SqlConnection( _




"Server=(local)\SQLEXPRESS;Initial Catalog=master;Integrated Security=SSPI")




SqlCnx.Open()





Try






Dim queryUtil AsString = "select * from DBMETROPTIM.dbo.NDS_METROPTIM_UTIL"





Dim cmdutil AsNew SqlCommand(queryUtil, SqlCnx)





Dim adapteruitl AsNew SqlDataAdapter()




adapteruitl.SelectCommand = cmdutil




adapterutil.Fill(ds, "UTIL")





Dim queryEqp AsString = "select * from DBMETROPTIM.dbo.NDS_METROPTIM_EQP"





Dim cmdEqp AsNew SqlCommand(queryEqp, SqlCnx)





Dim adaptereqp AsNew SqlDataAdapter




adaptereqp.SelectCommand = cmdEqp




adaptereqp.Fill(ds, "EQP")





Dim keyseqp(1) As DataColumn




keyseqp(0) = ds.Tables("EQP").Columns(0)




ds.Tables("EQP").PrimaryKey = keyseqp





Dim keysfrn(1) As DataColumn




keysfrn(0) = ds.Tables("UTIL").Columns(0)




ds.Tables("UTIL").PrimaryKey = keysfrn





Dim r AsNew DataRelation("idnserie", ds.Tables("EQP").Columns(0), ds.Tables("UTIL").Columns(6))







Me

.EQPBindingSource.DataSource = ds





Me.EQPBindingSource.DataMember = ds.Tables("EQP").TableName.ToString




UTILBindingSource.DataSource = EQPBindingSource




UTILBindingSource.DataMember = ds.Tables("UTIL").TableName.ToString





Me.TxtBoxNserie.DataBindings.Add(New Binding("Text", EQPBindingSource, ds.Tables("EQP").Columns(0).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxMarque.DataBindings.Add(New Binding("Text", EQPBindingSource, ds.Tables("EQP").Columns(1).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxModele.DataBindings.Add(New Binding("Text", EQPBindingSource, ds.Tables("EQP").Columns(2).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxDesignation.DataBindings.Add(New Binding("Text", EQPBindingSource, ds.Tables("EQP").Columns(3).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxvalminfct.DataBindings.Add(New Binding("Text", EQPBindingSource, ds.Tables("EQP").Columns(4).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxvalmaxfct.DataBindings.Add(New Binding("Text", EQPBindingSource, ds.Tables("EQP").Columns(5).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxAcqui.DataBindings.Add(New Binding("Text", EQPBindingSource, ds.Tables("EQP").Columns(6).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxMES.DataBindings.Add(New Binding("Text", EQPBindingSource, ds.Tables("EQP").Columns(7).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxfrn.DataBindings.Add(New Binding("Text", EQPBindingSource, ds.Tables("EQP").Columns(8).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxvalminutil.DataBindings.Add(New Binding("Text", UTILBindingSource, ds.Tables("UTIL").Columns(1).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))





Me.TxtBoxvalmmaxutil.DataBindings.Add(New Binding("text", UTILBindingSource, ds.Tables("UTIL").Columns(2).ToString, True, DataSourceUpdateMode.OnValidation, System.DBNull.Value))






Catch ex As Exception




MessageBox.Show(ex.ToString, "erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)





End
Try

en exécutant ce bout de code j'ai l'erreur suivante :
System.ArgumentException : la propriété DataMember "UTIL" est introuvable dans la datasource

cordialement
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
8 sept. 2008 à 10:31
Salut,

tu as regardé pas à pas qu'elle ligne ne fonctionne pas. est-ce qu'il plante sur "adapterutil.Fill(ds, "UTIL")" ou
"UTILBindingSource.DataMember = ds.Tables("UTIL").TableName.ToString
"
je pense que ton probleme vient de datamember.

essaye avec UTILBindingSource
.datasource, enlève ta ligne "UTILBindingSource.DataMember = ds.Tables("UTIL").TableName.ToString"

recommence en mode debug pas a pas. et regarde ou cela plante. tiens moi au courrant, le probleme suivant sera peut etre un probleme de lien.

@+
youpi :)
0
beet2che Messages postés 84 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 14 avril 2009
8 sept. 2008 à 15:09
en fait c'est au niveau du DataMember que ça ne fonctionne pas car j'ai vérifié ma dataset elle contient bien la table "UTIL" .


je veux en fait me rassurer que j'ai bien compris votre proposition:


je pointe mon BindingNavigator sur mon EQPBindingSource qui est définit comme suit :




Me

.EQPBindingSource.DataSource = ds






Me.EQPBindingSource.DataMember = ds.Tables("EQP").TableName.ToString






puis je pointe la table fille qui est dans ce cas "UTIL"  sur EQPBindingsource comme suit :




UTILBindingSource.DataSource = EQPBindingSource





UTILBindingSource.DataMember = ds.Tables("UTIL").TableName.ToString






est ce que c'est comme ça que je dois précéder ??
peut être t-il que les tables ne sont pas vraiment liées ? je ne sais pas ?
il y a un truc qui cloche en fait ?
 à propos j'ai essayé d'ignoré l'instruction suivante :
Me.EQPBindingSource.DataMember = ds.Tables("EQP").TableName.ToString

mais en vain c'est le même message d'erreur qui s'affiche?
merci pour votre gentillesse
cordialement


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
9 sept. 2008 à 11:09
Salut,
Je pense que oui c'est ce que j'essayais de te dire dans l'ancien post.
Me
.EQPBindingSource.DataSource = ds

Me.EQPBindingSource.DataMember = ds.Tables("EQP").TableName.ToString

UTILBindingSource.DataSource = EQPBindingSource

devrait suffire.

je vais te montrer un exemple simple:
table:
Master: fields: tabledid (clef), text
child:    fields:  detailid(clef), detail, masterid(foreign key)

le lien est entre tabledid (1)->(infini) masterid (avec integrité referentielle update - delete)

VB.net
le lien entre master et child se nomme "Masterchild"
2 datagridviews (master et child)
        Me.ChildTableAdapter.Fill(Me.SampleDataSet.child)
        Me.MasterTableAdapter.Fill(Me.SampleDataSet.Master)

dans le designer:
        Me.MasterDataGridView.DataSource = Me.MasterBindingSource
        Me.ChildDataGridView.DataSource = Me.MasterchildBindingSource
        '
        'MasterchildBindingSource
        '
        Me.MasterchildBindingSource.DataMember = "Masterchild"
        Me.MasterchildBindingSource.DataSource = Me.MasterBindingSource

voici un exemple si
Si tu as visio ou un logiciel d'exportation de schema de base de donnée le top c'est que tu m'envois par mail la source +schema base.

@+
youpi :)
0
Rejoignez-nous