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

mettre un champ à NULL dans une table

6 réponses
Avatar
Pierre
Bonjour,

Deuxième envoi...
je ne trouve pas de solution.

je souhaite mettre à jour une ligne dans une table et cette ligne contient
une reference externe vers une autre table dans un champ de type int.
C'est ce champ que je ne parviens pas à mettre à NULL afin de supprimer la
référence.
Il est possible d'affecter une valeur à ce champ, mais une fois affectée, on
ne peut plus revenir à NULL...

Je passe comme expliqué ci-dessous par un data adapter, un dataset et une
datarow.

Soit une data row d'une table dans un data adapter, je ne parviens pas à
mettre à null (=dbnull) un champ de cette ligne, le champ "ville".
La lecture à partir de la base de données d'un champ null ne provoque pas
d'erreur et est bien remontée dans l'interface. De plus, la mise à jour du
champ à une valeur non null se fait correctement.
Lorsque dans l'interface, on ne choisit rien pour le champ "ville", la
valeur du champ "ville" de la data row est forcée à system.dbnull.value, ce
qui se fait correctement aussi. Mais lors de l'enregistrement du data
adapter (da.update), la modification n'est pas retranscrite dans la base de
données et aucune erreur n'est signalée concernant la mise à jour.

La commande update du data adapter a été mise à jour, les changements dans
la data row ont été acceptés.

Donc, là, je sèche : pas de message d'erreur, pas d'erreur donc, et pas de
résultat non plus...

Merci d'avance.

Cordialement.

Pierre.

6 réponses

Avatar
Pierre Lagarde [MS]
Bonjour Pierre,

Tu utilises quel méthode de mise à jour dans la base.
Les requettes ont été généré par le wizard du dataAdapteur ?
J'ai fait le test sur un exemple simple en utilisant le Wizard
Mon code est :
sqlDataAdapter1.Fill(dataSet11);
dataSet11.utilisateurs[0][4] = DBNull.Value;
sqlDataAdapter1.Update(dataSet11);

Ca marche très bien j'ai bien NULL en base.

--
Pierre Lagarde
Microsoft France

Pierre wrote:
Bonjour,

Deuxième envoi...
je ne trouve pas de solution.

je souhaite mettre à jour une ligne dans une table et cette ligne
contient une reference externe vers une autre table dans un champ de
type int.
C'est ce champ que je ne parviens pas à mettre à NULL afin de
supprimer la référence.
Il est possible d'affecter une valeur à ce champ, mais une fois
affectée, on ne peut plus revenir à NULL...

Je passe comme expliqué ci-dessous par un data adapter, un dataset et
une datarow.

Soit une data row d'une table dans un data adapter, je ne parviens
pas à mettre à null (Ûnull) un champ de cette ligne, le champ
"ville".
La lecture à partir de la base de données d'un champ null ne provoque
pas d'erreur et est bien remontée dans l'interface. De plus, la mise
à jour du champ à une valeur non null se fait correctement.
Lorsque dans l'interface, on ne choisit rien pour le champ "ville", la
valeur du champ "ville" de la data row est forcée à
system.dbnull.value, ce qui se fait correctement aussi. Mais lors de
l'enregistrement du data adapter (da.update), la modification n'est
pas retranscrite dans la base de données et aucune erreur n'est
signalée concernant la mise à jour.

La commande update du data adapter a été mise à jour, les changements
dans la data row ont été acceptés.

Donc, là, je sèche : pas de message d'erreur, pas d'erreur donc, et
pas de résultat non plus...

Merci d'avance.

Cordialement.

Pierre.


Avatar
Pierre
Bonjour Pierre,

Il s'agit de la mise à jour d'un dataadapter vers la base de données.
C'est assez bizarre : le code fonctionne bien pour la création de la ligne
et pour la mise à jour dans certains cas.
Le problème survient pour la mise à jour d'une ligne dont on veut annuler un
champ qui présente une référence, ie le rendre NULL.
J'ai en effet une table ADRESSE avec un champ PAYS_ID, int non obligatoire
qui pointe sur une référence externe dans une autre table, une relation
existe entre les deux tables.
Lors de la création, pas de souci, ça marche dans les deux cas : avec la
valeur pour PAYS_ID ou sans valeur. La ligne est créée, avec la valeur ou à
NULL respectivement.
Ensuite, si j'édite cette ligne et que cette fois je veux annuler la valeur,
avoir NULL dans PAYS_ID cela ne se fait pas. Aucune exception ne survient,
pas d'erreur, mais la mise à jour ne se fait pas....
J'ai regardé le SQL de la commande update du dataapter et elle semble
correct.
Je me demande s'il n'y aurait pas un flag à changer quelque part...

Voici le code :

sql = "select * from baie"
da = New SqlDataAdapter(sql, conn)
ds = New DataSet
da.Fill(ds, "MyTable")
da.SelectCommand.CommandText = sql
Dim sqlBuilder As SqlCommandBuilder = New SqlCommandBuilder(da)
da.InsertCommand = sqlBuilder.GetInsertCommand()
da.DeleteCommand = sqlBuilder.GetDeleteCommand()
da.UpdateCommand = sqlBuilder.GetUpdateCommand()

ta = ds.Tables("MyTable")

pka(0) = ta.Columns("baie_id") 'en fait cela est dynamique, et la pk est
indiquée dans une variable, de même que le sql
ta.PrimaryKey = pka

dim dr As DataRow

dr = ta.Rows.Find(1) 'récupère la baie d'id 1

dr("salle_id") = system.dbnull.value 'annule la valeur

da.update(ds) 'met à jour




La mise à jour ne se fait pas.
Voici une trace du programme en cours d'exécution présentant les valeurs de
la ligne à enregistrer, la command sql update avant l'appel avec ses
paramètres et après l'appel :


1 baie_id 0,049384 0,000034
b1 code_baie 0,049412 0,000027
70 largeur 0,049437 0,000025
100 profondeur 0,049460 0,000023
210 hauteur 0,049487 0,000027
dbnull type_id (valeur qui vient d'être annulée) 0,049514 0,000027
dbnull capacite_u 0,049536 0,000022
dbnull deplacabilite 0,049558 0,000022
dbnull projet_id 0,049580 0,000022
dbnull p_electrique 0,049602 0,000022
dbnull p_thermique 0,049623 0,000020
command text avant l'appel à da.update(ds) UPDATE baie SET code_baie @p1 , largeur = @p2 , profondeur = @p3 , hauteur = @p4 , type_id = @p5 ,
capacite_U = @p6 , deplacabilite = @p7 , projet_id = @p8 , p_electrique @p9 , p_thermique = @p10 WHERE ( (baie_id = @p11) AND ((@p12 = 1 AND
code_baie IS NULL) OR (code_baie = @p13)) AND ((@p14 = 1 AND largeur IS
NULL) OR (largeur = @p15)) AND ((@p16 = 1 AND profondeur IS NULL) OR
(profondeur = @p17)) AND ((@p18 = 1 AND hauteur IS NULL) OR (hauteur @p19)) AND ((@p20 = 1 AND type_id IS NULL) OR (type_id = @p21)) AND ((@p22 1 AND capacite_U IS NULL) OR (capacite_U = @p23)) AND ((@p24 = 1 AND
deplacabilite IS NULL) OR (deplacabilite = @p25)) AND ((@p26 = 1 AND
projet_id IS NULL) OR (projet_id = @p27)) AND ((@p28 = 1 AND p_electrique IS
NULL) OR (p_electrique = @p29)) AND ((@p30 = 1 AND p_thermique IS NULL) OR
(p_thermique = @p31)) ) 0,049687 0,000064
@p1 - False 0,049719 0,000033
@p2 - False 0,049744 0,000025
@p3 - False 0,049768 0,000024
@p4 - False 0,049793 0,000024
@p5 - True 0,049818 0,000025
@p6 - True 0,049849 0,000031
@p7 - True 0,049871 0,000023
@p8 - True 0,049894 0,000022
@p9 - True 0,049917 0,000023
@p10 - True 0,049942 0,000025
@p11 - False 0,049966 0,000024
@p12 1 - False 0,049992 0,000026
@p13 - False 0,050018 0,000025
@p14 1 - False 0,050042 0,000025
@p15 - False 0,050066 0,000024
@p16 1 - False 0,050092 0,000025
@p17 - False 0,050118 0,000027
@p18 1 - False 0,050148 0,000030
@p19 - False 0,050174 0,000026
@p20 1 - True 0,050200 0,000027
@p21 - True 0,050226 0,000026
@p22 1 - True 0,050251 0,000024
@p23 - True 0,050274 0,000023
@p24 1 - True 0,050310 0,000037
@p25 - True 0,050335 0,000025
@p26 1 - True 0,050359 0,000025
@p27 - True 0,050385 0,000025
@p28 1 - True 0,050410 0,000025
@p29 - True 0,050434 0,000024
@p30 1 - True 0,050463 0,000029
@p31 - True 0,050494 0,000031
command text après l'appel à da.update(ds) UPDATE baie SET WHERE (
(baie_id = @p1) AND ((@p2 = 1 AND code_baie IS NULL) OR (code_baie = @p3))
AND ((@p4 = 1 AND largeur IS NULL) OR (largeur = @p5)) AND ((@p6 = 1 AND
profondeur IS NULL) OR (profondeur = @p7)) AND ((@p8 = 1 AND hauteur IS
NULL) OR (hauteur = @p9)) AND ((@p10 = 1 AND type_id IS NULL) OR (type_id @p11)) AND ((@p12 = 1 AND capacite_U IS NULL) OR (capacite_U = @p13)) AND
((@p14 = 1 AND deplacabilite IS NULL) OR (deplacabilite = @p15)) AND ((@p16
= 1 AND projet_id IS NULL) OR (projet_id = @p17)) AND ((@p18 = 1 AND
p_electrique IS NULL) OR (p_electrique = @p19)) AND ((@p20 = 1 AND
p_thermique IS NULL) OR (p_thermique = @p21)) ) 0,050790 0,000296
@p1 6 - False 0,050822 0,000032
@p2 0 - False 0,050847 0,000025
@p3 b1 - False 0,050870 0,000023
@p4 0 - False 0,050894 0,000024
@p5 70 - False 0,050927 0,000033
@p6 0 - False 0,050955 0,000028
@p7 100 - False 0,050981 0,000026
@p8 0 - False 0,051006 0,000025
@p9 210 - False 0,051031 0,000025
@p10 0 - True 0,051056 0,000025
@p11 4 - True 0,051082 0,000026
@p12 1 - True 0,051107 0,000025
@p13 - True 0,051131 0,000023
@p14 1 - True 0,051160 0,000030
@p15 - True 0,051183 0,000023
@p16 1 - True 0,051212 0,000029
@p17 - True 0,051238 0,000025
@p18 1 - True 0,051286 0,000049
@p19 - True 0,051310 0,000024
@p20 1 - True 0,051334 0,000024
@p21 - True




Merci d'avance.

A plus.

Pierre.



"Pierre Lagarde [MS]" a écrit dans le message de
news:
Bonjour Pierre,

Tu utilises quel méthode de mise à jour dans la base.
Les requettes ont été généré par le wizard du dataAdapteur ?
J'ai fait le test sur un exemple simple en utilisant le Wizard
Mon code est :
sqlDataAdapter1.Fill(dataSet11);
dataSet11.utilisateurs[0][4] = DBNull.Value;
sqlDataAdapter1.Update(dataSet11);

Ca marche très bien j'ai bien NULL en base.

--
Pierre Lagarde
Microsoft France

Pierre wrote:
> Bonjour,
>
> Deuxième envoi...
> je ne trouve pas de solution.
>
> je souhaite mettre à jour une ligne dans une table et cette ligne
> contient une reference externe vers une autre table dans un champ de
> type int.
> C'est ce champ que je ne parviens pas à mettre à NULL afin de
> supprimer la référence.
> Il est possible d'affecter une valeur à ce champ, mais une fois
> affectée, on ne peut plus revenir à NULL...
>
> Je passe comme expliqué ci-dessous par un data adapter, un dataset et
> une datarow.
>
> Soit une data row d'une table dans un data adapter, je ne parviens
> pas à mettre à null (Ûnull) un champ de cette ligne, le champ
> "ville".
> La lecture à partir de la base de données d'un champ null ne provoque
> pas d'erreur et est bien remontée dans l'interface. De plus, la mise
> à jour du champ à une valeur non null se fait correctement.
> Lorsque dans l'interface, on ne choisit rien pour le champ "ville", la
> valeur du champ "ville" de la data row est forcée à
> system.dbnull.value, ce qui se fait correctement aussi. Mais lors de
> l'enregistrement du data adapter (da.update), la modification n'est
> pas retranscrite dans la base de données et aucune erreur n'est
> signalée concernant la mise à jour.
>
> La commande update du data adapter a été mise à jour, les changements
> dans la data row ont été acceptés.
>
> Donc, là, je sèche : pas de message d'erreur, pas d'erreur donc, et
> pas de résultat non plus...
>
> Merci d'avance.
>
> Cordialement.
>
> Pierre.




Avatar
Pierre
Pierre,

J'ai quelques précisions complémentaires :

si je change le type du champ, de int vers varchar, la procédure fonctionne.

Il semble donc que pour un champ de type int, la valeur dbnull pose un
problème.

A plus.

Pierre.

"Pierre Lagarde [MS]" a écrit dans le message de
news:
Bonjour Pierre,

Tu utilises quel méthode de mise à jour dans la base.
Les requettes ont été généré par le wizard du dataAdapteur ?
J'ai fait le test sur un exemple simple en utilisant le Wizard
Mon code est :
sqlDataAdapter1.Fill(dataSet11);
dataSet11.utilisateurs[0][4] = DBNull.Value;
sqlDataAdapter1.Update(dataSet11);

Ca marche très bien j'ai bien NULL en base.

--
Pierre Lagarde
Microsoft France

Pierre wrote:
> Bonjour,
>
> Deuxième envoi...
> je ne trouve pas de solution.
>
> je souhaite mettre à jour une ligne dans une table et cette ligne
> contient une reference externe vers une autre table dans un champ de
> type int.
> C'est ce champ que je ne parviens pas à mettre à NULL afin de
> supprimer la référence.
> Il est possible d'affecter une valeur à ce champ, mais une fois
> affectée, on ne peut plus revenir à NULL...
>
> Je passe comme expliqué ci-dessous par un data adapter, un dataset et
> une datarow.
>
> Soit une data row d'une table dans un data adapter, je ne parviens
> pas à mettre à null (Ûnull) un champ de cette ligne, le champ
> "ville".
> La lecture à partir de la base de données d'un champ null ne provoque
> pas d'erreur et est bien remontée dans l'interface. De plus, la mise
> à jour du champ à une valeur non null se fait correctement.
> Lorsque dans l'interface, on ne choisit rien pour le champ "ville", la
> valeur du champ "ville" de la data row est forcée à
> system.dbnull.value, ce qui se fait correctement aussi. Mais lors de
> l'enregistrement du data adapter (da.update), la modification n'est
> pas retranscrite dans la base de données et aucune erreur n'est
> signalée concernant la mise à jour.
>
> La commande update du data adapter a été mise à jour, les changements
> dans la data row ont été acceptés.
>
> Donc, là, je sèche : pas de message d'erreur, pas d'erreur donc, et
> pas de résultat non plus...
>
> Merci d'avance.
>
> Cordialement.
>
> Pierre.




Avatar
Pierre
Salut Pierre,

J'ai fini par trouver :

l'affectation de la valeur au champ de la ligne se faisait via ce code :

try
dr(field)=val
catch
dr(field)Ûnull.value
end try

et il semblerait que lors du déclenchement de l'exception, en faisant par
exemple une affectation de la chaine vide à une colonne type int, l'erreur
provoquée perturbe la data row et malgré l'affectation à dbnull, celle ci
restait en erreur.
Le seul moyen que j'ai trouvé pour "tester" au préalable l'affectation est
de faire la même affectation mais sur une dummy row : dr0

try
dr0(field)=val
dr(field)=val
catch
dr(field)Ûnull.value
end try


et maintenant ça marche....

Verdict ?


A plus.

Pierre.


"Pierre Lagarde [MS]" a écrit dans le message de
news:
Bonjour Pierre,

Tu utilises quel méthode de mise à jour dans la base.
Les requettes ont été généré par le wizard du dataAdapteur ?
J'ai fait le test sur un exemple simple en utilisant le Wizard
Mon code est :
sqlDataAdapter1.Fill(dataSet11);
dataSet11.utilisateurs[0][4] = DBNull.Value;
sqlDataAdapter1.Update(dataSet11);

Ca marche très bien j'ai bien NULL en base.

--
Pierre Lagarde
Microsoft France

Pierre wrote:
> Bonjour,
>
> Deuxième envoi...
> je ne trouve pas de solution.
>
> je souhaite mettre à jour une ligne dans une table et cette ligne
> contient une reference externe vers une autre table dans un champ de
> type int.
> C'est ce champ que je ne parviens pas à mettre à NULL afin de
> supprimer la référence.
> Il est possible d'affecter une valeur à ce champ, mais une fois
> affectée, on ne peut plus revenir à NULL...
>
> Je passe comme expliqué ci-dessous par un data adapter, un dataset et
> une datarow.
>
> Soit une data row d'une table dans un data adapter, je ne parviens
> pas à mettre à null (Ûnull) un champ de cette ligne, le champ
> "ville".
> La lecture à partir de la base de données d'un champ null ne provoque
> pas d'erreur et est bien remontée dans l'interface. De plus, la mise
> à jour du champ à une valeur non null se fait correctement.
> Lorsque dans l'interface, on ne choisit rien pour le champ "ville", la
> valeur du champ "ville" de la data row est forcée à
> system.dbnull.value, ce qui se fait correctement aussi. Mais lors de
> l'enregistrement du data adapter (da.update), la modification n'est
> pas retranscrite dans la base de données et aucune erreur n'est
> signalée concernant la mise à jour.
>
> La commande update du data adapter a été mise à jour, les changements
> dans la data row ont été acceptés.
>
> Donc, là, je sèche : pas de message d'erreur, pas d'erreur donc, et
> pas de résultat non plus...
>
> Merci d'avance.
>
> Cordialement.
>
> Pierre.




Avatar
Paul Bacelar
Conseil:

"Ne jamais déclencher d'exception lors du parcours normal d'exécution à
cause des performances."

Je pense qu'un test serait nettement plus judicieux.
--
Paul Bacelar


"Pierre" wrote in message
news:#
Salut Pierre,

J'ai fini par trouver :

l'affectation de la valeur au champ de la ligne se faisait via ce code :

try
dr(field)=val
catch
dr(field)Ûnull.value
end try

et il semblerait que lors du déclenchement de l'exception, en faisant par
exemple une affectation de la chaine vide à une colonne type int, l'erreur
provoquée perturbe la data row et malgré l'affectation à dbnull, celle ci
restait en erreur.
Le seul moyen que j'ai trouvé pour "tester" au préalable l'affectation est
de faire la même affectation mais sur une dummy row : dr0

try
dr0(field)=val
dr(field)=val
catch
dr(field)Ûnull.value
end try


et maintenant ça marche....

Verdict ?


A plus.

Pierre.


"Pierre Lagarde [MS]" a écrit dans le message de
news:
> Bonjour Pierre,
>
> Tu utilises quel méthode de mise à jour dans la base.
> Les requettes ont été généré par le wizard du dataAdapteur ?
> J'ai fait le test sur un exemple simple en utilisant le Wizard
> Mon code est :
> sqlDataAdapter1.Fill(dataSet11);
> dataSet11.utilisateurs[0][4] = DBNull.Value;
> sqlDataAdapter1.Update(dataSet11);
>
> Ca marche très bien j'ai bien NULL en base.
>
> --
> Pierre Lagarde
> Microsoft France
>
> Pierre wrote:
> > Bonjour,
> >
> > Deuxième envoi...
> > je ne trouve pas de solution.
> >
> > je souhaite mettre à jour une ligne dans une table et cette ligne
> > contient une reference externe vers une autre table dans un champ de
> > type int.
> > C'est ce champ que je ne parviens pas à mettre à NULL afin de
> > supprimer la référence.
> > Il est possible d'affecter une valeur à ce champ, mais une fois
> > affectée, on ne peut plus revenir à NULL...
> >
> > Je passe comme expliqué ci-dessous par un data adapter, un dataset et
> > une datarow.
> >
> > Soit une data row d'une table dans un data adapter, je ne parviens
> > pas à mettre à null (Ûnull) un champ de cette ligne, le champ
> > "ville".
> > La lecture à partir de la base de données d'un champ null ne provoque
> > pas d'erreur et est bien remontée dans l'interface. De plus, la mise
> > à jour du champ à une valeur non null se fait correctement.
> > Lorsque dans l'interface, on ne choisit rien pour le champ "ville", la
> > valeur du champ "ville" de la data row est forcée à
> > system.dbnull.value, ce qui se fait correctement aussi. Mais lors de
> > l'enregistrement du data adapter (da.update), la modification n'est
> > pas retranscrite dans la base de données et aucune erreur n'est
> > signalée concernant la mise à jour.
> >
> > La commande update du data adapter a été mise à jour, les changements
> > dans la data row ont été acceptés.
> >
> > Donc, là, je sèche : pas de message d'erreur, pas d'erreur donc, et
> > pas de résultat non plus...
> >
> > Merci d'avance.
> >
> > Cordialement.
> >
> > Pierre.
>
>




Avatar
Pierre
Bonjour,

J'ai bien entendu tenté de procéder à un test de type, mais je n'ai pas
trouvé de solution simple :

dr = ta.row
dr(nom) est une colonne dont on ne connaît pas le type (dynamique).
ta.column(nom).gettype donne le type de la colonne
dr(nom) = valeur est l'affectation.

Comment donc procéder à l'affectation en fonction du type de la colonne
d'une part et du type de la valeur à affecter d'autre part ?
Si ce n'est en énumérant tous les data.type connus dans un select case, puis
en testant individuellement pour chaque cas la compatibilité du type de la
valeur et du type de la colonne, je ne vois pas comment procéder. Il n'y a
en effet pas de cast entre les types .NET et les types SQL. Et cette
solution est longue et fastidieuse, voire peu fiable pour peu qu'un type,
d'un côté ou de l'autre, soit omis.

Je reste bien entendu ouvert à toute solution ;-)

A plus.

Pierre.



via
"Paul Bacelar" a écrit dans le message
de news:%
Conseil:

"Ne jamais déclencher d'exception lors du parcours normal d'exécution à
cause des performances."

Je pense qu'un test serait nettement plus judicieux.
--
Paul Bacelar


"Pierre" wrote in message
news:#
> Salut Pierre,
>
> J'ai fini par trouver :
>
> l'affectation de la valeur au champ de la ligne se faisait via ce code :
>
> try
> dr(field)=val
> catch
> dr(field)Ûnull.value
> end try
>
> et il semblerait que lors du déclenchement de l'exception, en faisant


par
> exemple une affectation de la chaine vide à une colonne type int,


l'erreur
> provoquée perturbe la data row et malgré l'affectation à dbnull, celle


ci
> restait en erreur.
> Le seul moyen que j'ai trouvé pour "tester" au préalable l'affectation


est
> de faire la même affectation mais sur une dummy row : dr0
>
> try
> dr0(field)=val
> dr(field)=val
> catch
> dr(field)Ûnull.value
> end try
>
>
> et maintenant ça marche....
>
> Verdict ?
>
>
> A plus.
>
> Pierre.
>
>
> "Pierre Lagarde [MS]" a écrit dans le message de
> news:
> > Bonjour Pierre,
> >
> > Tu utilises quel méthode de mise à jour dans la base.
> > Les requettes ont été généré par le wizard du dataAdapteur ?
> > J'ai fait le test sur un exemple simple en utilisant le Wizard
> > Mon code est :
> > sqlDataAdapter1.Fill(dataSet11);
> > dataSet11.utilisateurs[0][4] = DBNull.Value;
> > sqlDataAdapter1.Update(dataSet11);
> >
> > Ca marche très bien j'ai bien NULL en base.
> >
> > --
> > Pierre Lagarde
> > Microsoft France
> >
> > Pierre wrote:
> > > Bonjour,
> > >
> > > Deuxième envoi...
> > > je ne trouve pas de solution.
> > >
> > > je souhaite mettre à jour une ligne dans une table et cette ligne
> > > contient une reference externe vers une autre table dans un champ de
> > > type int.
> > > C'est ce champ que je ne parviens pas à mettre à NULL afin de
> > > supprimer la référence.
> > > Il est possible d'affecter une valeur à ce champ, mais une fois
> > > affectée, on ne peut plus revenir à NULL...
> > >
> > > Je passe comme expliqué ci-dessous par un data adapter, un dataset


et
> > > une datarow.
> > >
> > > Soit une data row d'une table dans un data adapter, je ne parviens
> > > pas à mettre à null (Ûnull) un champ de cette ligne, le champ
> > > "ville".
> > > La lecture à partir de la base de données d'un champ null ne


provoque
> > > pas d'erreur et est bien remontée dans l'interface. De plus, la mise
> > > à jour du champ à une valeur non null se fait correctement.
> > > Lorsque dans l'interface, on ne choisit rien pour le champ "ville",


la
> > > valeur du champ "ville" de la data row est forcée à
> > > system.dbnull.value, ce qui se fait correctement aussi. Mais lors de
> > > l'enregistrement du data adapter (da.update), la modification n'est
> > > pas retranscrite dans la base de données et aucune erreur n'est
> > > signalée concernant la mise à jour.
> > >
> > > La commande update du data adapter a été mise à jour, les


changements
> > > dans la data row ont été acceptés.
> > >
> > > Donc, là, je sèche : pas de message d'erreur, pas d'erreur donc, et
> > > pas de résultat non plus...
> > >
> > > Merci d'avance.
> > >
> > > Cordialement.
> > >
> > > Pierre.
> >
> >
>
>