質問: データ処理に関する質問(access vbaーdao) accessvba初心者です。いつもお世話なっております。 環境 osーxpsp2 office2003 テーブル1とテーブル2あって、テーブル1にデータはいってます。テーブル2は空です。 access vba daoで テーブル1のデータの[店名]、[氏名]を テーブル2に横に追加していきたいです。 テーブル2 構造 id(オートナンバー) [店名]1 [氏名]1 [店名]2 [氏名]2 --------------------------------------------------------- テーブル1のデータ id(オートナンバー) [店名] [氏名] 1 a aさん 2 b bさん 3 c cさん 4 d dさん ----------------------------------------------------- 結果 テーブル2 id(オートナンバー) [店名]1 [氏名]1 [店名]2 [氏名]2 1 a aさん b bさん 2 c cさん d dさん access vbaでの書く方 教えてください。宜しくお願い足します。
回答: > すこし説明のほうお願いできますか。 > if (iflg = 0) then > rsto.addnew > rsto("店名1") = rsfrom("店名") > rsto("氏名1") = rsfrom("氏名") > else > rsto("店名2") = rsfrom("店名") > rsto("氏名2") = rsfrom("氏名") > end if > iflg = 1 - iflg > if (iflg = 0) then > rsto.update > end if > rsfrom.movenext > wend > if (iflg <> 0) then > rsto.update > end if では、拙い説明になりますが上記部分について以下に。 iflg は、0か1を取るようにしています。 iflg = 1 - iflg これで、0、1を反転させています。 0の場合、rsto.addnew 処理し、iflg を1に 1の場合、既に rsto.addnew しているので、代入だけし、iflg を0に 代入処理(前半のif)後、iflg が0の場合、2つの処理が終わっているので rsto 側を確定(update) while を抜けた後、iflg が0でなければ、奇数レコードを処理して確定していない状態なので update ※ この書き方にしていると、後の修正が楽です(私にとっては) 例えば、店名3, 氏名3 をテーブル2に追加して3組の列にしたいとなった場合、 > if (iflg = 0) then > rsto.addnew > rsto("店名1") = rsfrom("店名") > rsto("氏名1") = rsfrom("氏名") > else > rsto("店名2") = rsfrom("店名") > rsto("氏名2") = rsfrom("氏名") > end if > iflg = 1 - iflg ↓以下の変更で対処できます(★部分変更) > if (iflg = 0) then > rsto.addnew > rsto("店名1") = rsfrom("店名") > rsto("氏名1") = rsfrom("氏名") else if (iflg = 1 ) then ' ★ > rsto("店名2") = rsfrom("店名") > rsto("氏名2") = rsfrom("氏名") > else rsto("店名3") = rsfrom("店名") ' ★ rsto("氏名3") = rsfrom("氏名") ' ★ > end if iflg = (iflg + 1) mod 3 ' ★ この場合 iflg は、0,1,2の値をとります。