Comment insérer explicitement des nulls dans une requête paramétrée?

Je suis l'aide de Delphi 7 et Firebird 1.5.

J'ai une question que j'ai créer au moment de l'exécution, où les valeurs peuvent être null. Je ne peux pas travailler sur la façon d'obtenir Firebird pour accepter explicite des valeurs null pour les valeurs que je dois les laisser comme null. À ce stade, je suis en train de construire le SQL de sorte que je ne comprend pas les paramètres qui sont nuls mais c'est fastidieux et source d'erreurs.

var
  Qry: TSQLQuery;
begin
  SetConnection(Query); // sets the TSQLConnection property to a live database connection
  Query.SQL.Text := 'INSERT INTO SomeTable (ThisColumn) VALUES (:ThisValue)';
  Query.ParamByName('ThisValue').IsNull := true; // read only, true by default
  Query.ParamByName('ThisValue').Clear; // does not fix the problem
  Query.ParamByName('ThisValue').IsNull = true; // still true
  Query.ParamByName('ThisValue').Bound := true; // does not fix the problem
  Query.ExecSQL;

Actuellement un EDatabaseError "Pas de valeur pour le paramètre "Cettevaleur'"', est soulevée dans le DB.pas donc je suppose que c'est voulu par la conception plutôt qu'une firebird problème.

Puis-je définir des paramètres à NULL? Si oui, comment?

(edit: désolé de ne pas être plus explicite à propos de l'essai .Clair avant. Je l'ai laissée en faveur de mentionner IsNull. Ont ajouté de déclaration et de plus de code)

Désolé, encore une chose: il n'y a pas de "not NULL" contrainte sur la table. Je ne pense pas que c'est arriver aussi loin, mais pensé que je devrais dire.

Console complète application qui affiche le problème à ma fin:

program InsertNull;

{$APPTYPE CONSOLE}

uses
  DB,
  SQLExpr,
  Variants,
  SysUtils;

var
  SQLConnection1: TSQLConnection;
  Query: TSQLQuery;
begin
  SQLConnection1 := TSQLConnection.Create(nil);

  with SQLConnection1 do
  begin
    Name := 'SQLConnection1';
    DriverName := 'Interbase';
    GetDriverFunc := 'getSQLDriverINTERBASE';
    LibraryName := 'dbexpint.dll';
    LoginPrompt := False;
    Params.clear;
    Params.Add('Database=D:\Database\ZMDDEV12\clinplus');
    Params.Add('RoleName=RoleName');

    //REDACTED Params.Add('User_Name=');
    //REDACTED Params.Add('Password=');

    Params.Add('ServerCharSet=');
    Params.Add('SQLDialect=1');
    Params.Add('BlobSize=-1');
    Params.Add('CommitRetain=False');
    Params.Add('WaitOnLocks=True');
    Params.Add('ErrorResourceFile=');
    Params.Add('LocaleCode=0000');
    Params.Add('Interbase TransIsolation=ReadCommited');
    Params.Add('Trim Char=False');
    VendorLib := 'gds32.dll';
    Connected := True;
  end;
  SQLConnection1.Connected;
  Query := TSQLQuery.Create(nil);
  Query.SQLConnection := SQLConnection1;
  Query.Sql.Text := 'INSERT INTO crs_edocument (EDOC_ID, LINKAGE_TYPE) VALUES (999327, :ThisValue)';
  //Query.ParamByName('ThisValue').IsNull := true; // read only, true by default
//  Query.ParamByName('ThisValue').Value := NULL;
  Query.ParamByName('ThisValue').clear; // does not fix the problem
  Query.ParamByName('ThisValue').Bound := True; // does not fix the problem
//  Query.ParamByName('ThisValue').IsNull; // still true
  Query.ExecSQL;
end.

source d'informationauteur