みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

見よう見まねでACCESSを使ってきました「現在進行形・・・。」。質問の趣旨についてご疑念は覚悟していますが、基本的な知識の欠落感は多少なり感っじていますので、何なりと申していただければと思っています。

「やっていること1」
ACCESSでデータベースを作成するとき、検索結果を表示するフォームなど複数必要なこともあり、完成させたフォームをコピーして使っています。同じフォームを作る手間を省くのが目的になっています。

「やっていること1の補足」
コピーしたフォームの「フォーム名・コンボボックス・コマンドボダン・テキストボックス」の名前を変更し、コピー元のマクロやプロシージャや値集合ソースは残して、コピーフォーム用として新たに作成しています。

「やれたら実行したいと思っていること」
コピーしたフォームの名前だけを変更させて、「コンボボックス・コマンドボダン・テキストボックス」「プロシージャや値集合ソース」をそのまま使えれば使いたいと考えています。

以上ですが、宜しくお願いします。

投稿日時 - 2019-06-11 15:58:25

QNo.9624880

困ってます

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

ネット検索して頂けるかと専門用語を敢えて使いました。
>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商品サイズ)
 トランザクションテーブル
  日々発生するテーブル
   (見積履歴、見積履歴明細、売上履歴、売上履歴明細)

投稿日時 - 2019-06-15 23:03:43

お礼

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

投稿日時 - 2019-06-17 14:01:52

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.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回のクリックで済みます。

投稿日時 - 2019-06-14 09:26:39

補足

丁寧なアドバイスを頂きまして本当に感謝致します。遅すぎると言われるかもしれませんが、ACCESSのオブジェクトの正確な呼び名を分かっていないレベルに気が付きました。親身な回答者を振り回してしまった感があります。すいません。この段階で一方的に終わらせるのは失礼かと思いますので、質問について他「エクセル」を引用しての説明をお許しください。

私の質問の仕方が悪くご面倒をお掛けしています。例えば、エクセルの場合は「ブック」がファイルの単位で、ブックの中にはシートで異なるデータも追加出来ます。私のACCESSデータベースは1つ「エクセルのブック一つ」で、そのデータベースの中にタイトルの異なるデータ、テーブル・クエリ・フォーム・他を多数保存し、マスターフォームにボタンを作って、タイトル別に呼び出して使っています。つまり、データベース「エクセルでいうブック」は一つしかありません。その一つのデータベース「エクセルで言うブック」の中で、フォームをコピーして使うと言った内容でございます。

エクセルとアクセスは異なりますので、説明の対象としてふさわしくないかと思いますが、このレベルの知識しかありませんので、宜しくご理解願います。

投稿日時 - 2019-06-15 10:51:31

お礼

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

投稿日時 - 2019-06-17 14:03:23

ANo.4

> 親近感を感じます。

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

投稿日時 - 2019-06-13 16:28:18

お礼

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

投稿日時 - 2019-06-14 05:14:56

ANo.3

> ACCESSのシステム上で問題はないのでしょうか。

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

投稿日時 - 2019-06-11 20:55:01

お礼

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

投稿日時 - 2019-06-13 15:13:42

ANo.2

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

投稿日時 - 2019-06-11 19:40:39

補足

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

投稿日時 - 2019-06-13 15:39:11

ANo.1

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

投稿日時 - 2019-06-11 17:07:18

補足

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

投稿日時 - 2019-06-11 20:00:17

お礼

ありがとうございます。

投稿日時 - 2019-06-13 15:12:51

あなたにオススメの質問