アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESSにおいて、あるテーブルのフィールド1に1001、1003と2つのレコードが入っています。フィールド2にははじめは何も値は入っていません。

フィールド1 フィールド2
1001
1003

となりのフィールド2にフィールド1の値1つに対して100個の連番を
作成したいのですが、どのような方法が考えられますでしょうか?

フィールド1 フィールド2
1001     100100
1001     100101
1001     100102
…      …
1001     100199
1003     100300
1003     100301
1003     100302
…      …
何分初心者なもので、おわかりの方がいらっしゃいましたらぜひご教授お願い致します。

A 回答 (4件)

> テーブル2へ00から99まで連番を作るには


エクセルで0~99の連番をA列にオートフィルで作ります。
で作ったセル範囲をコピーします。
Accessに戻ってテーブルのレコードセレクタの*印のような物を左クリック
次に右クリックで貼り付けを選ぶと出来ます。

がそうせずとも、No2さんの応用で
テーブル名 T1
フィールド名をF1、F2 とします。
F1    F2
1001
1002
・・・
連番の種になるテーブルを新たに作成し
テーブル名 T2
フィールド名をF1 として
0
1

9
までの値を入れたレコードを作ります。(0~9 位は手入力でやってね)
フィールドのデータ型は全て数値型にします(T1、T2とも)

クエリを新たに作成します
デザインビューで、T1を一回、T2を三回ドラッグして入れます。
そうすると
T1  T2  T2_1  T2_2 とT2のテーブル名は自動的に変わります
※結合線は全く引きません!
インターネット上で「直積」や「デカルト積」をキーに調べてね
デザイングリッドのフィールド名にT1のF1フィールドをドラッグして入れます。
つぎに隣のフィールドに下記のように記述します(取りあえずコピペで)
F2: Val(Str([T1].[F1]) & Str([T2].[F1]) & Str([T2_1].[F1]) & Str([T2_2].[F1]))
並び替えを昇順にします
データシートビューに切り替えるとお望みのものが現れると思います。
上記の式は、数値型をStr関数で文字列に変更して連結、さらにそれをVal関数で
数値型に戻しています。
クエリの内容はSqlビューだと↓
SELECT T1.F1, Val(Str([T1].[F1]) & Str([T2].[F1]) & Str([T2_1].[F1]) & Str([T2_2].[F1])) AS F2
FROM T1, T2, T2 AS T2_1, T2 AS T2_2
ORDER BY Val(Str([T1].[F1]) & Str([T2].[F1]) & Str([T2_1].[F1]) & Str([T2_2].[F1]));

後はこのクエリの種類ををテーブル作成クエリに変更して実行すれば
新たなテーブルの出来上がり。
書くと長いですが数分で完成まで漕ぎ着けると思います。
    • good
    • 0

#1です。


>あるテーブルのフィールド1に1001、1003と2つのレコードが入っています。

2種類のデータが入っているという意味ではなく、2レコードしかないのですね。読み違えていました。


>テーブル2へ00から99まで連番を作るには何か関数のようなもので作れるのでしょうか?

予めテーブル2を作って置いてください。
新規のモジュールを追加して下記をコピペ。
F5で実行。

Sub 連番作成()
 Dim i As Integer
 DoCmd.SetWarnings False
 For i = 0 To 99
  DoCmd.RunSQL "insert into テーブル2 select """ & Format(i, "00") & """ as フィールド1;"
 Next
 DoCmd.SetWarnings True
End Sub
    • good
    • 0

(両方とも、フィールドのデータ型を「テキスト」にして)


 テーブル1
フィールド1
1001
1003

 テーブル2
フィールド1
00
01
02
03
04
・・・
99
の2つテーブルを作成し、
下記ビューを作成してみて下さい。
ビューのクエリ
SELECT テーブル1.フィールド1,テーブル1.フィールド1&テーブル2.フィールド1 AS フィールド2
FROM テーブル1, テーブル2
ORDER BY テーブル1.フィールド1&テーブル2.フィールド1;

でいかがですか?

この回答への補足

テーブル2へ00から99まで連番を作るには何か関数のようなもので作れるのでしょうか?
それができるととても便利なのですが…

補足日時:2006/12/10 12:24
    • good
    • 0

フィールド1には1001が重複していますが、どのレコードを100100にすればいいのか分かりません。



まずどういう順番に並べて、連番を付けるのか?これを決める必要があります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!