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

いつもお世話になっております。
早速ですがAccess(初心者です)での質問です。

以下のようなテーブルがあります。

ID|番号(1)|番号(2)|実績
1 |113355 |AA| 152
2 |112211 |VV| 27
3 |112222 |VV| 90
4 |113355 |CX| 8
5 |112222 |SD| 110
………………・・・(以下略)

番号(1)が同じなら、番号(2)を"/"で区切り、連結して
別のテーブルを作成しようとしています。

ID|番号(1)|番号(2)
1 |113355 |AA/CX
2 |112211 |VV
3 |112222 |VV/SD
………………・・・
が、なかなか良い方法が思いつきません。
皆様のお力を貸してください。どうぞ宜しくお願いいたします。

A 回答 (2件)

VBAを使って、レコードを1件ずつ読み込んで書き込むというやり方が良いんじゃないかと思います。



考え方としては、

元のテーブルで番号(1)を基準に並べ替えをする
元のテーブルの最初のレコードから順に番号(1)の値を比較しながら番号(2)を書き込んでいくようにする

手作業でやるとしたら、

元のテーブルをそのままコピーする
番号(1)で並べ替えをする
レコードを見ながら番号(2)を書き換える
番号(2)が書き終わったら番号(1)のダブっているレコードを削除する
    • good
    • 0

趣旨がずれますが、



まず、元のテーブルからクエリーを使って番号1に対して集計します。(番号1に対しての重複を省きます)・・・クエリー1とします。

このクエリー1を親としてフォームなり、レポートなりを作成します。

それらに、元のテーブルを持つサブフォーム/サブレポート作成して、番号1でリンクすれば番号1に対する番号2のリストができ、実績の集計も可能になります。

番号2がもともと何に使われるのかその後の実績が何を意味するのかわかりませんが、レコードとして扱えるようにしておいた方がデータの利用価値が上がります。

あとは、#1さんの用にコードを書かないと解決しないかもです。

クエリーの項目として下記関数を割り当ててください。

Function NO2(NO1 As String) As String

Dim cdb As Database
Dim rst As Recordset
Dim tmp As String
Dim sqlstr As String

tmp = ""

Set cdb = CurrentDb
Set rst = cdb.OpenRecordset("元のテーブル名", dbOpenDynaset)

sqlstr = "[番号(1)] = '" & NO1 & "'"

rst.FindFirst sqlstr
If Not rst.NoMatch Then
tmp = rst![番号(2)]
rst.FindNext sqlstr
End If

While (Not rst.NoMatch)

tmp = tmp & "/" & rst![番号(2)]

rst.FindNext sqlstr

Wend

NO2 = tmp

rst.Close
cdb.Close

End Function


でもこれすごい遅いですよきっと^^;;
    • good
    • 1
この回答へのお礼

ykmtk さま、keikan さま、アドバイスありがとうございました。

番号(1) = Trim(tb1![番号(1)])
番号(2) = Trim(tb1![番号(2)])
tb1.MoveNext
Do
番号(1') = Trim(tb1![番号(1)])
If 番号(1) = 番号(1') Then
'If 番号(2') <> Trim(tb1![番号(2)]) Then
番号(2') = Trim(tb1![番号(2)])
If 番号(2') <> 番号(2) Then
'番号(2') = Trim(tb1![番号(2)])
If 番号(2') <> "" Then
番号(2) = 番号(2) & "/" & 番号(2')
Else
番号(2) = 番号(2)
End If
End If
Else
tb2.AddNew
tb2![番号(1)] = 番号(1)
tb2![番号(2)] = 番号(2)
tb2.Update
番号(1) = 番号(1')
番号(2) = Trim(tb1![番号(2)])
End If
tb1.MoveNext
Loop Until tb1.EOF
tb2.AddNew
tb2![番号(1)] = 番号(1)
tb2![番号(2)] = 番号(2)
tb2.Update

とし、tb2への転記ができました。
どうもありがとうございました。

お礼日時:2005/01/18 10:15

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A