• ベストアンサー

access2000のレコード追加方法

もし、お分かりの方がいらっしゃれば ご協力のほど、お願いします。 今現在、あるデータの集計を行い、それらを最終的に 指定された数でわり、割った数の分および余った数だけ レコードに追加したいのです。 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で 行うしかないのでしょうか? もし上記のような方法を行っている方がいらっしゃいましたら ご指導のほど、お願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>指定された数でわり、割った数の分および余った数だけレコードに追加したい >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 のように追加できます。

hjrimkgfidf
質問者

お礼

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

その他の回答 (2)

noname#60992
noname#60992
回答No.3

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

noname#60992
noname#60992
回答No.1

>それらを最終的に指定された数でわり、割った数の分および余った数だけ 例えば、集計が7で指定された数が3であったら、4件の同じレコードを追加したいという意味でしょうか? 私にはVBAにて処理するしか思いつきません。 手順としては、 (1)集計クエリを実行させ、仮テーブルに書き出す。 (2)仮テーブルを開き、レコードを一件ずつ開き、テーブルに必要な項目を追加していく。 追加する数をを求めるためには以下の式で求められます。(x=指定された数) ([集計] mod x) + x ()は不要ですが分かりやすくするために書いてあります。 追加クエリを作ってVBAから実行させるよりは、ADOなどでいっぺんに処理させるほうが、作るのはらくだと思います。 

hjrimkgfidf
質問者

お礼

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

hjrimkgfidf
質問者

補足

回答が遅れて申し訳ありません。 質問内容に一部誤りがありました。 集計したデータの数値だけ データを増やす方法でした。 その前に行う集計方法についてVBAを知らない人に 説明するためにクエリーを用いて作成し説明しており、 その箇所も合わせて質問してしまいあいまいなことと なりました。 申し訳ありません。

関連するQ&A

  • Accessで最終レコードの削除について

    Accessで新規レコードを作成しないで最終レコードを削除したいのですが、方法をご存知でしたら教えて頂けないでしょうか。 現状は次の通りです。 レコード データ 1000   A 1001   B 1002   C ←最終レコード ※マクロで1002のレコードを削除すると レコード データ 1000   A 1001   B 1002   空白のレコード ←最終レコード となってしまいますが、これを レコード データ 1000   A 1001   B ←最終レコード としたいのです。 ちなみに最終ではない1001のレコードを削除すると レコード データ 1000   A 1001   C ←最終レコード となり、空白の新規レコードは作成されません。

  • Access2000 / 「レコードを追加できません」

    こんにちは Access2000で困っております。 簡単にいいますと、フォーム上から日付/時刻型のデータを入力しようとしても 「レコードを追加できません、テーブル’T外部集計警備’の結合キーがレコードセットにありません。」と表示されうまく入りません。 テーブルの構成ですが、 ★が主キー (1)T現場台帳 ★NO(オートナンバー型) 現場記号(テキスト型) ・ ・ 省略 (2)T外部集計警備 ★NO(オートナンバー型) 現場記号(テキスト型) 警備依頼日付(日付/時刻型) 警備会社ID(数値型) 集計人数(数値型) (3)T警備会社 ★警備会社ID 警備会社名(テキスト型) ・ ・ 省略 上記テーブルはリレーションがかかっており、 (1)T現場台帳.現場記号(テキスト型)----(2)T外部集計警備.現場記号(テキスト型) (2)T外部集計警備.警備会社ID(数値型)---(3)T警備会社.★警備会社ID それぞれ、参照整合性のついたリレーションです。 更にこれらをまとめるために、Q警備会社集計クエリ(選択クエリ)をつくりフォームに利用しています。 Q警備会社集計クエリの構成 T現場台帳.担当者ID T外部集計警備.警備依頼日付 T外部集計経緯日.警備会社ID T警備会社.警備会社名 T外部集計警備.集計人数 (並べ替えや絞込みは、なし) この「Q警備会社集計クエリ」を使って フォームからウイザードを使用してフォームを作成し、警備依頼日付を入力しようとすると「レコードを追加できません、テーブル’T外部集計警備’の結合キーがレコードセットにありません。」と表示されます。 どなたか、Accessの痒いところまで手の届く方、お助けください。

  • ACCESSでレコードのコピー

    ACCESS初心者です。 テーブルt_Aとt_Bがあり、t_Aを元にしたフォームがあるとします。 行いたいのはこのフォームでレコードを選択しボタンをクリックして t_Aの該当レコードのフィールドの値をt_Bのフィールドにコピー(新規追加)したいのです。 追加クエリでなんとかなるかなと思ったのですが思うようなクエリが作れないのです。 アドバイスをいただけませんでしょうか。 マクロ、VBAの利用方法についてはほぼわかっております。

  • Access2000 別のレコードをテーブルに追加するには?

    既存のAというテーブルに新しく別のところからインポートしてきたBというデータを追加したいのですが、「...46件のレコードで入力規則違反が発生したため、レコードを追加できませんでした。」とエラーメッセージが出ます。無視して実行すると、Bの一部のデータがAに追加されません。 IDが一部重複しているのですが、これが原因?でもAccess95では、Bのデータにすべて新しいIDがついて追加されましたよね?

  • アクセスで重複するレコードを追加しない方法

    条件 Office97のアクセスを利用しています。 (会社のPCなので古いものしかありません) すでに作成されたデータベースがあります。 この中に、複数のテーブル・クエリ・他(フォームやマクロなど)があります。 分かる範囲でこのデータベースを触る許可はいただいています。 ただし、テーブルや保存の方法、データ型などの基本しかわからない初心者です。 状況 今回は、あるテーブルにデータを大量に追加したいと思っています。 その際、重複する(複数条件)データは追加しないようにしたいのです。 例えば、 【テーブルA】 オートナンバー   コード   場所   納場        001   AA001   東京    A           002   AA001   東京    B           003   AA001   東京    C           004   BB001   大阪    A           005   BB001   大阪    B    【テーブルB】             コード   場所   納場                AA001   東京    B                AA001   東京    C           → AA001   東京    D                  BB001   大阪    B 上記のテーブルが2つあり、テーブルAを元に、テーブルBのデータを追加する場合、 【テーブルA】 オートナンバー   コード   場所   納場        001   AA001   東京    A           002   AA001   東京    B           003   AA001   東京    C             AA001   東京    D           004   BB001   大阪    A           005   BB001   大阪    B というように表を更新したいと思っています。 上記の表のように「コード」が一致しても「納場」が一致しなければ追加を行いたいのです。 方法をご教授ください。

  • エクセルでの複数レコードの作成方法

    レコードにある特定の値(A~C)を追加し10個のパターンを作成したいと考えております。 対象のレコードが数千レコードあるため、手作業が困難です。 何か効率の良い作成方法はありませんでしょうか。 ■元のレコード -------------- 行| A -------------- 1|レコードA 2|レコードB 3|レコードC ■作成後(この様にしたい) ------------------ 行| A     B ------------------ 1|レコードA A 2|レコードA B 3|レコードA C 4|レコードB A 5|レコードB B 6|レコードB C 7|レコードC A 8|レコードC B 9|レコードC C よろしくお願いいたします。

  • アクセスの追加クエリについて

    二つのテーブル間(AとB)を追加クエリを使い AからレコードをBに追加することは出来たんですが、 逆にBからAにレコードを追加しようと選択クエリを追加クエリに変更しようとしたんですが、ウィザードの追加先テーブル名にAのテーブル名が表れないですがその理由が全く分からないので分かる方教えていただけませんか? AとBのレコード内のフィールドは同じです。 AからBにレコードを移行する処理としてマクロを使いアクションとして ・クエリを開く(これは追加クエリです) ・SQLの実行(上と同じクエリを削除クエリに変更し、そのSQL文をSOLステートメントに貼り付けました) 上の処理は問題なく出来たので逆のBからAへレコード移行処理のマクロを作ろうとしたのですが、追加クエリの追加先テーブルにテーブルAの名前が出てこないので困っています。こういったAからB。BからAという処理は追加クエリで出来ないのでしょうか?

  • テーブルに新しいレコードを追加する方法について

    ACCESS2007を使っています。 フィールドに以下のような項目があるテーブルAがあります。 日付 | 名称 | 項目 | MIN(数値) | MAX(数値) | チェック(Yes/No) また、以下のような項目があるテーブルBがあります。 日付 | 名称 | 項目 | ナンバー(数値) このテーブルAに以下のようなデータが入っているとして 1/1 | あああ | いいい | 10  | 100 | No 1/1 | あああ | ううう | 1 | 20 | Yes テーブルBに以下のようにレコードを追加したいのです。 1/1 | あああ | いいい | 10   1/1 | あああ | いいい | 11    ・  ・  ・ 1/1 | あああ | いいい | 100 1/1 | あああ | ううう | 1 1/1 | あああ | ううう | 2   ・  ・  ・ 1/1 | あああ | ううう | 20 1/1 | あああ | ううう | blank  最終的には、テーブルBをソースとしてラベル印刷したいと思っています。 レコードセットとFor~Nextなどを使えばできそうな気がするのですが、???です。 どなたかご指南いただけませんでしょうか?

  • このようなレコードの抽出・生成方法

    下記のようなテーブル、レコードがあるとします。 (テーブルAとテーブルBのコードは同意) テーブルA(PK:コードA,コードB,コードC,コードD) コードA コードB コードC コードD 000001 001 00 01 000001 001 00 02 000001 001 00 03 000001 002 00 01 000001 002 00 02 000001 002 00 03 テーブルB(PK:コードA,コードB) コードA コードB 000001 001 000001 002 ここでテーブルAに1件追加されたとします。 テーブルA コードA コードB コードC コードD 000001 001 00 01 000001 001 00 02 000001 001 00 03 000001 002 00 01 000001 002 00 02 000001 002 00 03 000001 001 00 04 ここで質問なのですが、 下記のようなレコードを生成するSQLを教えて欲しいのです。 イメージとしては、コードAとコードBをテーブルBから取得し、 他の項目は、上記で追加されたレコードをコピーといった感じです。 テーブルA コードA コードB コードC コードD 000001 001 00 01 000001 001 00 02 000001 001 00 03 000001 002 00 01 000001 002 00 02 000001 002 00 03 000001 001 00 04 000001 002 00 04 ←生成したいレコード わかりにくい質問で申し訳ないですが、 よろしくお願いいたします。

  • access追加クエリーでform入力項目値をセットする方法

    Access2002で、システムを構築中です。 いろいろ調べたのですが、初歩的過ぎるのは、意味が理解できてないのか、まったく判らなかったので、教えてください。 FORMから、年4桁をコンボボックスで選択させ、 Aテーブルの項目に、この年項目を追加したレイアウトで、 Bテーブルにデータを追加しようとしています。 Aよりレコードを読み込み、新しい項目にこの画面入力値をセットして全レコード同じ値として追加し、Bテーブルに書き込む処理を、ACCESSのクエリーでやりたいと考えています。 この画面の値のセットの仕方がわからず苦労しています。 動作イメージは、 フォームAのコンボボックスで値1を選択 コマンドボタンを押すと、クリックイベントでVBAへ。 VBA内では、 1 テーブルAから、テーブルBのデータを上記のように編集し、   追加する追加クエリを起動。 2 テーブルAのデータをクリア 以上です。 よろしくお願いします。

専門家に質問してみよう