with adoquery1 do
  begin
   sql.Clear;
   sql.Add('update renyuan');
   sql.Add('set gonghao='+edit_gonghao.Text+',');
   sql.Add('name='+edit_name.Text+',');
   sql.Add('bumen='+edit_bumen.Text+'');
   sql.Add('where  id='+edit_id.Text+'');
   execsql;
   end;
如果我在edit_name里面输入比如 123 321  之类的是可以的。但是如果一输入 adfffddsf就报错。报adffffddsf没有默认值。请问一上是什么原因造成的?

解决方案 »

  1.   

     with adoquery1 do 
      begin 
      sql.Clear; 
      sql.Add('update renyuan'); 
      sql.Add('set gonghao='+edit_gonghao.Text+','); 
      sql.Add('name='+Quotedstr(edit_name.Text)+','); 
      sql.Add('bumen='+edit_bumen.Text+''); 
      sql.Add('where  id='+edit_id.Text+''); 
      execsql; 
      end; 
      

  2.   

    sql语句里,字符串要加上单引号,否则,你的sql语句成了:
    update renyuan set gonhao=abcde, name=cdefg, ... where ...
    这里的abcde, cdefg它当成了字段名,因为没有加单引号。改成:
      with adoquery1 do 
      begin 
      sql.Clear; 
      sql.Add('update renyuan'); 
      sql.Add('set gonghao='''+edit_gonghao.Text+''','); 
      sql.Add('name='''+edit_name.Text+''','); 
      sql.Add('bumen='''+edit_bumen.Text+''''); 
      sql.Add('where  id='+edit_id.Text+''); 
      execsql; 
      end; 
      

  3.   

      with adoquery1 do 
      begin 
      close;
      sql.text := ' update renyuan set gonghao='+edit_gonghao.text+',name='''+edit_name.text+''','+
                  ' bumen='''+edit_bumen.text+''','+
                  ' where id='+edit_id.text';
      execsql; 
      end; 
      with adoquery1 do 
      begin 
      close;
      sql.text := ' update renyuan set gonghao=:gonghao'+
                  ' name=:name'+
                  ' bumen=:bumen'+
                  ' where id=:id';
      parameters.parambyname('gonghao').value := edit_gonghao.text;
      parameters.parambyname('name').value := edit_name.text;
      parameters.parambyname('bumen').value := edit_bumen.text;
      parameters.parambyname('id').value := edit_id.text;
      execsql; 
      end; 
      

  4.   

    如果你的字段是整型,可以不加引号
    如果你的字段是字符型,传入的字段值就要加引号,QuotedStr('值')
      

  5.   

    with adoquery1 do 
    begin 
    sql.Clear; 
    sql.Add(
    'update renyuan set gonghao='''+edit_gonghao.text+''',name='''+edit_name.text+''',bumen='''+edit_bumen.text+'''
    where id='''+edit_id.text+''''); 
     execsql; 
      end; 
    我就喜欢把sql写成一句。
      

  6.   

    with adoquery1 do 
    begin 
    sql.Clear; 
    sql.Add(
    'update renyuan set gonghao='''+edit_gonghao.text+''',name='''+edit_name.text+''',bumen='''+edit_bumen.text+'''
    where id='''+edit_id.text+''''); 
     execsql; 
      end; 
    我就喜欢把sql写成一句。