フォームのコピー流用使用について

このQ&Aのポイント
  • ACCESSでデータベースを作成する際、コピーしたフォームを使って作業の手間を省いています。
  • コピーしたフォームの名前だけを変更し、元のマクロやプロシージャ、値集合ソースをそのまま使えれば便利です。
  • フォームのコピー流用を活用することで、効率的に作業を進めることができます。
回答を見る
  • ベストアンサー

フォームのコピー流用使用について

見よう見まねでACCESSを使ってきました「現在進行形・・・。」。質問の趣旨についてご疑念は覚悟していますが、基本的な知識の欠落感は多少なり感っじていますので、何なりと申していただければと思っています。 「やっていること1」 ACCESSでデータベースを作成するとき、検索結果を表示するフォームなど複数必要なこともあり、完成させたフォームをコピーして使っています。同じフォームを作る手間を省くのが目的になっています。 「やっていること1の補足」 コピーしたフォームの「フォーム名・コンボボックス・コマンドボダン・テキストボックス」の名前を変更し、コピー元のマクロやプロシージャや値集合ソースは残して、コピーフォーム用として新たに作成しています。 「やれたら実行したいと思っていること」 コピーしたフォームの名前だけを変更させて、「コンボボックス・コマンドボダン・テキストボックス」「プロシージャや値集合ソース」をそのまま使えれば使いたいと考えています。 以上ですが、宜しくお願いします。

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (254/607)
回答No.6

ネット検索して頂けるかと専門用語を敢えて使いました。 >ACCESSのオブジェクトの正確な呼び名 ★Accessはテーブル、クエリ、フォーム、レポート、マクロ、モジュールに  分かれていますね  一つのファイルは【プロジェクト】→【モジュール】→【プロシジャー】と  枝分かれしながら細分化されています。  これらと中身を含めてオブジェクトと呼んでいます。  ・個々のテーブル  ・個々のクエリ  ・個々のフォームと一塊のVBA(Private Sub()~End Sub)もオブジェクト  ・個々のレポート >この段階で一方的に終わらせるのは失礼かと思いますので、  質問について他「エクセル」を引用しての説明をお許しください。 ★Access概要が見えるまで、お付き合い続けさせてください。  その後は テーブル、クエリ、フォーム、レポート単位のQにして下さい >例えば、エクセルの場合は「ブック」がファイルの単位で  ブックの中にはシートで異なるデータも追加出来ます。  私のAccessデータベースは1つ「エクセルのブック一つ」で、   そのデータベースの中にタイトルの異なる   データ、テーブル・クエリ・フォーム・他を多数保存し  ??エクセルをコピーできるのはテーブルだけですが   ?データ   ?テーブル   ?クエリ   ?フォーム   ?他を多数保存し   マスターフォームにボタンを作って   タイトル別に呼び出して使っています。   つまり、データベース「エクセルでいうブック」は一つしかありません。   その一つのデータベース「エクセルで言うブック」の中で、   フォームをコピーして使うと言った内容でございます。  ??つまり一つのSheetからコピーしたテーブルが一つだけという事ですか ★そうですね、  ・(1)Excelは報告書の様式で設計して    この様式の中に項目名、計算式を避けながらの情報を入力      (2)段落した時点で保存処理   (3)月単位、年単位のファイル名になり、ファイル名と保存の管理が大変と  ・(1)Accessは報告書の様式をあまり意識なしで    必要な入力項目のみの設計で入力し    報告書は別に設計します   (2)1行を入力すると自動で保存されます   (3)ファイル名は月単位、年単位の必要はありません ★マスタデータとトランザクションデータ  左端のナビゲーションリストは読み順なのでネーミングの提案です  マスタテーブル   一度登録繰返し参照されるテーブル    (M社員、M顧客、M商品、S商品規格、S商品サイズ)  トランザクションテーブル   日々発生するテーブル    (見積履歴、見積履歴明細、売上履歴、売上履歴明細)

eokwave
質問者

お礼

ありがとうございました。私の質問は実際には基本は何かを聞いている内容でした。基本を教えていただきました。ありがとうございました。

その他の回答 (5)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.5

説明がわかりにくくて申し訳ありません 先ず使用する記号です >あなたの文章です ★回答(やっていただきたい事)です。 !理由 ★の目的 >★!が長文の時は字下げします。 【】→【】→【】→作業の流れで、クリックで進みます。  右クリックは【…右】、キーボード入力は【「…」】 では本題に入ります。 ------------------------------------------------------------- 回答No.2も含めます。 >完成させたフォームをコピーして使っています。  同じフォームを作る手間を省くのが目的になっています。  コピーしたフォームの「フォーム名・コンボボックス・コマンドボダン  ・テキストボックス」の名前を変更し、コピー元のマクロや  プロシージャ、値集合ソースは残して、  コピーフォーム用として新たに作成しています。 ★コピーはコピペでなく外部よりインポートでコピーします。  【Access】→【空のデータベース】→【「新ファイル名」】→【フォルダ】  →【OK】→【作成】  !これで空のAccessファイルの出来上がりです。  →【外部データ】→【新しいデータソース】→【データベースから】  →【Access】→【参照】  →【コピー元のファイル】→【開く】→【テーブル】→【すべて選択】  →【オプション】→【テーブル構造のみ】  !これで回答No.2の添付画像です。  !テーブル構造のみとしたのは   Accessの最大の特長である参照整合性のあるリレーションシップの為です   もし不都合なデータが入っていたなら先々不都合な情報(親レコードの   無い子だけのレコードが増加)が入りエラーが頻発します。  他のオブジェクトは以下のように全てを選択します  →【クエリ】→【すべて選択】  →【フォーム】→【すべて選択】  →【レポート】→【すべて選択】  →【マクロ】→【すべて選択】   ※触れたことがありません  →【モジュール】→【すべて選択】 ※触れたことがありません  →【Ok】  !このOkでインポーットが始まります。 ★Accessの体系チェック<リレーショナルデータベース>  →【データベースツール】→【リレーションシップ】→【全てのリレーションシップ】  →【空白部 右】→【全てのリレーションシップの表示】  !添付画像のようになり、リレーションが 1:∞ が線が安心ですが、   M商品と見積明細のように一方に➡線も 1:∞ と同等で有効です。  !添付図中リレーションがないテーブルはM商品のルックアップの対象と   システムで共通に使う1レコードのみのプロフィール   !ルックアップの設定は別のQでお願いします   !1レコードのみの設定はフォームのプロパティーで    追加の許可=いいえ、削除の許可=いいえ    としますが別のQでお願いします >オブジェクトをインポートするのは分かりますが、  データベースファイル内のフォームをインポート作成する方法ですが、  よく分からなくて困っています。 ★流れ図で →【Ok】を省いたのではなく、  全てのオブジェクトの設定の後に→【Ok】します。  !インポートは何度でも出来ますが、同じ名前の時は名前に番号が   付加されたものになります。   再度のインポートは個別にチェックを入れてから実行して下さい ★--おまけです----------------------------------------------------- 添付図はクイックアクセスツールバーを下に表示してリボンを折りたたむにしています。 ツールの表示幅が横いっぱいに広がります。 左端の(1)元に戻す(2)やり直し(3)上書保存(4)印刷プレビュー(5)先頭のレコード  (6)前のレコード(7)次のレコード(8)最後のレコードは実行時に有効で、  これ以降、開発時に有効なツールを並べています。  画面の右端にはみ出したツールが18個ありますが  リボンを選び、グループの右端より目的のツールにたどりつくよりは  最大2回のクリックで済みます。

eokwave
質問者

お礼

私の質問は基本を聞いている内容でした。補足のコメントは失礼な内容でした。お許しください。

eokwave
質問者

補足

丁寧なアドバイスを頂きまして本当に感謝致します。遅すぎると言われるかもしれませんが、ACCESSのオブジェクトの正確な呼び名を分かっていないレベルに気が付きました。親身な回答者を振り回してしまった感があります。すいません。この段階で一方的に終わらせるのは失礼かと思いますので、質問について他「エクセル」を引用しての説明をお許しください。 私の質問の仕方が悪くご面倒をお掛けしています。例えば、エクセルの場合は「ブック」がファイルの単位で、ブックの中にはシートで異なるデータも追加出来ます。私のACCESSデータベースは1つ「エクセルのブック一つ」で、そのデータベースの中にタイトルの異なるデータ、テーブル・クエリ・フォーム・他を多数保存し、マスターフォームにボタンを作って、タイトル別に呼び出して使っています。つまり、データベース「エクセルでいうブック」は一つしかありません。その一つのデータベース「エクセルで言うブック」の中で、フォームをコピーして使うと言った内容でございます。 エクセルとアクセスは異なりますので、説明の対象としてふさわしくないかと思いますが、このレベルの知識しかありませんので、宜しくご理解願います。

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.4

> 親近感を感じます。 なにが言いたいのか分かりません。 コントロールの名前が同じでもフォーム名が違うのですからそのことは気にすることはありませんが、プロシージャで何をしてるのか分からないので、問題ないと思いますとかいいようがありませんよね。

eokwave
質問者

お礼

私の質問は大雑把な領域なのだと分かりました。図面がない「曖昧な質問」以上、「問題ないかもしれないし」、「問題あるかもしれない」、としか言いようがないと仰られる意味が分かりました。取り急ぎご報告致します。尚、親近感を感じますとの記述ですが、根拠を示せない直感フィーリングでしので、取り消させていただきます。すいません。

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.3

> ACCESSのシステム上で問題はないのでしょうか。 問題はないと思いますが、何かフォームでデータを書き替えるとかしていたら何らかのメッセージは出るとは思います。

eokwave
質問者

お礼

ありがとうございます。親近感を感じます。

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

>完成させたフォームをコピーして使っています。  同じフォームを作る手間を省くのが目的になっています。  コピーしたフォームの「フォーム名・コンボボックス・コマンドボダン  ・テキストボックス」の名前を変更し、コピー元のマクロや  プロシージャ、値集合ソースは残して、  コピーフォーム用として新たに作成しています。 ★提言 コピーはコピペでなく外部よりインポートでコピーします。  1.コピーは空のデータベースを作成し、   ここへ外部よりインポートでコピーします。   Access起動→空のファイル→「新ファイル名」を入力   →データベースの保存場所(フォルダ)→作成  2.外部よりインポート→外部データ→新しいデータソース   →テーブル→すべて選択→オプション→テーブル構造のみ   →クエリ→すべて選択   →フォーム→すべて選択   →マクロ→すべて選択   ※触れたことがありません   →モジュール→すべて選択 ※触れたことがありません   →OK  3.Accessの体系チェック<リレーショナルデータベース>   データベースツール→リレーションシップ→空白を右クリック   →すべてのリレーションシップ   表示されたリレーションが 1:∞ になっていることの確認   ※1:∞の完全整合性の条件は一方のフィールドがユニークになっている事    ・フィールドが主キー(品名と規格のように複数の項目で主キーもOK)    ・オートナンバー型    ・インデックスプロパティーが重複なし >コピーしたフォームの名前だけを変更させて、  「コンボボックス・コマンドボダン・テキストボックス」  「プロシージャや値集合ソース」をそのまま使いたいと考えています。 ★値集合ソースとはテーブルのことですね  テーブルとリレーションシップの良否がシステムの質に直結します。  丁寧に見直してください。 ★プロシジャは意識したことがありません

eokwave
質問者

補足

データベースファイルを新たに作成して、別のデータベースファイルのオブジェクトをインポートするのは分かりますが、データベースファイル内のフォームをインポート作成する方法ですが、よく分からなくて困っています。すいません。

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.1

そのまま使えると思いますが、できませんでしたか? ただ、そのままだとコピー元と同じ動作をするフォームになると思いますが…。

eokwave
質問者

お礼

ありがとうございます。

eokwave
質問者

補足

コピー元のフォームとコピーしたフォームを同時「時間差は発生しますが」に開いた時「開く時・・・」に、ACCESSのシステム上で問題はないのでしょうか。

関連するQ&A

  • フォームのプロパティを設定したい(Access2000)

    Access2000 XPです。 都道府県名が1レコードに1つずつ入っているテーブルと 各都道府県名のテーブルが47コあります。 新規でフォームを作成し(フォームのレコードソースはまだ未設定) コンボボックスを1つ置いて、値集合ソースに都道府県テーブルを設定し コンボボックスで選ばれた都道府県にフォームのレコードソースを変更しようと思っています。 Me.RecordSource=コンボボックス.text 単純にこれで良いと思うのですがエラー(入力された値は、フィールド又はコントロールで定義されている入力規則に従っていません)が出て全然更新されません。 どなたか分かる方、解決法をお願いします。。。

  • Access2003のフォームからレポートに変数を渡したいのです。

    Access2003のフォームからレポートに変数を渡したいのです。 フォームに「結果」という名前の非連結コンボボックスがあり、値集合ソースは、「"承認";"却下";"保留"」です。 フォームの印刷ボタンはクリック時のイベントに以下を設定しています。 DoCmd.OpenReport ("R_レポート名"), acViewPreview このレポートでテキストボックスに「結果」の内容を表示させたいと思います。 テキストボックスのコントロールソースに、「=[Forms]![F_フォーム名]![結果]」と入れてみましたがエラーになります。 フォームのコンボボックスの値をレポートで表示させるにはどうすれば良いのでしょうか。 ご教示ください。よろしくお願いいたします。

  • Accessフォームのスクロールバーに関して

    こんにちは。Access2000を使用しています。 今回、データ照会用フォームを作成しようと思い、 タブコントロールの中にリストボックスを配置し、 条件に応じてそのリストボックスの値集合ソース (値集合ソースはクエリを使用し抽出条件として このフォームのテキストボックスに入力した値を使用) を変更してみました。 そのこと自体うまく言ったのですが、リストボックス につきものと思われるスクロールバーがでてきません。 (表示しきれない最後のレコードは途中で切られてみる ことができません。) どなたかスクロールバーを表示させていただけません でしょうか? どうぞよろしくお願いいたします。

  • アクセス2013の値集合ソース内の検索か抜き出し

    アクセス2013のフォームのコンボボックスの『値集合ソース』内に書かれたSQLコードの検索か抜き出しはできませんか。 ※書き方がよくなかったので再投稿しています。 アクセス2013でゴリゴリに作られた画面があります。 そこで使われているテーブルを検索して影響範囲の調査をしたいのですが、検索しても『値集合ソース』内に書かれたSQLコードにはヒットしてくれません。 どの画面とどの画面のどこでそのテーブルが使用されているのかが知りたいですが、 コンボボックスとその『値集合ソース』を多用しているために困っています。 『値集合ソース』内に書かれたSQLコード内のテーブルを検索する方法か、 フォームに書かれた『値集合ソース』のコードをテキストで抜き出す方法はありませんか。

  • Accessの選択クエリの選択を切り替えたい

    Accessで、フォームにコンボボックスとサブフォームを作成してコンボボックスで選択したテキストをキーワードにサブフォームに選択クエリを表示させようと考えています。 コンボボックスの項目は、値集合ソースでテーブルを設定して、選択された項目は、my_Text = Me.コンボ1.Textで取得して クエリのSQL文を変更すればいいのかなぁ?って想像しています。 でも、サブフォームに設定したクエリのSQL文の変更の仕方が解りません。どなたか?詳しい方いらっしゃいましたら教えて頂けないでしょうか?宜しくお願い致します。

  • Accessのフォームについて教えて下さい

    Access 2010のフォームについてお教え下さい。 テーブルにはテーブル名T1、フィールド「ID」、「Price」というテキストボックス。2フィールドがあります。 テーブルの各データは、 ID,Price 001,100 002,200 003,300 フォームにはにフォーム名F1、「cmb」というコンボボックスと、「price」というテキストボックスが配置されています。 「cmb」のデータは値集合ソースで、「SELECT T1.ID FROM T1;」と指定しています。 「cmb」で選択したデータのプライスを「Price」テキストボックスに表示したいと思います。 例えば、「001」を選択したら、「100」と表示されるようにしたいと思います。 色々調べているのですが、どうやってやるのかわかりません。どのように実現したらよろしいでしょうか? よろしくお願いいたします。

  • Access(フォームのプロパティボックスの設定)

     Win XP Office 2003 Accessを勉強中です。  フォームをデザインビューに作成するときに、ラベルとテキストボックスが作成されます。  これらのプロパティで「すべて」のタブで一番上から「名前」、「表題」または「コントロールソース」という項目がありますが、 これらは最初に、「テキスト○○」「ラベル○○」と表示されています。  「表題」または「コントロールソース」の欄の内容を変更すると、その内容がフォームから見えますが、  「名前」の欄を変更してやらなければならない場合とかはあるのでしょうか。  色々なテキストを見ると、「この場合には、必ず「表題」または「コントロールソース」の内容と同じ内容にすること」 と書かれていますが、これはフォームの入力欄の種類(コンボボックス、トグルボタン、チェックボックス、リストボッ クス)によって、変更するかしないかが決定されるのでしょうか。  どのような場合に「名前」の欄の内容を表題とかに合わせて変更するとか、この場合には変更しなくても良いという決まり はあるのでしょうか。

  • フォームのコンボボックスのチェンジイベントがエラー

    フォームのコンボボックスのチェンジイベントがエラーになってしまいます フォームのコンボボックスで値が変更するたびに コンボックスのリストを絞り込むようにしたいので フィールド1 1111 1112 1113 1211 1212 フォーム1を作成しコンボボックスを設置し 値集合ソースを SELECT テーブル1.フィールド1 FROM テーブル1 WHERE (((テーブル1.フィールド1) Like "*" & [テーブル1]![フィールド1] & "*")); として コンボボックスの変更時イベントに Private Sub コンボ0_Change() Form_フォーム1.コンボ0.Requery End Sub としました。 そしてこのコンボボックスに 「2」というように値を入力すると 「実行時エラー '2118' "Requery/再クエリ"アクションを実行する前に、カレンとフィールドを保存する必要があります。」 となってしまいます。 やりたいことは コンボボックスに「2」を入力すれば テーブル1の「2」が含まれるものが抽出され 1112 1211 1212 がコンボボックスの ▼マークをクリックした後のリストに表示されるようにしたいのですが どうすればいいでしょうか? よろしくお願いします。

  • コンボボックスの値が消えてしまいます。

    コンボボックスの値が消えてしまいます。 フォーム(1)にコンボボックスA(値集合ソースはテーブル1)があります、この リスト外入力時で別フォーム(2)(レコード追加用)を開きテーブル1にレコードを追加、 フォーム(2)を閉じる時にコンボボックスAをリクエリかけてフォーム(1)に戻るとコンボボックスAが空になっているのでリストを開き選択し直さなければいけません! フォーム(1)に戻った時コンボボックスAに入力した値を選択させておくにはどの様にすれば良いか アドバイスよろしくお願いいたします。 WIN XP ACCESS 2003で作成しています。

  • Accessのフォームで日付の範囲での抽出

    初心者です、Access2000/WinXPで使用しています、Accessのフォームで日付の範囲での抽出仕方が解らなくて困っています、日付をそれぞれコンボボックスで指定しています、コンボボックスAとコンボボックスBの日付間での抽出なのですが、それを一つのコマンドボタンで抽出したいのです、 簡単に説明します。 メニュー抽出:フォームの コンボボックスA:集合ソースメニュー/総合抽出クエリ コンボボックスB:集合ソースメニュー/総合抽出クエリ txt2(コンボボックス):集合ソースメニュー/総合抽出クエリ コマンド4(これは検索と言う名前でtxt2で指定した名前を抽出するのに使っています) Private Sub コマンド4_Click() 'レコードを抽出 Me.Requery End Sub と、してあります このコマンド4でコンボA~コンボBの期間のtxt2の品目を総合抽出クエリから抽出するにはどうすればよろしいでしょうか?宜しくお願いいたします。

専門家に質問してみよう