尝试在TMemo

时间:2017-02-15 23:01:12

标签: mysql delphi

我正在尝试在价格字段(包含价格)上显示SQL SUM query的结果,按日期({按月对每月的结果进行分组{1}}字段)并且还使用timestamp子句,该子句仅显示包含在另一个字段中的某个单词(在本例中为 Folio )的结果到WHERE

因此我的查询如下所示:

TMemo

当我在 phpMyAdmin 中运行它来测试它时,它会返回以下内容:

enter image description here

结果对应于11月,12月,1月和2月 - 因为我在数据库中只有这几个月的条目,所以查询有效。

在Delphi中,使用以下代码对其进行测试:

select date_format(data, '%M-%Y'), sum(pret) as test from arhivalux where statistica='Folio' group by statistica, year(data), month(data)

它有效,但只显示第一个值, 11679 并非全部4,并且值前面没有Y / M. 第一次尝试这个,所以我必须遗漏一些东西

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您没有提取结果的第一个值,只提取第二个值。并且您没有遍历所有可用结果,只查看第一个结果。

请改为尝试:

procedure TForm2.Button1Click(Sender: TObject);
begin
  Query.Close;
  Memo1.Clear;

  Query.SQL.BeginUpdate;
  try
    Query.SQL.Add('select date_format(data, ''%M-%Y'') as df, sum(pret) as test');
    Query.SQL.Add('from arhivalux');
    Query.SQL.Add('where statistica=''Folio''');
    Query.SQL.Add('group by statistica, year(data), month(data)');
  finally
    Query.SQL.EndUpdate;
  end;

  Query.Open;
  try
    while not Query.Eof do
    begin
      Memo1.Lines.Add(Query.FieldByName('df').AsString + ' = ' + Query.FieldByName('test').AsString);
      Query.Next;
    end;
  finally
    Query.Close;
  end;
end;