回答編集履歴

5

別案追加

2019/02/18 15:57

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -47,3 +47,71 @@
47
47
  DJoinよりは、たぶん高速だと思います。
48
48
 
49
49
  実データで検証した結果を出来れば教えてほしいです。
50
+
51
+
52
+
53
+ 別案
54
+
55
+ ---
56
+
57
+ 上記の更新クエリは、先頭レコードから順次処理されていくということが前提になります。
58
+
59
+ いろいろ、検証してみた限りでは問題ないようですが、保証できるかといわれると断言はできないので、
60
+
61
+ DAOかADOで更新するほうが確実かも。
62
+
63
+
64
+
65
+ ```vba
66
+
67
+ Public Sub UpdateOrd()
68
+
69
+ Dim strSQL As String
70
+
71
+ strSQL = "SELECT 価格, 並び FROM T_Test " & _
72
+
73
+ "ORDER BY 日付, 商品ID, 仕入先id;"
74
+
75
+ Dim rs As DAO.Recordset
76
+
77
+ Set rs = CurrentDb.OpenRecordset(strSQL)
78
+
79
+
80
+
81
+ Dim strOrd As String, i As Long
82
+
83
+ Do Until rs.EOF
84
+
85
+ For i = 1 To 6
86
+
87
+ strOrd = strOrd & (rs!価格 \ 100)
88
+
89
+ rs.MoveNext
90
+
91
+ Next
92
+
93
+ rs.Move -6
94
+
95
+ For i = 1 To 6
96
+
97
+ rs.Edit
98
+
99
+ rs!並び = strOrd
100
+
101
+ rs.Update
102
+
103
+ rs.MoveNext
104
+
105
+ Next
106
+
107
+ strOrd = ""
108
+
109
+ Loop
110
+
111
+ rs.Close
112
+
113
+ End Sub
114
+
115
+ ```
116
+
117
+ 仕入先は1~6で100%固定、抜けはない、という前提です。

4

参考リンクの追加

2019/02/18 15:57

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -34,6 +34,10 @@
34
34
 
35
35
 
36
36
 
37
+ [複数の文字列置換をクエリで一気に実行する-改良版 - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-458.html)
38
+
39
+
40
+
37
41
  追記
38
42
 
39
43
  ---

3

コード修正

2019/02/18 14:36

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  SELECT T2.価格\100 AS X, T1.並び
10
10
 
11
- FROM T_Test AS T1 INNER JOIN TERA175064 AS T2
11
+ FROM T_Test AS T1 INNER JOIN T_Test AS T2
12
12
 
13
13
  ON T1.日付 = T2.日付 AND T1.商品ID = T2.商品ID
14
14
 

2

コード修正

2019/02/18 14:27

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  UPDATE (
8
8
 
9
- SELECT T2.価格/100 AS X, T1.並び
9
+ SELECT T2.価格\100 AS X, T1.並び
10
10
 
11
11
  FROM T_Test AS T1 INNER JOIN TERA175064 AS T2
12
12
 

1

追記

2019/02/18 13:40

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -31,3 +31,15 @@
31
31
 
32
32
 
33
33
  [更新クエリで定義域集計関数を使わずに集計する - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-350.html)
34
+
35
+
36
+
37
+ 追記
38
+
39
+ ---
40
+
41
+ のんびり検証しながら回答を作成していたら、解決済みになっちゃいましたが、
42
+
43
+ DJoinよりは、たぶん高速だと思います。
44
+
45
+ 実データで検証した結果を出来れば教えてほしいです。