Création clés primaires et étrangéres au niveau des tables du dataset

beet2che Messages postés 84 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 14 avril 2009 - 5 sept. 2008 à 10:46
beet2che Messages postés 84 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 14 avril 2009 - 5 sept. 2008 à 12:47
bonjour
mon objectif est de remplir mon dataset par deux tables et ajouter les clés primaires et étrangéres.voici le bout de code :


Dim



SqlCnx

As
SqlConnection =

New
SqlConnection( _


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


Try






Dim
queryFrn

As



String
=

"select * from DBMETROPTIM.dbo.NDS_METROPTIM_FRN"






Dim
cmdfrn

As



New
SqlCommand(queryFrn, SqlCnx)


Dim
adapterfrn

As



New
SqlDataAdapter()adapterfrn.SelectCommand = cmdfrn

adapterfrn.Fill(ds,


"FRN"
)


Dim
queryEqp

As



String
=

"select * from DBMETROPTIM.dbo.NDS_METROPTIM_EQP"






Dim
cmdEqp

As



New
SqlCommand(queryEqp, SqlCnx)


Dim
adaptereqp

As



New
SqlDataAdapteradaptereqp.SelectCommand = cmdEqp

adaptereqp.Fill(ds,


"EQP"
)


Dim
uniqueconstraintEqp

As



New
UniqueConstraint(ds.Tables(

"EQP"
).Columns(

"NSerie"
))


Dim
uniqueconstraintFrn

As



New
UniqueConstraint(ds.Tables(

"FRN"
).Columns(

"CdeFrn"
))ds.Tables(


"EQP"
).Constraints.Add(uniqueconstraintEqp)ds.Tables(


"FRN"
).Constraints.Add(uniqueconstraintFrn) 


Dim
parentColumn

As



New
DataColumn


Dim
childColumn

As



New
DataColumnparentColumn = ds.Tables(


"EQP"
).Columns(

"Nserie"
)childColumn = ds.Tables(


"FRN"
).Columns(

"Nserie"
)


Dim
fkeyconstraint

As



New
ForeignKeyConstraint(

"EquipementFKConstraint"
, parentColumn, childColumn)ds.Tables(


"EQP"
).Constraints.Add(fkeyconstraint)

je veux d'abord vérifier que mon code est bien correcte et que je suis sur le bon chemin car à chaque j'exécute j'otiens l'erreur suivante :

"SystemNullReferenceException: la référence d'objet n'est pas définie à une instance d'un objet.
 à System.Data.ForeignkeyConstraint.create(...) ..."

 
est ce que quelqu'un peut m'aider?
cordialement

2 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
5 sept. 2008 à 11:43
Bonjour,

Précise la nligne qui pose PB. Car ton pb est que un de tes objets n'est pas initialisé (Nothing).

http://nhen0039.chez-alice.fr/index.php
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:47
mon objectif est de naviguer entre les deux tables de ma dataset.
je pointe mon BindingNavigator sur EQPBindingSource (posséde comme datasource mon dataset et comme datamember la table parent) en plus je pointe un bindingsource sur la table fille (posséde comme datasource EQPBindingSource  et comme datamember la table fille)
en fait j'ai changé de code voici le nouveau code :

Dim



SqlCnx

As
SqlConnection =

New
SqlConnection( _


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


Try






Dim
queryUtil

As



String
=

"select * from DBMETROPTIM.dbo.NDS_METROPTIM_UTIL"






Dim
cmdutil

As



New
SqlCommand(queryUtil, SqlCnx)


Dim
adapterutil

As



New
SqlDataAdapter()adapterutil.SelectCommand = cmdutil

adapterutil.Fill(ds,


"UTIL"
)


Dim
queryEqp

As



String
=

"select * from DBMETROPTIM.dbo.NDS_METROPTIM_EQP"






Dim
cmdEqp

As



New
SqlCommand(queryEqp, SqlCnx)


Dim
adaptereqp

As



New
SqlDataAdapteradaptereqp.SelectCommand = cmdEqp

adaptereqp.Fill(ds,


"EQP"
)


Dim
keyseqp(2)

As
DataColumnkeyseqp(0) = ds.Tables(


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


"EQP"
).PrimaryKey = keyseqp


Dim
keysfrn(2)

As
DataColumnkeysfrn(0) = ds.Tables(


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


"UTIL"
).PrimaryKey = keysfrn


Dim
r

As



New
DataRelation(

"idnserie"
, ds.Tables(

"EQP"
).Columns(0), ds.Tables(

"UTIL"
).Columns(6))

Me.EQPBindingSource.DataSource = ds

Me.EQPBindingSource.DataMember = ds.Tables(
"EQP").TableName.ToStringUTILBindingSource.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 ExceptionMessageBox.Show(ex.ToString,

"erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)

End
Try

en exécutant ce code j'obtiens l'erreur suivante :
System.ArgumentException : la propriété DataMember "UTIL" est introuvable dans la Data Source

c'est au niveau de cette ligne que l'erreur se déclenche :
UTILBindingSource.DataMember = ds.Tables(
"UTIL").TableName.ToString

cordialement
0
Rejoignez-nous