delphi+sql server 2000
sql server里有张cbry的表,想修改其中2个字段的信息,出现头疼的错误,代码如下:procedure TForm1.Button1Click(Sender: TObject);
var str,str1:string;
begin
        str1:='UPDATE CBRY SET yb_ft_bak=正常';
        str:=str1+'where dw_bh='+edit1.text;
        adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.SQL.Add(str1);
        adoquery1.ExecSQL;
end;返回错误:---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleException with message '列名 '正常' 无效。'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------在sql server下执行UPDATE CBRY
SET yb_ft_bak =正常
WHERE (DW_BH = '10001')返回同样的错误,改成:UPDATE CBRY
SET yb_ft_bak ='正常'
WHERE (DW_BH = '10001')执行成功!但到delphi里执行,不行:返回错误。[Error] Unit1.pas(39): Illegal character in input file: '正' ($D5FD)
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'把“正”字去掉,轮到“常”字也出现这个情况。被这两个搞死了,好象被踢皮球样的,delphi和sql server都摆脸。
我以前编写过这个功能,不知道代码被我丢到哪里去了。汗死了,有人帮我吗?=====================================
最后,请问各位大哥,delphi修改数据的例子能不能给我几个?

解决方案 »

  1.   

    我用存储传字符串过程更新
    存储过程就是一个
    proc
    #####(过程名)
    @sss(参数)
    as
    declare @ssd(变量)
    set @ssd=@sss
    exec(@ssd)
    在更新的时候
    id是主键,我定义为INT,要是字符类型的和前边编辑框一样五'
    S:='update xxx set xx='''''+edit1.text+''''where id='+main.fieldbyname('id').asstring;
    调用的时候
    sql.add('exec #####'''+s+'''');
      

  2.   

    改成
      str1:='UPDATE CBRY SET yb_ft_bak='+#39+'正常'+#39;
            str:=str1+'where dw_bh='+#39+edit1.text+#39;
    试试!
      

  3.   

    str1:='UPDATE CBRY SET yb_ft_bak= '+QuotedStr('正常');
            str:=str1+' where dw_bh='+QuotedStr(edit1.text);
            adoquery1.Close;
            adoquery1.SQL.Clear;
            adoquery1.SQL.Add(str1);
            adoquery1.ExecSQL;
      

  4.   

    str1:='UPDATE CBRY SET yb_ft_bak='''正常'''';
            str:=str1+'where dw_bh='+edit1.text;
    delphi会把"''"解释成一个"'"
      

  5.   

    str1:='UPDATE CBRY SET yb_ft_bak='+#39+'正常'+#39;
            str:=str1+'where dw_bh='+#39+edit1.text+#39;(dabo1977() ()
    这答案的正确的,你之所以会出现那个错误是因为你让SQL SERVER不知道你用的'正常'是什么字段类型。如果强行加上引号就OK了。