Bonjour je vous dois des excuses pour la très lacunaire (et fausse) présentation du problème.
J'utilise Delphi 7, (FireBird 2.1.3)
Le composant est un TIBQuery
A la conception le champ BAS_OPTION n'était pas NOT NULL. Le champ était donc à NULL quand on y avait rien placé.
J'ai ajouté ensuite la contrainte NOT NULL. De sorte que tout UPDATE se doit de ne pas laisser ce champ NULL.
La requête SQL d'insertion fonctionnelle est construite comme ceci :
Format('Insert into MAIL_BASE (BAS_ADR,BAS_FEDE,BAS_DEP,BAS_REGION,BAS_ORIGINE,BAS_OPTION) values (%s,%s,%s,%s,%s,%s)', [QuotedStr(StringGrid1.Cells[ColAdresse,j]),QuotedStr(Edit1.text),QuotedStr(Edit2.Text),QuotedStr(Edit3.Text),QuotedStr(Edit5.Text),QuotedStr('')]);
Elle insère dans le champ BAS_OPTION une chaine vide qui donc n'est pas NULL.
Lorsqu'au contraire à un autre endroit du code je veux modifier une ligne de la même table j'essaie ceci dans OnClick d'un DBNavigator
1 2
| nbPost : with IBD do begin if FieldByName('BAS_OPTION').IsNull then
FieldByName('BAS_OPTION').AsString:=''; |
IBD est un TIBDataset
Et c'est cette instruction qui provoque une exception.
Mettre une chaîne vide dans un champ NOT_NULL (d'un TIBDataset) ne produit pas le même effet que de mettre une value à '' dans une requête SQL.
Partager