我要做这个功能是:当在入库表修改一条记录,自动更新账目表里的对应记录,于是我在更新按钮的Click事件中添加以下代码:
    S1,S2,S3,S4:String;
//用户将要修改入库表,设置变量存取修改的信息  
      s1:=DBEDit2.Text;//商品编号
     s2:=DBEDit3.Text;//商品名称
     s3:=trim(DBEDit6.Text);//入库日期
     s4:=DBEDit7.Text;//合计利润DMForm.InputTable.Edit//判断对应账目表的哪条记录
zstr:=DMForm.InputTable.fieldbyname('入库日期').AsDateTime;//获得当前入库表本条记录的字段内容
zstr1:=DMForm.InputTable.fieldbyname('商品编号').AsString;
zstr2:=DMForm.InputTable.fieldbyname('商品名称').AsString;
用AND三个字段来判断
//---------------------------------------------------------------
with DMForm.ZhangMuQuery do //打开账目表连接组件开始更新账目表对应的记录
begin
DMForm.ZhangMuQuery.Close;
DMForm.ZhangMuQuery.SQL.Clear;
DMForm.ZhangMuQuery.SQL.Add('Update dbZhangMu set 帐日期=''+s3+'',商品编号=''+s1+'',商品名称=''+s2+'',出帐数=''+s4+'' where 帐日期 =:zstr01 AND 商品编号 =:zstr11 AND 商品名称 =:zsrr21 AND 出帐数 =:zstr31');
DMForm.ZhangMuQuery.ParamByName('zstr01').AsString:=DateTimetostr(zstr);// 帐日期
DMForm.ZhangMuQuery.ParamByName('zstr11').AsString:=zstr1;//商品编号
DMForm.ZhangMuQuery.ParamByName('zsrr21').AsString:=zstr2;//商品名称
DMForm.ZhangMuQuery.ParamByName('zstr31').AsString:=Floattostr(zstr0);//出帐数
DMForm.ZhangMuQuery.Prepare;
DMForm.ZhangMuQuery.ExecSQL;
end;
showmessage('修改成功!');
end;这条语句毫无错误可言,逻辑也正确,但修改了入库表之后,就是不更新账目表的内容;我尝试在ACCESS里查询的SQL视图里输入以上SQL语句也正确。TMD不知错在哪里?

解决方案 »

  1.   

    帐日期=''+s3+'',商品编号=''+s1+'',商品名称=''+s2+'',出帐数=''+s4+'' 
    改为
    帐日期='''+s3+''',商品编号='''+s1+''',商品名称='''+s2+''',出帐数='''+s4+''' 
      

  2.   

     帐日期   =:zstr01   AND   商品编号   =:zstr11   AND   商品名称   =:zsrr21   AND   出帐数   =:zstr31')
    改为
     帐日期   ='''+zstr01+'''   AND   商品编号   ='''+zstr11+'''   AND   商品名称   ='''+zsrr21+'''   AND   出帐数   ='''+zstr31+'''')
      

  3.   

    老兄的  
     帐日期       ='''+zstr01+'''       AND       商品编号       ='''+zstr11+'''       AND       商品名称       ='''+zsrr21+'''       AND       出帐数       ='''+zstr31+'''')
    这条语句这样写,根本过不了编译这关。
      

  4.   

    加个事务控制,看这样能提交不
      AdoConnection1.BeginTrans;
      try
        with AdoQuery2 do
        begin
          Close;
          SQL.Text := 更新的语句;
          ExecSql;
        end;
        AdoConnection1.CommitTrans;
      except
        AdoConnection1.RollbackTrans;
      end;