"类型不匹配期待AutoInc实际LongWord"关于FDQuery(Delphi XE6)

时间:2015-09-01 13:25:49

标签: mysql delphi delphi-xe6 firedac

我们使用Delphi XE6,错误的组件是MySQL 4.1中的TFDQuery。

当我尝试使用组打开查询时,FDQuery显示:

  

类型不匹配期望AutoInc实际LongWord

在“字段编辑器”中,字段正确,显示AutoInc,但始终显示错误,如果我在查询中删除group by,则错误停止但结果错误,并且当我删除所有字段时现场编辑器,然后重试,正常工作。

我尝试在字段编辑器上手动插入字段作为Integer字段,但它也不起作用。

我的表格中包含错误(NUMBOLE)的字段是Integer字段AutoInc(来自tabbolvenda的主键)

  FDQuery1.Close;
  FDQuery1.SQL.Clear;
  FDQuery1.SQL.Add('select');
  FDQuery1.SQL.Add('b.NUMVENDA,');
  FDQuery1.SQL.Add('a.DATAVENDA,');
  FDQuery1.SQL.Add('b.NUMBOLE,');
  FDQuery1.SQL.Add('b.PARCELAS,');
  FDQuery1.SQL.Add('a.CODCLIENTE,');
  FDQuery1.SQL.Add('a.NOMECLIENTE,');
  FDQuery1.SQL.Add('b.DATAVTO,');
  FDQuery1.SQL.Add('a.MONTANTE,');
  FDQuery1.SQL.Add('b.DATAPTO,');
  FDQuery1.SQL.Add('if(b.EMABERTO = ''True'', ''Sim'',''Não'') as EMABERTO,');
  FDQuery1.SQL.Add('a.CUSTOVENDA,');
  FDQuery1.SQL.Add('a.LUCROVENDA,');
  FDQuery1.SQL.Add('a.COMISSAO');
  FDQuery1.SQL.Add('from tabvendas a inner join tabbolvenda b');
  FDQuery1.SQL.Add('on a.NUMVENDA = b.NUMVENDA');
  FDQuery1.SQL.Add('group by b.NUMVENDA order by b.NUMVENDA'); <--- if I remove this group by it works
  FDQuery1.Open;

FDQuery上有任何属性会导致此错误消失吗?当我的项目使用带有Zeos Query的Delphi 6时,相同的select不会显示任何错误消息。它只发生在FDQuery上。

1 个答案:

答案 0 :(得分:3)

如果不使用聚合函数,则select中的字段数必须等于group by中的字段数。
来自docs

SELECT expression1, expression2, ... expression_n, 
       aggregate_function (aggregate_expression)
FROM tables
WHERE conditions
GROUP BY expression1, expression2, ... expression_n;

其中expression1, expression2, ... expression_n - 表达式未封装在聚合函数中,必须包含在SQL语句末尾的GROUP BY子句中。