アクセスであらかじめcodeと数量の定義されたテーブルがあるとします。
ここの数量分のcodeを新しいテーブルに追加するにはどうすれば良いでしょうか?
(例)a 5 → a a a a a (ちなみにレコードでは5つ追加)
VBAは詳しくありませんので、よろしくお願い致します。
>どうすれば良いでしょうか?
まず、数量とコードを取得し、
数量の数だけループ(For〜Nextなど)させて
1件づつINSERTしていきます。
Recordsetの扱い方 と、
SQLにおけるINSERT文の書き方 もしくは、Accessなら追加クエリでも可
をヘルプで調べてみてください。
accessの追加クエリで作る方法をもう少し詳しく教えてもらえませんか?
数量とコードの取得方法などなど
>ヘルプで調べてみてください。
と書いたはずですが。
http://hp.vector.co.jp/authors/VA002739/admin/20031228.htm
釣り竿としては、
DLookup()
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=VBA+Recordset&num=50
>もげ 様
早い回答アドバイスありがとうございます。
ヘルプは一応確認したんですが、不明だったもので申し訳無いです。
ヒントを参考に考えてみます。この問題は6ヶ月位悩んでいたもので、
すぐにわかれば助かると、安易に考えていました。
>ヘルプは一応確認したんですが、不明だったもので申し訳無いです。
この場合、
どこがどのように判らないのか具体的に要点を絞って質問してもらえれば
回答が得られる可能性が高いですが、
「まったく判らないんで丸投げ」
だと回答の余地が(釣り方の教えようが)無いです。
確認ですが、
> (例)a 5 → a a a a a (ちなみにレコードでは5つ追加)
というのは、
元テーブル(コード、数量)が
a 5
b 3
c 1
だったら、
結果テーブル(コード) は、
a
a
a
a
a
b
b
b
c
となればいいのですよね?
であれば、この辺をじっくり読んで試してみれば、
自ずと解けそうに思います。
http://www.geocities.jp/cbc_vbnet/DAO/recordidou.html
結果はそうです。
現在、はっきりしているのは1レコードずつ数量の値を変数に代入
その後変数が0で無い場合、結果テーブルにcodeを追加し0になるまで-1していき
0になった状態で次のレコードへ移動する。
という流れで可能なはずなのですが、
どうすればいいのか 不明です。
code追加は追加クエリで可能までは、はっきりしています。
vbはまったくの初心者です。
>どうすればいいのか 不明です。
実際にコード書いて試してみてください。
その上で疑問点を具体的に質問しましょう。
追加はこの辺でできると思いますよ。
http://www.geocities.jp/cbc_vbnet/DAO/record2.html
もうすこし だと思うのでがんばってください。
そろそろいいかな。
'検証環境:Access2000SP3 DAO3.6を参照設定
'テーブルT1,T2を用意、構造は以下に
'T1 (CODE,QTY)
'T2 (CODE)
Function vba_de_tsuika()
Dim db As DAO.Database
Dim rsIn As DAO.Recordset
Dim rsOut As DAO.Recordset
Dim lCntMax As Long
Dim lCntLoop As Long
Dim strCode As String
Set db = CurrentDb
db.Execute "DELETE FROM T2", dbConsistent
Set rsIn = db.OpenRecordset("T1", dbOpenTable)
Set rsOut = db.OpenRecordset("T2", dbOpenTable)
Do Until rsIn.BOF = True Or rsIn.EOF = True
lCntMax = rsIn.Fields("QTY").Value
strCode = rsIn.Fields("CODE").Value
For lCntLoop = 1 To lCntMax
With rsOut
.AddNew
.Fields("CODE") = strCode
.Update
End With
Next lCntLoop
rsIn.MoveNext
Loop
rsIn.Close
rsOut.Close
Set rsIn = Nothing
Set rsOut = Nothing
db.Close
Set db = Nothing
End Function
現在指導いただいた内容を勉強中です。
ありがとうございました。
考えた結果、不明な点があればまたよろしくお願いいたします。
やっと解決しました。
ツイート | ![]() |