q.SQL.Clear;
    q.SQL.Add('insert into 加工统计表 values select 地区 ,sum (数量) ,sum (总金额) from 固定件登记表 where 医生=:address and 是否已出件 =True group by  地区 ');
    q.Parameters.ParamByName('address').value:=edit1.Text;
    q.Open;
请高手看看我的SQL语句哪儿有错误呀?

解决方案 »

  1.   

    向数据库里面添加字符串的时候需要用单引号扩起来,在edit1.Text外面加QuotedStr函数
    给分!
      

  2.   

    对,q.Open也需要换成q.execsql,open的执行需要有返回记录集
      

  3.   

    错误提示:'INSERT INTO 语句的语法错误.'
      

  4.   

    q.SQL.Clear;
        q.SQL.Add('insert into 加工统计表 values select 地区 ,sum (数量) ,sum (总金额) from 固定件登记表 where 医生=:address and 是否已出件 =True group by  地区 ');
        q.Parameters.ParamByName('address').value:=edit1.Text;
        q.ExecSQL;我把它改成这样,还是一样的错语呀
      

  5.   

    给你修改一下:
    q.SQL.Clear;
    q.SQL.Add('insert into 加工统计表 (select 地区,sum(数量),sum(总金额) from 固定件登记表 where 医生=":address" and 是否已出件=True group by 地区)');
    q.Parameters.ParamByName('address').value:=edit1.Text;
    q.ExecSQL;另: 医生=":address"?! 是 地区=":address" 吧
      

  6.   

    我把它改还这样 q.SQL.Clear;
        q.SQL.Add('insert into 加工统计表 select 地区 as aaa ,sum (数量) as bbb, sum (总金额) as ccc from 固定件登记表 where 医生=:address and 是否已出件 =True group by  地区 ');
        q.Parameters.ParamByName('address').value:=edit1.Text;
        q.ExecSQL;编译、运行时是没有错误了,
    但是结果为什么“加工统计表” 中只有一行数据呀,而 select 查询出来明明有若干条记录呀
      

  7.   

    insert 本来就是插入一条数据。如果你是很多条,它只插入最后一条。
      

  8.   

    如果是Access, 它不支持批量插入
      

  9.   

    楼上的简直是无稽之谈,该SQL语句支持批量插入,你看一下你的select部分是否只有一条记录,还有,加上括号! 不了解SQL的不要乱讲!以免教错别人!◎
      

  10.   

    我郁闷,本来很简单的一个问题搞得这么复杂;
    q.SQL.Clear;
        q.SQL.Add('insert into 加工统计表 select 地区 as aaa ,sum (数量) as bbb, sum (总金额) as ccc from 固定件登记表 where 医生=:address and 是否已出件 =True group by  地区 ');
        q.Parameters.ParamByName('address').value:=quotedstr(edit1.Text);
        q.ExecSQL;
    再不行就把select 地区 as aaa ,sum (数量) as bbb, sum (总金额) as ccc from 固定件登记表 where 医生=:address and 是否已出件 =True group by  地区 ')放到数据库里面执行一下看看结果啊!
      

  11.   

    var
      sqltxt:string;
      sqltxt:=
    'insert into 加工统计表 select 地区 as aaa ,sum (数量) as bbb, sum (总金额) as ccc from 固定件登记表 where 医生='+quotedstr(edit1.Text)+' and 是否已出件 =True group by  地区 ';
    q.SQL.txt:=sqltxt;
    q.ExecSQL;
      

  12.   

    再不行就是你数据记录的问题。可以把sqltxt获取出来到SQL查询试试。
      

  13.   

    http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~