【问题标题】:How do I access the result of a Select count(*) using an SQLQuery component in Delphi如何在 Delphi 中使用 SQLQuery 组件访问 Select count(*) 的结果
【发布时间】:2016-04-05 07:05:20
【问题描述】:

我正在使用 Delphi RAD Studio 9 和 Firebird 2.5

我想使用符合特定条件的行数的计数。 当我把

Select count(*) from VRDB where Lname - 'SMITH'

进入 SQL 属性,打开 SQLQuert1 时,我收到错误消息

SQLQuery1:无法确定 %s 的字段名称。

我认为这意味着 Firebird 或 Delphi 不知道如何处理结果。

如何捕获查询结果? (我的查询语句使用 isql 可以正常工作。)

【问题讨论】:

  • 你的意思是“Lname = 'SMITH'”吗?
  • 你假设错了,这意味着SQL或连接在某种程度上是错误的。
  • 没有“Delphi RAD Studio 9”这样的东西。请编辑您的问题。

标签: sql delphi firebird dbexpress


【解决方案1】:

在 Delphi 10 Seattle 中使用 Firebird 数据库,以下对我来说很好:

procedure TForm2.btnCountClick(Sender: TObject);
begin
  SqlQuery3.Sql.Text := 'select count(*) from maimages';
  SqlQuery3.Open;
  Caption := IntToStr(SqlQuery3.Fields[0].AsInteger);
end;

顺便说一句,您所说的“RAD Studio 9”是指哪个 Delphi 版本?如果您说的是Delphi 2009,那么我在D7之后的最早的Delphi版本是XE4,上面的代码也可以正常工作。

【讨论】:

    【解决方案2】:

    尝试使用

    select count(*) CNT from VRDB where Lname = 'SMITH'
    

    【讨论】:

    • select count(*) as counter from VRB...。 (使用as 以避免错误地这样做是一个好习惯:select field1 field2 from tablename,我经常这样做)在德尔福i := sqlQuery.FieldByName('counter').asInteger
    【解决方案3】:

    无需更改您的查询字符串。只需引用 FieldByName ('COUNT').AsInteger。

    【讨论】:

    • 等一下。那是连字符吗?应该是等号。
    • 使用 count(*) 作为字段名
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多