Bonjour,
J'ai deux problèmes assez embêtant.

Le premier est la gestion de l'accès conurentiel sur une mise à jour de table dans la BD. Je précise que je ne lis et modifie aucun champs de format date ou de floatant. Le problème est différent.

Voilà j'utilise une base de données RDB (aucune importance) en ODBC.
Et j'ai une requête du type

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
sqltext = "SELECT champs1, champs2, champs3 " +
             "FROM table " +
             "WHERE champs1 = ?"
Ma requête de select fonctionne bien et ma dataTable me retourne des valeurs.
Sauf que ... le champs 3 peut contenir une valeur NULL (j'ai le droit)

Du coup quand je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
bldr = new OdbcCommandBuilder(myDataAdapter)
myDataAdapter.update(myDataSet.Tables[myTableToUpdate]
j'ai une exception de type Accès concurentiel.

Je pense que c'est dans mon champs nul (même si je ne le met pasd à jour car la commande de mon OdbcBuilder fait une requete de type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
"UPDATE table SET Champs1= ?, Champs2= ?, Champs3=   WHERE ((Champs1= ?) AND (Champs2= ?) AND (Champs3= ?) "
Et Champs3 = null : je ne suis pas sur qu'il interprête ceci correctement.


Mon deuxième problème est une violation de contrainte.
En effet je veux mettre à jour plusieurs tables dans la meme transaction sauf que un des champs que je souhaite mettre à jour est un champs fils d'une table et je souhaite également mettre à jour le champs père de l'autre table.
Je me suis dit naïvement que si je traite cette mise à jour dans la meme transaction je n'aurai pas de problème de violation de contrainte ... Apparemment ce n'est pas le cas.


Quelqu'un peut il m'aider sur ces sujets ou à défaut me proposer un contournement.

Merci