hatena
hatena
2021/06/19 (土) 17:33:37
最初に紹介した連番入力する方法を提示しておきます。(ちょっと修正してます。)
まず、テーブル「表1」に数値型のフィールドを追加します。フィールド名は「Seq」とします。
次に、リンク先から、「グループ毎の連番を入力する関数」をコピーして標準モジュールに貼り付けます。
表1のデータを更新したときに、下記のコードを実行します。入力フォームの更新後処理にでも実行するといいでしょう。
SetSequenceNumber "Seq", "表1", "Event,E_Cond", "E_Time"
下記のようなクロス集計クエリを作成します。名前は「Q1」とします。
TRANSFORM First(E_Time)
SELECT EVENT, Seq
FROM 表1
GROUP BY EVENT, Seq
PIVOT E_Cond;
このクエリからさらに下記のクエリを作成します。
SELECT EVENT, START, END, DateDiff("s",START,END) AS DURATION
FROM Q1
ORDER BY START, EVENT;
クエリ2つ、使ってますが、サブクエリを使って一つに纏めることもできます。
クエリはかなり高速になると思います。
100万レコードだと連番入力のコードの実行に時間がかかるかも知れません。その場合は、更新したレコードのEVENTのみを抽出して連番入力するようにするといいでしょう。
表1の入力フォームの更新後処理で実行するとして、下記のようなコードになります。
SetSequenceNumber "Seq", "表1", "Event,E_Cond", "E_Time", "EVENT='" & Me.EVENT & "'"
通報 ...