MSSQL ストアド プロシージャに接続されているデータ モジュールに Tadocommand があります。テーブルの更新には、storedproc が使用されます。私のコードでは、Tclientdatasets の 1 つの beforeupdaterecord メソッドで、tadocommand を呼び出します。
まず、Tclientdataset の deltads.fieldbyname().newvalue を使用して、tadocommand パラメータに値を指定し、次に実行プロシージャを呼び出します。最初の更新では問題なく動作しますが、次の更新を行おうとすると、「varchar を datetime に変更する際のエラー」が発生します。
beforeupdaterecordメソッドでtadocommandを動的に作成した場合
sp1_editcontract:=Tadocommand.Create(nil);
sp1_editcontract.CommandType:=cmdStoredProc;
sp1_editcontract.Connection:=DMDBconn.DBConn;
sp1_editcontract.CommandText:='EditContract';
sp1_editcontract.Parameters.Refresh;
//assign parameter values
sp1_editcontract.execute;
sp1_editcontract.free;
エラーなしで動作します。データモジュールで static Tadocommand を使用する場合、パラメータ値に問題があると思います。
動的に作成されたtadocommandではなく、静的に作成されたtadocommandを使用すると、複数の更新でエラーが発生するのはなぜですか?