我在Delphi7项目中使用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中运行它时,Calculated字段都是空的。
unidac版本是Delphi 7的5.0.1。
我有一个UniConnection组件和一个UniQuery组件。连接属性似乎是正确的,因为我可以从数据库进行连接和查询
UniQuery组件具有用上述查询填充的SQL属性,并且所有字段都是持久的
当我执行UniQuery1.打开一个DBGrid时,它会填充所有记录,但字段PaidCards、OpenCards和FullCards都是空的
在SQLiteStudio中执行时,同一个查询确实返回了正确填充的这些字段,所以我想查询本身没有问题。
我希望其他人也遇到了同样的问题,并能为我找到解决这个问题的方法。
解决此错误的方法不是使用持久字段。当我不创建持久字段时,所有字段都会被正确填充,并且一切都很完美。唯一的缺点是我必须在代码中使用query1.FieldByName('FirstName').asString而不是query1FirstName.asString。