申し訳ありませんが、私はDbGridsを初めて使用します。
クエリのフィールドエディタを使用して、TIMEDIFFをキャプチャする新しいフィールドを追加し、それをDbGridの列として追加する必要がありますか?
または、フィールドエディタをスキップして、どういうわけかTIMEDIFFFを列として宣言できますか?
このテーブルでは、開始時刻、終了時刻、期間、説明の4つの列を持つDbGridが必要です(run_idは主キーであり、表示されません)。
「duration」列にデータを取得する方法について困惑しています...
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)
ただし、DBグリッドの対応する列は空白のままです。誰か助けてもらえますか?ありがとう。
[更新]それが助けになるなら、私はAnyDacを使用しています。クエリは、AnYDacクエリエディタを使用して実行すると、MySqlおよびDelphiIDEで時差を含むすべてのフィールドを生成します。
唯一の問題は、実行時にDBグリッドに表示されないことです。設計時にDBグリッドをダブルクリックすると、列が正しくなります。FielName
プロパティはに設定され、上記duration
のクエリによって再調整されます。データベースには存在しませんが、クエリによって計算されます。それはどういうわけか問題でしょうか?
[Aaaaaaaargh !!!]誰かが私のコードを「改善」し、実行時にプログラムでクエリのテキストを設定しようとしました(SELECT * FROM test_runs)
したがって、設計時のクエリを上書きします!!データベーステーブルにduration
フィールドがないため、何も表示されませんでしたDBグリッド。
言葉が出て、声が上がって、今はあなたの時間を無駄にしてしまったことをお詫びしなければなりません。ごめん。