在delphi 7中使用unidac时,计算字段为空

时间:2015-04-28 20:25:48

标签: delphi delphi-7 unidac

我在Delphi 7项目中使用unidac组件连接到SQLite数据库。 除计算字段外,连接和查询工作正常。

我的疑问是:

select  c.CardID,
    c.FirstName,
    c.SurName,
    c.Street,
    c.City,
    c.PostCode,
    c.Points,
    (select count(1) from FullCard f where f.CardID = c.CardID and f.Paid = 1) as PaidCards,
    (select count(1) from FullCard f where f.CardID = c.CardID and f.Paid = 0) as OpenCards,
    (select count(1) from FullCard f where f.CardID = c.CardID) as FullCards
from    Card c

当我在SQLiteStudio中运行它时,此查询返回正确的结果集,但是当我在delphi中运行它时,计算字段都是空的。

Delphi 7的unidac版本为5.0.1 我有一个UniConnection组件和一个UniQuery组件。连接属性似乎正确,因为我可以从数据库连接和查询 UniQuery组件具有填充了上述查询的SQL属性,并且所有字段都是持久的 当我执行UniQuery1.Open时,DBGrid会填满所有记录,但PaidCards,OpenCards和FullCards字段都是空的。
在SQLiteStudio中执行时,相同的查询会返回正确填充的这些字段,因此我猜测查询本身没有任何问题。

我希望其他人遇到同样的问题,可以指出我解决这个问题的方法。

1 个答案:

答案 0 :(得分:1)

此错误的解决方法是不使用持久字段。 当我不创建持久字段时,所有字段都被正确填充,一切都很完美。 只有垮台我必须使用query1.FieldByName(' FirstName')。asString代替我的代码中的query1FirstName.asString。