• ベストアンサー

Access2007 新規レコードに値のコピー

いつもお世話になっております。 Access2007で、レポートを作成し、そのレポートからフォームを使ってレコードを追加する場合、レポートにある情報IDのフィールドの値を、新規追加するフォームにコピーすることはできますでしょうか? テーブルは[T_記録] : 記録ID、情報ID、日時、内容、記録日時、記録者 レポートは[R_記録] フォームは[F_記録] 宜しくお願いします。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

> レポートにある情報IDのフィールドの値を、新規追加するフォームに > コピーすることはできますでしょうか? フォームと違い、レポートでは「現在のレコード(クリックしたデータ)」を取得する 手段がないのでできません・・・と言おうと思ったのですが、改めてAccess2007 で確認してみたところ、できました(汗) ・・・Access2003から、だいぶ様変わりしているようで・・・(汗) とりあえず、レポートで「情報ID」を表示しているテキストボックス(仮にtxt情報ID とします)のダブルクリックでフォームを開くと同時に、その情報IDをフォームの同名 テキストボックスに代入する、というコードを、参考までに以下に示します。 (本当にポイントだけですが(汗)) 'レポート側:txt情報IDの「ダブルクリック時」イベント Private Sub txt情報ID_DblClick(Cancel As Integer)   'DoCmd.OpenFormのOpenArgs引数を使用して、フォームに情報IDを渡す   '(「情報IDの最小値=1」の前提で、Nullは0に変換:実際にない値なら何でも可)   DoCmd.OpenForm "[F_記録]", , , , acNewRec, , Nz(Me!txt情報ID, 0) End Sub 'フォーム側:フォームの「開く時」イベント Private Sub Form_Open(Cancel As Integer)   Dim InfID As Long   'OpenArgsで渡された情報を確認   InfID = Me.OpenArgs   '渡された情報が空でなかったら、txt情報IDテキストボックスに代入   '(情報IDの最小値が0なら、ここの「InfID > 0」も「InfID > -1」等に変更が必要)   If InfID > 0 Then Me!txt情報ID = InfID End Sub ・・・以上です。

rain_kouji
質問者

お礼

御返事が遅れて申し訳ありません。 多少の変更で願いが叶いました。 ありがとうございました。

その他の回答 (1)

  • mhassy
  • ベストアンサー率43% (16/37)
回答No.1

再び参考意見です。(笑) 新たな問題に遭遇しているご様子ですね。 少々失礼な回答になりそうですが、経験者からの助言と考えてご容赦下さい。 また、具体的な「利用者からの仕様要求」も知らない前提では有りますが、「作る側」の経験でのアドバイスです。 (私も幾多の経験で学んだことですが(笑)) 知識と経験の少ない者が「設計する」基本的な処理の流れと構造・・・ これによって発生する「ツイスターゲーム」の様に無理な体勢をする(≒(知識と技術に)ムリのある処理群)の実現と、それによって発生する新たな技術的な問題。 まずは、質問者ご自身の「知識の範囲で出来るような」、シンプルな処理や手法を選んでいきましょう。 これは、メンテナンスの容易さに加え、サポートできる方のスキルを下げることにもなり、結果的には「利用・保守」共に有益なツール作成に繋がります。 大きな川を向こう岸に渡る時、「自分の歩幅で簡単に渡る<石>」を見つけながら、その先の「道順(ルート)」までも考慮しながら進むのと同じことです。 一つの石を越える度に、次の石の選択を他人に委ねるような、現在の状態。 自分の知る知識と手法(+多少の自己調査)の組み合わせで、利用者の要求するものが実現できないかどうかを<大前提>にしてみることで、ここに列挙できない程のメリットを実現「しながら」、目的の機能を持つ物を設計&作成することが出来ます。 具体的には・・・・ 質問者さんの出来ないことが出てきた場合に、 ・違う手段はないのか? ・出来ない手段にならない、(一歩戻った)方法・手法はないか? ・その動作は、利用者にとって「使いやすいのか?」 などを、逐一考えて進むことをお勧めします。 作る側に見られる「よくある落とし穴」として、 <作るもの(仕様)に振り回された挙句、機能は満たしているのに、実用には不向き・耐えない>(笑) ということが有ります。 全てを考慮し、行き詰って他人へ道を尋ねずに、「尋ねなくても自分で行ける道を考えてみる」事を、お勧めしたいと思います。 下記の参考ページは・・・一種の「カンニング」です。(笑)

参考URL:
http://www.accessclub.jp/
rain_kouji
質問者

お礼

御返事が遅くなって申し訳ありません。 レベルが低すぎて常に背伸びしないとなかなか役に立つものができず、困っています。 教えて頂いたサイトをカンニングして勉強します。 ありがとうございました。

関連するQ&A

  • ACCESSでレコードのコピー

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

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

    Access2007で困っております。 フォーム上からテキスト型のデータを入力しようとしても 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されうまく入りません。 【テーブル構成】 ★が主キー (1)T_アルバム ★アルバムID テキスト型 アルバム名 テキスト型 ジャンルID テキスト型 ソースID テキスト型 アーティストID テキスト型 (2)T_曲目 ★曲ID テキスト型 曲名 テキスト型 トラックNo テキスト型 アルバムID テキスト型 (3)MT_アーティスト ★アーティストID テキスト型 アーティスト名 テキスト型 (4)MT_ジャンル ★ジャンルID テキスト型 ジャンル名 テキスト型 (5)MT_ソース ★ソースID テキスト型 ソース名 テキスト型 【リレーション】 ※いずれも参照整合性付き (1)T_アルバム アルバムID --- (2)T_曲目 アルバムID (1)T_アルバム アーティストID --- (3)MT_アーティスト アーティストID (1)T_アルバム ジャンルID --- (4)MT_ジャンル ジャンルID (1)T_アルバム ソースID --- (5)MT_ソース ソースID フォーム作成のために「Q_アルバム情報入力」をつくりました。 アルバムID T_アルバム アルバム名 T_アルバム アーティストID MT_アーティスト アーティスト名 MT_アーティスト ジャンルID MT_ジャンル ジャンル名 MT_ジャンル ソースID MT_ソース ソース名 MT_ソース この「Q_アルバム情報入力」を使って、フォームウィザードからフォームを作成し、 アルバムIDやアルバム名を入力しようとすると 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されます。 他のフィールドは値が入力できますが、これら2つのフィールドのみ入力できません。 なお、各テーブルのフィールドには予めデータが入っている状態です。 宜しくお願い致します。

  • ACCESSでコピーしたレコードのフィールド置換作業の繰返しを簡素化したいです

    ACCESS2000を使っています。テーブルには必ず「Nenndo」というフィールド名(数値型十新型)で西暦4桁が入力されています。(このフィールドはキーにもインデックスにもなってません)たとえば、 T_M001テーブルのNendoフィールドに2007が入力されたレコードが340件 T_M002テーブルのNendoフィールドに2004が入力されたレコードが823件 こんな感じでNendoフィールドがあるテーブルが沢山あります。 これらのテーブルのNendoフィールドに格納されているレコードをコピー置換作業して2004から2008までのデータを作成したいです。 T_M001であれば2007が入力されてるレコードをコピーして、貼付たレコードNendoフィールドの2007を2004へ置換、また2007のレコードをコピーして2005へを繰り返の作業してます。レコード数は340件が1360件増えて1700件。 テーブルが沢山あって作業に苦慮してます。 ACCESSのモジュールでもマクロでも構いませんので対応策等ご教授願います。

  • access レコードを他テーブルにコピーしたい

    教えてください 現在テーブル5つ(A,B,C,D,E)とそれぞれのレコードを表示するフォームが5つ(A1,B1,C1,D1,E1)あります。 テーブルのフィールドはそれぞれ同じです。 やりたいことはフォーム上からレコードセレクタで選択しているレコードを、 コンボボックスから選んだテーブルに新規追加(コピー)することです。 添付画像のようにフィールドが定義されており、name,addres,phoneだけをコピーしたいと思っています。 よろしくお願いします。 A.mdb =================================================== id     name     addres     phone     etc =================================================== 1     suzuki     tokyo     03333     aaa.txt 2     saito     oosaka     0638      3     tanaka     tokyo     03848     bb.jpg

  • accessのレポートで…

    レポート(テーブル1から作成)にあるフィールド1には「1・2・3…」という数字が入っています。 この1・2・3はテーブル2(ID・名前)とリンクしています。 フォーム上ではコンボボックスにして、テーブル2の名前も表示するようになっています。 (テーブルに値としては入っていません) これでレポートを作成した場合、テーブル2の名前を表示させたいのですが、テキストボックスで Iif([フィールド1] = "1","****",Iif(… というようにしてしまうと、せっかくリンクにしたのにデータが固定になってしまうのを避けたいんです。 フォームだとコンボボックスの更新後処理とレコードの移動にコードをかけば最新の情報を表示することができたんですが、レポートでもこのようなことはできるんでしょうか? (コードをかいて処理したいです) Access2000です。 よろしくお願いします。

  • Access2000 レコードコピー

    Access2000について質問です。 クエリを使用して、 あるテーブルのレコードをコピーして、 同じテーブルに追加するにはどうしたらいいですか。 別のテーブルへ追加する方法はわかったのですが、 同じテーブルに追加する方法がわかりません。 すっごく単純な質問ですが、 よろしくお願いします。

  • Accessでの新規レコードの追加の方法

    Windows XP上でMicrosoft Access 2000を使用しています。 オートナンバー型フィールド1つのみを含むテーブルに新規レコードを追加したいのですが、クエリやそれを基にしたフォームを介した方法はもちろんのこと、テーブルをデータシートビューで表示した状態でも追加することができません。 例えばレコードセレクタからレコード追加を選んでレコード保存を選んでも追加されません。 このテーブルに別のフィールドを追加してデータを入れるとレコードの追加が可能なのですが、オートナンバー型フィールド1つのみではうまくいきません。 どなたかオートナンバー型フィールド1つのみを含むテーブルに新規レコードを追加する方法を御存知でしたら御教示下さいませ。

  • 全てのレコードにそれぞれの値をコピー

    テーブルUserにCreatedフィールドとUpdatedフィールドがあります。 合計1000レコードあり、それぞれのレコードのCreatedの値をUpdatedにコピーしたいのですが コマンドはどのようになりますでしょうか? phpのwhile関数を使なければ不可能でしょうか? ご教示頂けると幸いです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • アクセス 前レコード内容を、新レコードにコピー

    アクセスで、テーブルに [日付] と [内容] のフィールドがあって、フォームでデータを入力する際、新しいレコードに[日付]を入力した後、[内容]の項目で、前回に最後のレコードで入力した [内容] のデータを、そのまま新しいレコードに入力したい。コピー貼り付けでもできるが、コマンドボタンを押して、1発で前回のデータをコピーしたい。どんなにしたらできるのですか?よろしくお願いします。

  • Access 2007で、テーブルからレコードを削除するクエリを作りた

    Access 2007で、テーブルからレコードを削除するクエリを作りたい。 具体的には、テーブルAのフィールドF1とテーブルBのフィールドF2があるとします。このとき、テーブルA中の各レコード(仮にXとします)であって、そのF1の値と同じ値をF2に持つレコードがテーブルBに含まれている場合は、(テーブルAから)そのレコードXを削除するという処理をしたいのです。ややこしいと思いますが、これをクエリやマクロで作ることはできるでしょうか? 私はVBAを知らない初心者です。上の処理も文章で書くと理解してもらえるかどうか不安ですが、だれか助けて下さい。