三层架构的分布式系统中,用AdoConnection+DatasetProvider+AdoQuery做服务器,用DCOMConnection+ClientdataSet作客户端。在应用服务器中,设置AdoQuery的SQL为“Update tUser Set usrDept= :pusrDept,usrClass= :pusrClass Where usrID= :pUsrID”,Parameters中的参数正常;在客户端,使用了ClientdataSet连接,在ClientdataSet中设置“Params”有三个参数:pusrDept,pusrClass,pUsrID;与服务器端的一样;设置一个按钮,其代码如下:
ClientDataSet2.Params.ParamByName('pusrID').Value := Trim(Edit1.Text);
ClientDataSet2.Params.ParamByName('pusrDept').Value := Trim(Edit2.Text);
ClientDataSet2.Params.ParamByName('pusrClass').AsString := Trim(Edit3.Text); ClientDataSet2.Execute;
程序能运行,可是为什么不能起作用,根本没有执行更新作用。请高手指教!是不是设置什么特殊参数?
只要Select语句,就能正常运行,为什么Update的语句就不能?
ClientDataSet2.Params.ParamByName('pusrID').Value := Trim(Edit1.Text);
ClientDataSet2.Params.ParamByName('pusrDept').Value := Trim(Edit2.Text);
ClientDataSet2.Params.ParamByName('pusrClass').AsString := Trim(Edit3.Text); ClientDataSet2.Execute;
程序能运行,可是为什么不能起作用,根本没有执行更新作用。请高手指教!是不是设置什么特殊参数?
只要Select语句,就能正常运行,为什么Update的语句就不能?
ClientDataSet2.ApplyUpdates(MaxErrs); //才将数据更新至服务器。
现在出现了以下问题:如果我打开ClientDataset2.Open,就提示出错:ADOQuery2:Commandtext does not return a result set.
如果我没有打开ClientDataSet2,就提示出错:ClientDataset2: cannot perform this operation on a closed dataset.
究竟还要设置哪些东西呢?谢谢高手了!
换句话说,就是不用你写UPDATE语句去更新
你试试ADOQuery2.execsql。