ACCESS2003の質問です。

テーブル1のようにフィールドに重複したデータがあり、
そのデータの頭に、重複したデータごとに
01から始まる2桁の連番を付けて
テーブル2を完成させたいです。
VBAでの処理方法を教えてください。

テーブル1

フィールド1

A002
A002
A002
A002
B265
B265
B265
B265
B265
B265
B265
B265
B265
B265
B265
G803
G803

テーブル2

フィールド1

01A002
02A002
03A002
04A002
01B265
02B265
03B265
04B265
05B265
06B265
07B265
08B265
09B265
10B265
11B265
01G803
02G803

回答の条件
  • 1人2回まで
  • 登録:2009/07/16 13:56:38
  • 終了:2009/07/23 14:00:02

回答(1件)

id:frkw2004 No.1

ふるるP回答回数192ベストアンサー獲得回数212009/07/16 14:31:46

ポイント60pt

いろいろ方法はありますが、とりあえず。

Sub hoge()

Dim oRS As adodb.Recordset

Dim sVal As String

Dim SQL As String

Dim i As Integer

'入力用レコードセット

Set oRS = CurrentProject.Connection.Execute("Select * from [テーブル1] order by [フィールド1]")

'初期値

sVal = oRS.Fields(0)

i = 1

'1件目を登録

SQL = "Insert into [テーブル2] Values('01" & sVal & "')"

CurrentProject.Connection.Execute SQL

oRS.MoveNext

Do Until oRS.EOF

If sVal = oRS.Fields(0) Then

       '同じ場合

i = i + 1

Else

       '前のレコードと違うので新規に1から開始

i = 1

sVal = oRS.Fields(0)

End If

'登録

SQL = "Insert into [テーブル2] Values('" & Format(i, "00") & sVal & "')"

CurrentProject.Connection.Execute SQL

oRS.MoveNext

Loop

oRS.Close

End Sub

エラー処理を入れていませんが、実際には入れたほうがいいです。

行のブレイク処理(前の行のデータを取っておいて、今の行のデータと比べる)という方法はアルゴリズムとして基本なので覚えておきましょう。

id:rupopon

ありがとうございました。やってみます。

2009/07/16 14:45:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません