要引用单引号要加四个单引号,或者使用函数
QuotedStr..

解决方案 »

  1.   

    DBGrid?
    貌似有自动保存的语句吧
    QuotedStr,自动给你的字符串加单引号,转义单引号
      

  2.   

    我这样来处理了。 可是我看到其他人的SQL跟踪记录 都是把所有的SQL语句拼成一句以后 再执行的。
    procedure TMainFrm.Button8Click(Sender: TObject);
    var
      i:Integer;
      redtag:Integer;
    begin
      QSAVE.Connection:=DataModule1.ADOConnection1;
      QSAVE.SQL.Text:='select top 0* from aaaa with (nolock)';
      qsave.Open;
      dxMemData1.First;
      try
          while not dxMemData1.Eof do
          begin
              QSAVE.Append;
              QSAVE.Edit;
              for i:=0 to dxMemData1.FieldCount-1 do
              begin
                if dxMemData1.Fields[i].Tag<>0 then
                begin
                  if (redtag=1) and (dxMemData1.Fields[i].Tag=3)then
                  begin
                    //2,3,如果是3 表示这个字段要体现成负数
                    qsave.FieldValues[dxMemData1.Fields[i].FieldName]:=-dxMemData1.Fields[i].Value;
                  end
                  else
                  begin
                    qsave.FieldValues[dxMemData1.Fields[i].FieldName]:=dxMemData1.Fields[i].Value;
                  end;
                end;
              end;
              QSAVE.Post;
              dxMemData1.Next;
          end;
        QSAVE.Connection.BeginTrans;
        QSAVE.UpdateBatch(arAll);
        QSAVE.Connection.CommitTrans;
      except
        QSAVE.Connection.RollbackTrans;
      end; 
    end;
      

  3.   

    最好不要遍历一行一行保存,要么使用adodateset 一次保存,要么遍历拼写SQL ,一起提交,否则中途出错会很麻烦
      

  4.   

    感觉遍历变成SQL保存比较好一点,遍历一次产生一个SQL到了一定次数后统一执行一次SQL,遍历的时侯如果数据集有绑控件的话别忘了加DisableControls,EnableControls数据在内存中循环是很快的。