Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

mise à jour de colonne autoincrement via un dataset

5 réponses
Avatar
Pierre
Bonjour,

Soit une table "contact", dont la colonne "contact_id" est la clé primaire,
définie en autoincrement,

je souhaite ajouter une ligne dans cette table via un dataset et son
dataadapter.
Mais la page retourne une erreur : La colonne 'contact_id' n'autorise pas
les valeurs null

Merci d'avance.

Pierre.

----------------------------------

Voici le code :

dim conn As SqlConnection
dim da As SqlDataAdapter
dim ds As DataSet
dim ta As DataTable
dim pk(1) As DataColumn
dim dr As DataRow

conn = New
SqlConnection(ConfigurationSettings.AppSettings("connectionString"))

sql = "SELECT contact_id, nom, prenom FROM contact"
da = New SqlDataAdapter(sql, conn)

ds = New DataSet
da.Fill(ds, "BDobjet")

da.SelectCommand.CommandText = sql
Dim cmdTableMgmt As SqlCommandBuilder = New SqlCommandBuilder(da)

ta = ds.Tables("contact")

pk(0) = ta.Columns("salle_id")
ta.PrimaryKey = pk

dr = ta.NewRow
dr("nom")= "toto"
dr("prenom")="tata"

dr.AcceptChanges()

ta.Rows.Add(dr) 'L'erreur se produit ici : La colonne 'contact_id'
n'autorise pas les valeurs null. Or la colonne 'contact_id' est en
autoincrement.

da.Update(ta)

5 réponses

Avatar
YJLAMOTTE
Bonjour,

Je peux me tromper mais je pense que ton DA ne prends pas en compte le fait
que tu sois en autoincrement.. il fonctionne en déconnecté. il gère donc tout
en mémoire. C'est au moment ou tu valideras les changements qu'il "oubliera"
ton ID pour laisser la base s'en charger.

Si je dis une bêtise dites le moi.

YJLAMOTTE

"Pierre" a écrit :

Bonjour,

Soit une table "contact", dont la colonne "contact_id" est la clé primaire,
définie en autoincrement,

je souhaite ajouter une ligne dans cette table via un dataset et son
dataadapter.
Mais la page retourne une erreur : La colonne 'contact_id' n'autorise pas
les valeurs null

Merci d'avance.

Pierre.

----------------------------------

Voici le code :

dim conn As SqlConnection
dim da As SqlDataAdapter
dim ds As DataSet
dim ta As DataTable
dim pk(1) As DataColumn
dim dr As DataRow

conn = New
SqlConnection(ConfigurationSettings.AppSettings("connectionString"))

sql = "SELECT contact_id, nom, prenom FROM contact"
da = New SqlDataAdapter(sql, conn)

ds = New DataSet
da.Fill(ds, "BDobjet")

da.SelectCommand.CommandText = sql
Dim cmdTableMgmt As SqlCommandBuilder = New SqlCommandBuilder(da)

ta = ds.Tables("contact")

pk(0) = ta.Columns("salle_id")
ta.PrimaryKey = pk

dr = ta.NewRow
dr("nom")= "toto"
dr("prenom")="tata"

dr.AcceptChanges()

ta.Rows.Add(dr) 'L'erreur se produit ici : La colonne 'contact_id'
n'autorise pas les valeurs null. Or la colonne 'contact_id' est en
autoincrement.

da.Update(ta)





Avatar
alahlou
bonjour
regardes ce lien, ils expliquent comment ca marche
http://www.akadia.com/services/dotnet_autoincrement.html

Cordialement
Abdelkrim LAHLOU

"Pierre" wrote:

Bonjour,

Soit une table "contact", dont la colonne "contact_id" est la clé primaire,
définie en autoincrement,

je souhaite ajouter une ligne dans cette table via un dataset et son
dataadapter.
Mais la page retourne une erreur : La colonne 'contact_id' n'autorise pas
les valeurs null

Merci d'avance.

Pierre.

----------------------------------

Voici le code :

dim conn As SqlConnection
dim da As SqlDataAdapter
dim ds As DataSet
dim ta As DataTable
dim pk(1) As DataColumn
dim dr As DataRow

conn = New
SqlConnection(ConfigurationSettings.AppSettings("connectionString"))

sql = "SELECT contact_id, nom, prenom FROM contact"
da = New SqlDataAdapter(sql, conn)

ds = New DataSet
da.Fill(ds, "BDobjet")

da.SelectCommand.CommandText = sql
Dim cmdTableMgmt As SqlCommandBuilder = New SqlCommandBuilder(da)

ta = ds.Tables("contact")

pk(0) = ta.Columns("salle_id")
ta.PrimaryKey = pk

dr = ta.NewRow
dr("nom")= "toto"
dr("prenom")="tata"

dr.AcceptChanges()

ta.Rows.Add(dr) 'L'erreur se produit ici : La colonne 'contact_id'
n'autorise pas les valeurs null. Or la colonne 'contact_id' est en
autoincrement.

da.Update(ta)





Avatar
YJLAMOTTE
Ca me rassure, j'étais bien sur la bonne voie.

bel article.

YJLAMOTTE

"alahlou" a écrit :

bonjour
regardes ce lien, ils expliquent comment ca marche
http://www.akadia.com/services/dotnet_autoincrement.html

Cordialement
Abdelkrim LAHLOU

"Pierre" wrote:

> Bonjour,
>
> Soit une table "contact", dont la colonne "contact_id" est la clé primaire,
> définie en autoincrement,
>
> je souhaite ajouter une ligne dans cette table via un dataset et son
> dataadapter.
> Mais la page retourne une erreur : La colonne 'contact_id' n'autorise pas
> les valeurs null
>
> Merci d'avance.
>
> Pierre.
>
> ----------------------------------
>
> Voici le code :
>
> dim conn As SqlConnection
> dim da As SqlDataAdapter
> dim ds As DataSet
> dim ta As DataTable
> dim pk(1) As DataColumn
> dim dr As DataRow
>
> conn = New
> SqlConnection(ConfigurationSettings.AppSettings("connectionString"))
>
> sql = "SELECT contact_id, nom, prenom FROM contact"
> da = New SqlDataAdapter(sql, conn)
>
> ds = New DataSet
> da.Fill(ds, "BDobjet")
>
> da.SelectCommand.CommandText = sql
> Dim cmdTableMgmt As SqlCommandBuilder = New SqlCommandBuilder(da)
>
> ta = ds.Tables("contact")
>
> pk(0) = ta.Columns("salle_id")
> ta.PrimaryKey = pk
>
> dr = ta.NewRow
> dr("nom")= "toto"
> dr("prenom")="tata"
>
> dr.AcceptChanges()
>
> ta.Rows.Add(dr) 'L'erreur se produit ici : La colonne 'contact_id'
> n'autorise pas les valeurs null. Or la colonne 'contact_id' est en
> autoincrement.
>
> da.Update(ta)
>
>
>


Avatar
Pierre
Salut,

Effectivement, j'ai trouvé la solution entre temps : j'affecte 0 à la
colonne en question et l'update du dataset vers la bd se passe bien.

Merci.

Pierre.

"YJLAMOTTE" a écrit dans le message de
news:
Bonjour,

Je peux me tromper mais je pense que ton DA ne prends pas en compte le


fait
que tu sois en autoincrement.. il fonctionne en déconnecté. il gère donc


tout
en mémoire. C'est au moment ou tu valideras les changements qu'il


"oubliera"
ton ID pour laisser la base s'en charger.

Si je dis une bêtise dites le moi.

YJLAMOTTE

"Pierre" a écrit :

> Bonjour,
>
> Soit une table "contact", dont la colonne "contact_id" est la clé


primaire,
> définie en autoincrement,
>
> je souhaite ajouter une ligne dans cette table via un dataset et son
> dataadapter.
> Mais la page retourne une erreur : La colonne 'contact_id' n'autorise


pas
> les valeurs null
>
> Merci d'avance.
>
> Pierre.
>
> ----------------------------------
>
> Voici le code :
>
> dim conn As SqlConnection
> dim da As SqlDataAdapter
> dim ds As DataSet
> dim ta As DataTable
> dim pk(1) As DataColumn
> dim dr As DataRow
>
> conn = New
> SqlConnection(ConfigurationSettings.AppSettings("connectionString"))
>
> sql = "SELECT contact_id, nom, prenom FROM contact"
> da = New SqlDataAdapter(sql, conn)
>
> ds = New DataSet
> da.Fill(ds, "BDobjet")
>
> da.SelectCommand.CommandText = sql
> Dim cmdTableMgmt As SqlCommandBuilder = New SqlCommandBuilder(da)
>
> ta = ds.Tables("contact")
>
> pk(0) = ta.Columns("salle_id")
> ta.PrimaryKey = pk
>
> dr = ta.NewRow
> dr("nom")= "toto"
> dr("prenom")="tata"
>
> dr.AcceptChanges()
>
> ta.Rows.Add(dr) 'L'erreur se produit ici : La colonne 'contact_id'
> n'autorise pas les valeurs null. Or la colonne 'contact_id' est en
> autoincrement.
>
> da.Update(ta)
>
>
>


Avatar
Pierre
Merci pour ces infos.

Bonne continuation.

Pierre.

"alahlou" a écrit dans le message de
news:
bonjour
regardes ce lien, ils expliquent comment ca marche
http://www.akadia.com/services/dotnet_autoincrement.html

Cordialement
Abdelkrim LAHLOU

"Pierre" wrote:

> Bonjour,
>
> Soit une table "contact", dont la colonne "contact_id" est la clé


primaire,
> définie en autoincrement,
>
> je souhaite ajouter une ligne dans cette table via un dataset et son
> dataadapter.
> Mais la page retourne une erreur : La colonne 'contact_id' n'autorise


pas
> les valeurs null
>
> Merci d'avance.
>
> Pierre.
>
> ----------------------------------
>
> Voici le code :
>
> dim conn As SqlConnection
> dim da As SqlDataAdapter
> dim ds As DataSet
> dim ta As DataTable
> dim pk(1) As DataColumn
> dim dr As DataRow
>
> conn = New
> SqlConnection(ConfigurationSettings.AppSettings("connectionString"))
>
> sql = "SELECT contact_id, nom, prenom FROM contact"
> da = New SqlDataAdapter(sql, conn)
>
> ds = New DataSet
> da.Fill(ds, "BDobjet")
>
> da.SelectCommand.CommandText = sql
> Dim cmdTableMgmt As SqlCommandBuilder = New SqlCommandBuilder(da)
>
> ta = ds.Tables("contact")
>
> pk(0) = ta.Columns("salle_id")
> ta.PrimaryKey = pk
>
> dr = ta.NewRow
> dr("nom")= "toto"
> dr("prenom")="tata"
>
> dr.AcceptChanges()
>
> ta.Rows.Add(dr) 'L'erreur se produit ici : La colonne 'contact_id'
> n'autorise pas les valeurs null. Or la colonne 'contact_id' est en
> autoincrement.
>
> da.Update(ta)
>
>
>