我的数据模块上有一个 Tadocommand,它连接到 MSSQL 存储过程。存储过程用于更新表。在我的代码中,我在我的一个 Tclientdataset 的 beforeupdaterecord 方法中调用了 tado 命令。
首先,我使用 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;
它没有任何错误。我认为在数据模块上使用静态 Tado 命令时参数值存在一些问题。
为什么在使用静态创建的 tadocommand 而不是动态创建的 tadocommand 时多次更新会产生错误?