抱歉,我对 DbGrids 很陌生。
我是否应该使用查询的字段编辑器并以某种方式添加一个捕获 TIMEDIFF 的新字段,然后将其添加为我的 DbGrid 中的列?
或者我可以/应该跳过字段编辑器并以某种方式将 TIMEDIFFF 声明为列?
对于这个表,我想要一个有 4 列的 DbGrid:开始时间、结束时间、持续时间、描述(run_id 是主键,不会显示)。
我对如何将数据放入“持续时间”列感到困惑......
mysql> describe test_runs;
+------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+----------------+
| run_id | int(11) | NO | PRI | NULL | auto_increment |
| start_time_stamp | timestamp | YES | | NULL | |
| end_time_stamp | timestamp | YES | | NULL | |
| description | varchar(64) | YES | | NULL | |
+------------------+-------------+------+-----+---------+----------------+
4 rows in set (0.37 sec)
[更新]数据源的查询是
SELECT start_time_stamp,
end_time_stamp,
TIMEDIFF(end_time_stamp, start_time_stamp) as duration,
description
FROM test_runs ORDER BY start_time_stamp DESC
当我在 MySql 中手动执行它时,我得到
mysql> select TIMEDIFF(end_time_stamp, start_time_stamp) as duration FROM
+----------+
| duration |
+----------+
| NULL |
| 00:04:43 |
| 00:00:13 |
| 00:00:06 |
| 00:00:04 |
+----------+
5 rows in set (0.00 sec)
但数据库网格中的相应列保持空白。任何人都可以帮忙吗?谢谢。
[更新] 如果有帮助,我正在使用 AnyDac。当我使用 AnYDac 查询编辑器并执行它时,该查询会在 MySql 和 Delphi IDE 中生成所有字段,包括时差。
唯一的问题是我在运行时在数据库网格中看不到它。我在设计时双击数据库网格,列是正确的。该FielName
属性设置为duration
,由上面显示的查询重新调整。它在数据库中不存在,而是通过查询计算出来的;这可能是问题所在吗?
[Aaaaaaaargh !!!] 有人试图“改进”我的代码并在运行时以编程方式设置查询的文本(如SELECT * FROM test_runs)
,从而覆盖了我的设计时查询!!由于数据库表没有duration
字段,因此在数据库网格。
话已经说了,声音也提高了,现在我必须为浪费你的时间而道歉。对不起。