プロが教えるわが家の防犯対策術!

もし、お分かりの方がいらっしゃれば
ご協力のほど、お願いします。

今現在、あるデータの集計を行い、それらを最終的に
指定された数でわり、割った数の分および余った数だけ
レコードに追加したいのです。

A|B|C
1|2|3
2|3|2

Cに入っている
A|B|C
1|2|3
1|2|3
1|2|3
2|3|2
2|3|2

といった次第です。上記のような場合はVBAで
行うしかないのでしょうか?
もし上記のような方法を行っている方がいらっしゃいましたら
ご指導のほど、お願いします

A 回答 (3件)

>指定された数でわり、割った数の分および余った数だけレコードに追加したい


>Cに入っている・・
理解しにくいのですが・・Cにある値が追加したいレコード数なのでしょうか?それとも#1の方が回答しているように除算し剰余の値を求めてその値により同じレコードを追加する数とするのでしょうか?定かではありませんが。
質問を見るとCに剰余の値がありその数で同一レコードを追加ととれるので。
VBでやるには
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cnt As Integer
rs.Open "テーブル名", cn, adOpenKeyset, adLockOptimistic
Do Until rs.EOF
レコード数 = rs.C
 Do Untile If cnt <> レコード数 Then
'レコードを追加する記述を書く
End If
Loop
rs.MoveNext
Loop
 ・
ざっとですが大まかに書きましたがこんな感じで良いとおもいます。
それ以外に・・もっと簡単な方法。
テーブルのCがレコード数とした場合もっと簡単にできます。(テーブルを一つ別に作りますが)
Cに入る値より大きい数字があるテーブルを作ります。
例えばCountテーブルとします。フィールドはcntとします。
cntに数字を順に入力します。(Cに入る数字より多く)
cnt
 1
 2
 3


10  のように入力しておきます。
A|B|C
1|2|3
2|3|2 のテーブルのクエリを作ります。
そのクエリにテーブル追加でCountテーブルを追加します。
CountテーブルのCntをクエリにフィールドに追加して抽出条件に<=[C]と記述してください。
このクエリを開けばCの数値によってその数だけ同一のレコードを表示できます。クエリを開けばすぐ確認できます。
このクエリを追加クエリにして2番目のテーブルに追加すれば
A|B|C
1|2|3
1|2|3
1|2|3
2|3|2
2|3|2
のように追加できます。
    • good
    • 0
この回答へのお礼

上記ご指定のクエリーで
成功しました。
ありがとうございます。

お礼日時:2006/01/24 22:51

O_cyanさん



2番目の方法、思いもつきませんでした。  簡潔できれいです。 これなら誰でも簡単にできそうですね。 参考になりました。
    • good
    • 0

>それらを最終的に指定された数でわり、割った数の分および余った数だけ



例えば、集計が7で指定された数が3であったら、4件の同じレコードを追加したいという意味でしょうか?

私にはVBAにて処理するしか思いつきません。 手順としては、

(1)集計クエリを実行させ、仮テーブルに書き出す。
(2)仮テーブルを開き、レコードを一件ずつ開き、テーブルに必要な項目を追加していく。

追加する数をを求めるためには以下の式で求められます。(x=指定された数)

([集計] mod x) + x

()は不要ですが分かりやすくするために書いてあります。

追加クエリを作ってVBAから実行させるよりは、ADOなどでいっぺんに処理させるほうが、作るのはらくだと思います。 

この回答への補足

回答が遅れて申し訳ありません。
質問内容に一部誤りがありました。
集計したデータの数値だけ
データを増やす方法でした。

その前に行う集計方法についてVBAを知らない人に
説明するためにクエリーを用いて作成し説明しており、
その箇所も合わせて質問してしまいあいまいなことと
なりました。

申し訳ありません。

補足日時:2006/01/24 22:38
    • good
    • 0
この回答へのお礼

補足に記載したとおり、
間違った質問をしてしまい
申し訳ないです。
しかしすばやい回答に感謝します。

お礼日時:2006/01/24 22:53

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