"type mismatch expecting AutoInc actual LongWord" 在 FDQuery 上(Delphi XE6)
"type mismatch expecting AutoInc actual LongWord" on FDQuery (Delphi XE6)
我们使用 Delphi XE6 错误的组件是 MySQL 4.1 中的一个 TFDQuery。
当我尝试使用组打开查询时,FDQuery 显示:
type mismatch expecting AutoInc actual LongWord
在字段编辑器中字段是正确的,它显示 AutoInc
但错误总是出现,如果我在查询时删除 group by
错误停止但结果是错误的,当我删除字段编辑器的所有字段并重试,工作正常。
我尝试在字段编辑器中手动插入一个字段作为 Integer
字段,但它也没有用。
我的 table 中的错误字段 (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 上。
如果不使用聚合函数,select 中的字段数必须等于分组依据中的字段数。
来自 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
子句中的表达式。
我们使用 Delphi XE6 错误的组件是 MySQL 4.1 中的一个 TFDQuery。
当我尝试使用组打开查询时,FDQuery 显示:
type mismatch expecting AutoInc actual LongWord
在字段编辑器中字段是正确的,它显示 AutoInc
但错误总是出现,如果我在查询时删除 group by
错误停止但结果是错误的,当我删除字段编辑器的所有字段并重试,工作正常。
我尝试在字段编辑器中手动插入一个字段作为 Integer
字段,但它也没有用。
我的 table 中的错误字段 (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 上。
如果不使用聚合函数,select 中的字段数必须等于分组依据中的字段数。
来自 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
子句中的表达式。