upsql:='update chanpin set 名称 ='''+edit1.Text+''', 单价='+edit2.Text+', 规格='''+combobox1.Text +''', 单位='''+combobox2.Text+''', 备注='''+memo1.Text+''' where id='+dbedit3.Text;这条语句怎么有错误了啊
我是看不出来

解决方案 »

  1.   

    用动态的SQL语句吧update chanpin set 名称=:a,
    adoquery1.parameters.parametersbyname('a').value:=edit1.text;
      

  2.   

    好像没有问题,你的memo里面是什么内容?有没有单引号?你再execsql之前用showmessage(sql.text)看看
      

  3.   

    你应该显示一下程序动态执行的结果,有些变量出现空值的时候容易导致SQL语句错误
      

  4.   

    sql.clear;
    sql.add(upsql);
    sql.SaveToFile('c:\sql.txt');
    ------------------------------------把你c:\sql.txt里的东西贴出来
      

  5.   

    显示的SQL语句也没有错呀
    这是怎么一回事
    我用了JINJAZZ的方法了
    没错啊
      

  6.   

    update chanpin set 名称='牛奶',单价=36,规格='13*13',单位='件',备注='最新最快' where id=5
    没什么错呀
      

  7.   

    就说是UPDATA错误在数据库的提示就是这样
    没别的什么了这是怎么一回事呢?、
      

  8.   

    upsql:='update chanpin set 名称 ='''+edit1.Text+''', 单价='+edit2.Text+', 规格='''+combobox1.Text +''', 单位='''+combobox2.Text+''', 备注='''+memo1.Text+''' where id='+dbedit3.Text;没错呀。你是在DELPHI中写的,还是在SQL里写?
      

  9.   

    在两个单引号标示的string类型的句子中间3个'单引号表示一个单引号,即stringstring类型的句子的开始和结尾的各一个单引号是string类型的标示符,3个'单引号表示的一个单引号指的是string类型的变量的内容包含的单引号,'''+edit1.Text+''',就是把edit1.Text的内容加上string类型的标示符。你的句子中----单价='+edit2.Text+'---此处共少了4个单引号,最后应有4个单引号。
      

  10.   

    你若看不懂,还是用动态的SQL语句吧,楼上已有
      

  11.   

    你的单价和id都是数字型不是char类型么?
      

  12.   

    西门吹雪同志,你说的不对吧
    字符形才需要加引号,而数字型不用加的
    而且我的UPSQL是一个字符形的哦
      

  13.   

    的确是‘字符形才需要加引号’,
    但是-edit2.Text-是string类型的啊,若‘单价’是int,-edit2.Text-是否要转换啊!!!
      

  14.   

    同志,你明白不明白DELPHI和SQL的区别
    你自己可以试一下
    不用转换知道吗
    如果转换了对于UPSQL
    来说他可不认识一个字符型里插着一个INT型
    明白不
    SQL给数据库后
    人家可只知道有引号的是字符没引号是数字
      

  15.   

    若‘单价’是int,-edit2.Text-是否要转换啊
    ============================================不需要
      

  16.   

    upsql:='update chanpin set 名称 ='''+edit1.Text+''', 单价='+edit2.Text+', 规格='''+combobox1.Text +''', 单位='''+combobox2.Text+''', 备注='''+memo1.Text+''' where id='+dbedit3.Text +'';//加两个单引号
      

  17.   

    可能是你的字符型数据值(edit1.Text,memo1.Text)中含有特殊字符,如单引号;
    字符型数据的数据库操作最好用参数形式!
      

  18.   

    19830901(小龙女) 
    ---------------------------------你随便到数据库里(不是delphi),建立一个查询,对这个表写条update语句看看有没有问题
      

  19.   

    这种SQL语法也太差了吧虽说可以得到数据但是容易出错要带参数的很好
    upsql:='update chanpin set 名称 =:A, 单价=:B, 规格=:C, 单位=:D, 备注=:E where id=:F;
    adoquery1.parameters.parametersbyname('A').value:=edit1.text;
    .
    .
    .
    adoquery1.open;这样明了一些不容易出错
      

  20.   

    你用的Ado还是Bde,又肯能被加了表级锁,你试试吧所有程序都关掉,再打开,或者电脑重起一下
      

  21.   

    ---------------------------
    Debugger Exception Notification
    ---------------------------
    Project Project1.exe raised exception class EOleException with message 'UPDATE 语句的语法错误。'. Process stopped. Use Step or Run to continue.
    ---------------------------
    OK   Help   
    ---------------------------
      

  22.   

    我建议你在写这类 SQL的时候的引号这样写  QuotedStr(edit2.text);
    可以减少些出错的机会
      

  23.   

    哦,每转过来
    upsql:='update chanpin set 名称 ='''+edit1.Text+''', 单价='+edit2.Text+', 规格='''+combobox1.Text +''', 单位='''+combobox2.Text+''', 备注='''+memo1.Text+''' where [id]='+dbedit3.Text;你的id是access保留字,一直没注意
      

  24.   

    procedure TForm4.Button1Click(Sender: TObject);
    var upsql : string;
    begin
    form1.ADOQuery1.Close;
    upsql:='update chanpin set 名称=:a,单价=:b,规格=:c,单位=:d,备注=:e where id=:f';
    form1.ADOQuery1.Parameters.ParamByName('a').Value:=edit1.Text;
    form1.ADOQuery1.Parameters.ParamByName('b').Value:=edit2.Text;
    form1.ADOQuery1.Parameters.ParamByName('c').Value:=combobox1.Text;
    form1.ADOQuery1.Parameters.ParamByName('d').Value:=combobox2.Text;
    form1.ADOQuery1.Parameters.ParamByName('e').Value:=memo1.Text;
    form1.ADOQuery1.Parameters.ParamByName('f').Value:=dbedit3.Text;
    form1.ADOQuery1.SQL.Clear;
    form1.ADOQuery1.SQL.Add(upsql);
    form1.ADOQuery1.ExecSQL;
    form1.ADOQuery1.Close;end;
    这样写对吗
    也是不行呀
      

  25.   

    upsql:='update chanpin set 名称=:a,单价=:b,规格=:c,单位=:d,备注=:e where [id]=:f';
    form1.ADOQuery1.Parameters.ParamValues['a'].Value:=edit1.Text;
      

  26.   

    ft,你还用你开始的方法,把id用[]括起来
      

  27.   

    set 名称 ='''+edit1.Text+''', 
    你没发现你的这个'名称 '在数据库里没有吗?
    不是'名称 ' 是'名称'  说明白就是你加了一个空格
    大家要多注意呀,编程要仔细才是:)