回答編集履歴
2
コメントの内容にあわせてコードを修正
answer
CHANGED
@@ -1,21 +1,38 @@
|
|
1
|
+
コメントより
|
1
|
-
>
|
2
|
+
> レコードソースは支援日誌。
|
3
|
+
>
|
4
|
+
> フィールドは、
|
5
|
+
>
|
6
|
+
> ID,利用日付、利用者名、開始時間、終了時間、今日の作業、今日の作業(補足)、今日の体調、今日の特記、記入者、タイムスタンプ、押印
|
2
7
|
|
3
|
-
|
8
|
+
> 同じ名前の利用者名レコードを集め、降順で利用日付で並べ替えし、直近5件分だけを表示したい。
|
4
|
-
だとしたら、下記のような感じで可能です。
|
5
9
|
|
6
|
-
|
10
|
+
詳細セクションにコマンドボタンが配置してあり、そのボタンをクリックすると、クリックしたレコードと同じ利用者名で抽出して直近5件を表示する。コマンドボタン名は、cmd直近5件 とします。
|
7
11
|
|
12
|
+
|
8
13
|
```vba
|
14
|
+
Private Sub cmd直近5件_Click()
|
9
15
|
Dim stFilter As String
|
10
16
|
Dim stSort As String
|
11
|
-
stSort = "
|
17
|
+
stSort = "利用日付 DESC"
|
12
|
-
stFilter = "
|
18
|
+
stFilter = "利用者名='" & Me.利用者名 & "'"
|
13
19
|
|
14
|
-
Me.Filter = "ID In (SELECT TOP 5 ID FROM
|
20
|
+
Me.Filter = "ID In (SELECT TOP 5 ID FROM 支援日誌 WHERE " & _
|
15
21
|
stFilter & " ORDER BY " & stSort & ")"
|
16
22
|
Me.FilterOn = True
|
17
23
|
Me.OrderBy = stSort
|
18
24
|
Me.OrderByOn = True
|
25
|
+
End Sub
|
19
26
|
```
|
20
27
|
|
21
|
-
FilterプロパティにはSQLのWHERE句に相当する条件式を設定できます。ということはサブクエリも使用可能です。サブクエリで、TOP 5 を使って先頭5件を抽出して、その結果をIn演算子で比較して抽出します。
|
28
|
+
FilterプロパティにはSQLのWHERE句に相当する条件式を設定できます。ということはサブクエリも使用可能です。サブクエリで、TOP 5 を使って先頭5件を抽出して、その結果をIn演算子で比較して抽出します。
|
29
|
+
|
30
|
+
補足
|
31
|
+
---
|
32
|
+
Excelは表計算ソフト、Accessはリレーショナルデータベース(略してRDB)ソフト、まったく別のものです。
|
33
|
+
|
34
|
+
RDBではSQLが必須です。Accessは初心者向けにSQLが分からなくてもクエリでビジュアルな操作でデータ操作ができます。しかし、クエリの中身はSQLです。SQLビューで確認できます。
|
35
|
+
|
36
|
+
最初のうちはクエリでのデータ操作を学習しましょう。クエリを作成したら、SQLビューにしてどのようなSQLになっているか確認しましょう。そのうちなんとなく雰囲気が分かるようになってきますので、それからSQLの学習を始めるといいでしょう。
|
37
|
+
|
38
|
+
クエリだけではできることに限界がありますので、使いこなすうちにSQLは必要になってきます。
|
1
説明の修正
answer
CHANGED
@@ -18,4 +18,4 @@
|
|
18
18
|
Me.OrderByOn = True
|
19
19
|
```
|
20
20
|
|
21
|
-
FilterプロパティにはSQLのWHERE句に相当する条件式を設定できます。ということはサブクエリも使用可能です。サブクエリで、TOP 5 を使って先頭5件を抽出して、そのIn演算子で
|
21
|
+
FilterプロパティにはSQLのWHERE句に相当する条件式を設定できます。ということはサブクエリも使用可能です。サブクエリで、TOP 5 を使って先頭5件を抽出して、その結果をIn演算子で比較して抽出します。
|