回答編集履歴
2
修正
test
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
T_伝票, T_連番
|
26
26
|
WHERE
|
27
27
|
Mid([伝票番号],[連番]*6-5,5)<>""
|
28
|
-
ORDER BY
|
28
|
+
ORDER BY
|
29
29
|
管理番号, 連番;
|
30
30
|
```
|
31
31
|
|
1
別案追記
test
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
まず下記のような連番の格納されたテーブルを作成します。連番は1レコードに含まれる単票番号の最大数まで入力してください。
|
7
7
|
|
8
|
-
T_連番
|
8
|
+
**T_連番**
|
9
9
|
|
10
10
|
|連番|
|
11
11
|
|:--:|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
```SQL
|
22
22
|
SELECT
|
23
|
-
管理番号, Mid([連番]*6-5,5) AS 単票番号
|
23
|
+
管理番号, Mid([伝票番号],[連番]*6-5,5) AS 単票番号
|
24
24
|
FROM
|
25
25
|
T_伝票, T_連番
|
26
26
|
WHERE
|
@@ -29,5 +29,22 @@
|
|
29
29
|
管理番号, 連番;
|
30
30
|
```
|
31
31
|
|
32
|
+
VBAでユーザ定義関数を作成して利用する例
|
33
|
+
---
|
34
|
+
saziさんの回答のユーザ定義関数を拝借して(私が作成してもほぼ同じになるので)、
|
35
|
+
上記の**T_連番**を使用したサンプルです。
|
36
|
+
このような連番テーブルを利用するとUNIONを使用せずに同様のことができます。
|
37
|
+
余分のテーブルが一つ増えるというデメリットはありますが、一つ作成しておく他でもいろいろ流用できます。
|
38
|
+
|
39
|
+
```SQL
|
40
|
+
SELECT
|
41
|
+
管理番号, MySplit([伝票番号],"/",[連番]-1) AS 単票番号
|
42
|
+
FROM
|
43
|
+
T_伝票, T_連番
|
44
|
+
WHERE
|
45
|
+
MySplit([伝票番号],"/",[連番]-1) Is Null
|
46
|
+
ORDER BY**ボールドテキスト**
|
47
|
+
管理番号, 連番;
|
48
|
+
```
|
32
49
|
|
33
50
|
|