我的程序:
sql.add('select 名称,sum(数量) 总数量, sum(金额) 总金额');
sql.Add('from company ');
sql.Add(' where 名称= '+trim(combobox1.Text) );
sql.Add('group by 名称');当我在combobox中选择一项例如:六角头 时
在执行时提示:列名'六角头'无效!请问哪的错?谢谢!

解决方案 »

  1.   

    sql.add('select 名称,sum(数量) 总数量, sum(金额) 总金额 ');
    sql.Add('from company ');
    sql.Add('where 名称= '''+ trim(combobox1.Text) + ''' ');
    sql.Add('group by 名称');
      

  2.   

    如果字段存在
    sql.Add('where 名称= '+ trim(combobox1.Text));
    改为
    sql.Add('where 名称= '''+ trim(combobox1.Text) + ''' ');
      

  3.   

    用QuotedStr(trim(combobox1.Text))好一点!
      

  4.   

    to :apartst(一元http://www.ooland.com) 
    我改成sql.Add('where 名称= '''+ trim(combobox1.Text) + ''' ');
    程序可以正确执行了!谢谢!
    但看不懂上面的符号哪个单引哪个双引,能否麻烦再解释一下?
      

  5.   

    ' (sql字符串单引号)  "+.(pascal)..+" (sql字符串单引号) '
      

  6.   

    没有双引号,是三个单引号,这是delphi字符串处理的问题
      

  7.   

    都是单引号,因为你sql语句本身应该带引号的(where 名称='张三'),在delphi里必须用2个单引号代替sql语句里的单号引
    如果你名称里有可能出现单引号,可以用 g961681(技术庸人(知道的太少,需要继续学习)) 说的那种方式,sql.Add('where 名称= '+ QuotedStr(trim(combobox1.Text)));
      

  8.   

    sql.add('select 名称,sum(数量) 总数量, sum(金额) 总金额');
    sql.Add('from company ');
    sql.Add(' where 名称= '+#39+ trim(combobox1.Text) +#39);
    sql.Add('group by 名称');