Delphi 10.3.3FireDAC: DBGrid FDQuery MySQLVCL
大家好
我有一个表格,里面有以下字段
----------------------
| id | data |
----------------------
| 1 | 0=A;1=B;2=C |
| 2 | 2=Z |
| 3 | |
| 4 | 0=Y;1=X |
| 5 | |
| 6 | |
id
我希望在DBGRID中显示这些信息。
-----------------------
| id | C0 | C1 | C2 |
-----------------------
| 1 | A | B | C |
| 2 | A | B | Z |
| 3 | A | B | Z |
| 4 | Y | X | Z |
| 5 | Y | X | Z |
| 6 | Y | X | Z |
我现在能做的只有下面这个表。
-----------------------
| id | C0 | C1 | C2 |
-----------------------
| 1 | A | B | C |
| 2 | | | Z |
| 3 | | | |
| 4 | Y | X | |
| 5 | | | |
| 6 | | | |
为了得到这个结果,我在事件FDQuery1.BeforeOpen中创建了额外的列,而在事件OnCreateFields中,我填入了每一列,但是... ... 我不知道前一行的内容,
那么,我怎么做才能在DBgrid中填补缺失的字段呢? 谢谢Franck
OnCalcFields
FDQuery1.First是为了迫使它在FDMemTable数据可用后重新做计算字段(在最初的FDQuery1.Open期间,当然不能这样)。OnCreateFields
在FDQuery的OnCalcFields事件中,使用类似这样的代码,将计算出的字段值建立在前一行的值上(当然如果有的话,第一行不能有 "前 "行)。
在这个例子中,我的查询数据集有一个... ...
主键,计算出的值就是前一行的ContactID值。 当然,在现实生活中,使用持久化的字段变量比不断调用 .我想另一种可能是使用CloneCursor方法来获得一个查找游标来访问 "先前 "行,但我自己还没有尝试过,而且无论如何也不可能(CloneCuror副本中的计算字段会发生什么?SetTempState
CDS2.Data := CDS1.Data;