• 締切済み

フォームの特定レコードをテーブルのレコードに追加する方法

アクセス2000を使用してデータベースを作っています。 今までアクセスは出来上がったシステムを使用するばかりでしたが、WEB上の検索とヘルプファイルだけを頼りに初挑戦しています。 設計自体おかしなところもあるかもしれませんが、今回どうしてもHITしなかったので質問させていただくことにしましたので、よろしくお願い致します。 作業依頼が親会社から来て、これを社員に指示し、完了結果を日々報告しなければなりません。 これをアクセスで管理しようと作業を始め、テーブル:作業依頼一覧表を作り、これを元に入力・検索フォームやレポート:作業指示書などを作り終えたところです。 表形式の検索フォームの作業依頼ID(オートナンバー)のダブルクリック時イベントに、レポート作業指示書を印刷するようマクロで設定してあります。 この検索フォームのフィールド作業完了日をダブルクリックすると、テーブル作業完了一覧にレコードを追加したいのですが行き詰ってしまいました。 どなたかご教授いただけないでしょうか?

みんなの回答

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

No.1です。 > これで間違いなければ原因として何が考えられるでしょうか? 書かれている作業には、間違いはなさそうです。 まずは、「現在の抽出条件で追加対象となるレコードがあるかどうか」と 「追加対象となるレコードが追加先に保存可能かどうか」の確認、という ことになるかと思います。 比較的よくあるパターンについての確認手順は以下のようになります: 1)『F_作業一覧検索』フォームを通常通りに開き、テスト対象にするレコード  を選択(ダブルクリックはせず、あくまでクリックだけ)。 2)この状態(=上記フォームを開いたまま)で、キーボードのF11キーを押すなど  してデータベースウィンドウを表示 3)『Q_作業完了に追加』クエリをデザインビューで開く 4)メニューで「表示(V)→データシート ビュー(S)」を選択して、追加クエリでの  追加対象となるレコードを確認  ⇒A)パラメータを要求するダイアログが表示された場合は、抽出条件の式に     問題あり(開いているフォームを正しく参照できていない)  ⇒B)1件もレコードが表示されないなら、抽出条件に問題あり 5)追加対象が抽出されていた場合は、上記クエリを一旦閉じた後、同クエリ  をダブルクリックするなどして、追加クエリを手動で実行  ※念のため、予めバックアップをとるか、テスト用のサンプルを作成して下さい。 6)「○件のレコードを追加します。・・・」というメッセージが出る(→件数はデータ  シートビューで表示された通りの件数)ので、「はい(Y)」を選択  ⇒その後に「追加クエリですべてのレコードを追加できません。・・・」のメッセージ   が出た場合は、その下の情報を確認  ・型変換エラー:   追加元と追加先で、フィールドの型が異なっている(数値型と文字列型、等)   →フィールドの型を揃えるか、可能なら追加クエリでCLng関数などで型を変換。  ・キー違反:   主キーなど、重複が許可されていないフィールドに、既存のレコードと同じ値の   レコードを追加した場合   →重複を許可できるものは許可、重複不可の場合は追加クエリではなく更新    クエリで既存レコードを書き換える形にする(→既存かどうかの切り分けが必要)。    または、抽出条件を指定した削除クエリで既存レコードを削除してから、追加    クエリでレコードを追加する。  ・ロック違反:   他のユーザーが、または別のフォーム等で、対象レコードが編集中だった場合など   →別フォームで編集中だった場合は、フォームを切り替えるボタンのマクロに    「コマンドの実行」アクションを追加し、引数に「レコードの保存」を指定。    ダブルクリックしたフォーム自体で編集中の場合は、「M_作業完了に追加」で、    「クエリを開く」の前に、同様に「レコードの保存」を追加  ・入力規則違反:   (あまりやらないと思いますが)2つのテーブルで同じ意味を持つフィールドに、   追加先にのみ入力規則を設定しているか、両者で異なる入力規則を設定   している場合   →入力規則の内容を揃える。 ※上記以外のメッセージが表示された場合は、そこに書かれた内容を元に、クエリや   テーブルを見直すことになります。

n-aisa
質問者

お礼

DexMachinaさん、いろいろとありがとうございました。 やっとできました。

n-aisa
質問者

補足

何度もご丁寧にありがとうございます。 4)⇒B)1件もレコードが表示されないので、抽出条件に問題ありでした。 追加クエリ『Q_作業完了に追加』には、フィールド『作業依頼ID』の抽出条件を[Forms]![F_作業一覧検索]![作業依頼ID]としています。 テスト用のサンプルを作成して、最初にご回答いただいた内容を確認しながらもう一度やってみます。

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

> 検索フォームのフィールド作業完了日をダブルクリックすると、 > テーブル作業完了一覧にレコードを追加したい レコードの追加には、「追加クエリ」を使用するのが最も簡単ですので、 これについて説明します。 【追加クエリの作成方法】 1)データベースウィンドウ(テーブルやフォーム等の一覧が表示される画面)の  『クエリ』タブで『新規作成(N)』ボタンをクリックするなどして、『新しいクエリ』  ダイアログを開く 2)「デザイン ビュー」を選択して『Ok』ボタンをクリック 3)『テーブルの表示』ダイアログが開くので、検索フォームのレコードソースに  指定しているテーブル(またはクエリ)を選択し、『追加(A)』ボタンをクリック  ※テーブル名/クエリ名のダブルクリックでも追加可能 4)『閉じる(C)』ボタンでダイアログを閉じる 5)Accessのメニューから、「クエリ(Q)→追加(P)」を選択 6)『追加』ダイアログが開くので、『テーブル名(N)』コンボボックスで「作業完了  一覧」テーブルを選択し、『Ok』ボタンをクリック 7)クエリのデザインビューの上半分で表示されている、先ほど指定したテーブル  (またはクエリ)から、「作業完了一覧」テーブルに追加するフィールド群をドラッグ  &ドロップで下半分の領域に追加 8)追加元と追加先でフィールド名が異なる場合は、『レコードの追加』欄が  空白のままなので、該当するフィールドを指定 9)『作業依頼ID』を「作業完了一覧」に追加しない場合は、検索条件の指定用  として、同様にドラッグ&ドロップで追加し、『レコードの追加』欄を空白にする  ※追加対象フィールドだった場合は、ここでの再追加・空白化は不要です。 10)『作業依頼ID』の列の『抽出条件:』欄に、以下の式を入力:  [Forms]![検索フォーム]![作業依頼ID]  ※「検索フォーム」には、実際のフォーム名を指定します。 11)クエリを保存して閉じる 【追加クエリの使用方法】 マクロの場合は、「クエリを開く」アクションを使用します。 アクションの引数(マクロのデザインビューの下半分)で、対象クエリの名前を 『クエリ名』に指定します。 (『ビュー』、『データモード』は、それぞれデフォルトの「データシートビュー」、  「編集」のままでOk) VBAの場合は、OpenQueryを使用します。   DoCmd.OpenQuery "クエリ名" クエリ名以外の引数もありますが、追加クエリで追加を実行する場合は省略 しても問題ありません。 (追加クエリをデザインビューで開く場合などは、対応する引数の指定が必須) ・・・長くなりましたが、以上です。

n-aisa
質問者

補足

早速の丁寧なご回答ありがとうございます。 教えていただいた通りのやりました。が、できませんでした。 (追加されませんでした) 新たに作成した追加クエリには、[検索フォーム]を[F_作業一覧検索]と置き換え、「Q_作業完了に追加」としました。 次にクエリ「Q_作業完了に追加」を開くマクロを作成し、「M_作業完了に追加」として保存。 最後に「F_作業一覧検索」の「作業依頼ID」のクリック時イベントに「M_作業完了に追加」を指定。 これで間違いなければ原因として何が考えられるでしょうか? 「Q_作業完了に追加」を開いたまま「F_作業一覧検索」の「作業依頼ID」をダブルクリックすると「Q_作業完了に追加」が最前面に来るので、この追加クエリの抽出条件に問題があると思っていろいろ試しているんですが・・・。

関連するQ&A

  • フォームを自動的に閉じたい

    修理依頼を受付するデータベースを作っています。 商品を売った顧客が載っている顧客テーブルから、顧客No.を取得するための検索フォームがあります。検索ができたら、顧客ナンバーをダブルクリックすると、修理依頼テーブルにデータが追加されるところまでできたのですが、検索フォームが開きっぱなしで格好が悪いので、ダブルクリックしたら、自動的に閉じられるようにしたいのですが、どうしたらいいですか??

  • ACCESSのフォームからレコードの追加

    ACCESS(2000です)で検索結果をフォームで表示して探しています。目当てのレコードのみを別のテーブルに追加するにはどうしたらいいですか。(フォームで探すところまではできていますのでその後を教えてください。)

  • MS-Access レコードセレクタのイベント

    こんにちは。 MS-Access2003です。レコードセレクタをダブルクリックした時に以下のようなイベントを設定したいと思っています。 1.テーブルの全データを一覧で表示するクエリを連結した、表形式のフォーム(フォームA)が  あり、そのレコードセレクタをダブルクリックします。 2.別に、そのテーブルを連結したフォーム(フォームB)があり、1.でダブルクリックしたデータが、  その「テーブルを連結したフォーム」に表示されて欲しい。 フォームAは参照のみであり、フォームBは更新可能な設定です。 レコードセレクタのイベントはマクロで組みたいのですが、フォームBを開いた後どうすれば そのデータをフォームBでフィルターをかけたように表示できるのかが分かりません。 ご教授いただけると助かります。 よろしくお願いいたします。

  • Access フォームからの入力結果をテーブルにすることはできない?

    Access フォームからの入力結果をテーブルにすることはできない? 使用しているのはWindows XP、Access 2003です。 とある調査結果をデータベース化する仕事を与えられています。 データ1件あたりの構成要素を一目で見れるようにするために「こういうレイアウトのフォームを作って」と上司からリクエストが出ています。 まず、今手元に集まっているデータについては、 Excelで一覧表作成 → Accessにインポートしてテーブル作成 → オートフォームでフォーム作成し、デザインビューでレイアウト変更 というふうにして、上司から言われたフォームは作りました。 今後、データは増えていくので、作ったフォームから新たにデータの追加をしていくことになるのですが・・・。 フォームからデータを追加しても、元となったテーブルにはリンクしませんよね? とすると、データを追加した結果をテーブルにしたい場合はどうしたらいいのでしょうか? 今度は、そこからクエリを組む必要も出てくるため、テーブルにしたいのですが・・・。 Accessについては、以前勤めていた会社の研修で習っただけで詳しい使い方をずいぶん忘れてしまっています。今回、自分なりにいろいろ調べてはみたのですが、よくわかりませんでした。 もしかしたら、Accessの使い方を基本的に間違っているでしょうか・・・ よろしくお願いします。

  • Accessでフォームからレコードの追加について

    Access2016をWindows10で利用しています。 あるテーブルの単票形式のフォームをフォームウィザードから作成しました。 入力規則などがテーブルの各列の設定に沿って作成されていてとても便利なのですが、フォームにいくつか値を入れた時点でレコードが新規追加されてしまいます。 レコードの追加を、すべての入力が終わって「新規追加」ボタン(あとから自分で作成)を押してから行いたいです。 レコードウィザードを使わずにフォームを作成し、フォームの値とクエリを結び付けてボタン押下時にクエリを実行する、というフォームにすれば実現できると思うのですが、それはなかなか手間がかかってしまうので出来るだけ簡便に実現できたらと考えています。 細かい話なので参考ページ、あるいはヒントになる検索キーワードを教えていただけないでしょうか m(‗ ‗)m ?

  • フォームからのレコード削除について

    access超超初心者です。 フォームのコマンドボタンをクリックすると テーブルのレコードを追加または削除する方法を教えてください。 [イベントプロシージャ]を使用して、どのようなプログラムを書けば いいのでしょうか? ど素人の質問ですいません。

  • Accessでテーブルやクエリのリストを作りたい。

    テーブルが100、クエリが200ほどあるデータベースを使用してます。そのほかにレポート、フォーム、マクロもそこそこあります。これらのテーブル名やクエリ名の一覧表を作成したいのですがどうすればいいでしょうか。出力はファイル(たとえばExcelなど)でもプリントアウトでもかまいません。初心者なのでできるだけ簡単方法を教えていただければ助かります。よろしくお願いします。

  • アクセスのフォームとクエリの作り方

    アクセス初心者です。今使っているアクセスのデータベースで,検索をすると,一人について一画面を使用したフォームで情報を見ることができます。しかし,これでは,条件に該当する人の情報を一覧表形式で見ることができず,不便で困っています。情報自体は今あるフォームに表示されるものでいいのですが,これを,さまざまな条件で検索をして,かつ,それを一覧表形式で表示するようなことはできないでしょうか。どなたか教えてください。

  • 検索用フォームを作りたいのですが・・色々と問題が

    お忙しい所、ご覧になってくださってありがとうございます。 今働いている会社の管理システムがアクセスで作られたもので、仕事をして初めてアクセスというものに触った超初心者でございます(テーブル、クエリ、フォーム、レポートがわかるくらいです)。 なのですが突然、上司から検索フォームを作るよう命じられました。 テーブル;提出済見積一覧→顧客名 商品名 商品区分 単価 (データは5万件以上あります) テーブル;仕入見積一覧→仕入先 商品名 商品区分 単価 (データは3万件以上あります) 上記の内容を、フォーム上に作成したテキストボックスの「商品名検索」で検索し、尚且つ「商品区分」で絞り込みしたら、それに適した「提出済見積一覧」と「仕入見積一覧」が同時に閲覧できるようなフォームを作成したいです(一件ごとのデータではなく、含まれている条件全てが一覧で見れる)。 あと、テキストボックスの商品名もあいまいな検索で、見積もりと仕入がヒットするように作れと言われております。。 見積もりと仕入をサブフォームで作成し、フォームにサブフォームを埋め込んで、と試してみてはいるのですが、知識も乏しいせいか、どうも上手く行きません。 周りには上司含め、アクセスをわかる人がおりません(T_T) アドバイスがありましたらお願いいたします。

  • accessのフォームをレポートに変換?

    accessのフォームをそのままレポートにする簡単な方法?があったらアドバイスいただけませんか。 #accessで作成されたシンプルなプログラムを使用している立場。accessはテーブルでデータを検索したりするだけの使用状況。 #フォームで表示されている内容をそのまま印刷したいことが多い #access2000 access2002あり。

専門家に質問してみよう