起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 132|回复: 1

【结】代码操作复制数据后,删除时出错**

[复制链接]
发表于 2008-2-28 11:12:03 | 显示全部楼层 |阅读模式
procedure TMAINFORM.Button3Click(Sender: TObject);
const
  DeleteSQLText = 'DELETE FROM CLYHB WHERE (CLHM = :TOCLHM)';
//  InsertSQLText = 'INSERT INTO CLYHB (CLHM,ZGZL,YH,CJRY,CJRQ,XGRY,XGRQ)'+
//  'SELECT :TOCLHM AS CLHM,ZGZL,YH,:CJRY as CJRY,:CJRQ as CJRQ,:XGRY as XGRY,:XGRQ as XGRQ FROM CLYHB WHERE (CLHM = :CLHM)';
  InsertSQLText = 'INSERT INTO CLYHB (CLHM,ZGZL,YH,CJRY,CJRQ)'+
  'SELECT :TOCLHM AS CLHM,ZGZL,YH,:CJRY as CJRY,:CJRQ as CJRQ FROM CLYHB WHERE (CLHM = :CLHM)';
var
  lQuery: Business.Data.TQuery;
  lContextCurrent: TContextCurrent;
  lParam: TBizParam;
begin
  lContextCurrent := TContextCurrent.Create(Self.Context);
  lQuery := Business.Data.TQuery.Create(nil);
  with lQuery do
  try
    lParam := SystemUtils.TContextUtils.GetParam(Self.Context,'Biz:\WLXTXT\GGCS.ParamGroup','FWQRQSJ');
    ConnectionString := 'DATABASEURL=Biz:\WLXTXT\XTSJK.DATABASE';
    Close;
    CommandText := DeleteSQLText;
    Params.ParamByName('TOCLHM').AsString := MaskEdit2.Text;
    Execute;
    CommandText := InsertSQLText;
    Params.ParamByName('CLHM').AsString := MaskEdit1.Text;
    Params.ParamByName('TOCLHM').AsString := MaskEdit2.Text;
    Params.ParamByName('CJRY').AsString := lContextCurrent.Operator.DisplayName;
    Params.ParamByName('CJRQ').AsDateTime := Variants.VarToDateTime(lParam.Value);
    //EDIT1.Text:=Variants.VarToStr(SystemUtils.TContextUtils.GetParam(Self.Context,'Biz:\WLXTXT\GGCS.ParamGroup','FWQRQSJ'));
    //Params.ParamByName('XGRY').AsString := lContextCurrent.Operator.DisplayName;
    //Params.ParamByName('XGRQ').AsDateTime := Business.Data.SysSrv.SysService.Time;
    Execute;
    DataSetCLYHSJJ.DataSet.Refresh;
  finally
    lContextCurrent.Free;
    lQuery.Free;
  end;
end;
当去删除复制的时出错,提示数据已补人修改!重启平台,数据库,电脑也是一样的情况!
用  InsertSQLText = 'INSERT INTO CLYHB (CLHM,ZGZL,YH,CJRY,CJRQ)'+
  'SELECT :TOCLHM AS CLHM,ZGZL,YH,:CJRY as CJRY,getdate() as CJRQ FROM CLYHB WHERE (CLHM = :CLHM)';
也是一样的情况!后来对日期的控制采用
SysUtils.FormatDateTime('yyyy-mm-dd H:mm:ss',Business.Data.SysSrv.SysService.Time);
只是不清楚为何会出现这种情况,解释后结帖!
回复

使用道具 举报

发表于 2008-2-28 13:06:47 | 显示全部楼层
是因为日期时间字段时间的精度问题,所以在where中尽量不要用时间字段,还有浮点。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-7 14:51 , Processed in 0.048138 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表