• ベストアンサー

アクセスコマンドボタンで登録。

アクセスのフォームで、コマンドボタンをクリックして、初めて登録ができるというのはどのようにすればいいのでしょうか?普通、登録画面といったら、テーブルを基にしてフォームを作成していいのでしょうか?それとも非連結にしてフォームからフォームへ登録という風にするものなのでしょうか?フォーム上のテキストボックスに一つでも文字を入力すると、×ボタンで消しても、データがテーブルに入っていってしまいます。これを防ぐことはできるのでしょうか?保存でもいいですし登録でもいいのですが、コマンドボタンを作成して、それをクリックして初めてテーブルにデータが入っていくという風にしたいのですが。どなたか分かる方居ましたらご教示ください。宜しくお願いします。

noname#49321
noname#49321

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

  • ベストアンサー
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.4

#2です > テーブルは部門コード、部門名、更新日の3つです。 > フォームには新規登録画面、修正、削除、参照、クリア、閉じると > コマンドボタンをもたせました。 それ程複雑では無さそうなテーブルですね 部門コードを管理する専用フォームでしょうか? で、コマンドで、新規、修正、削除、閉じるは、なんとなく判るのですが、参照とクリアって、どういう意味のものなのでしょうか? クリアは、訂正したもの等を登録をしないで元に戻すって意味でしょうか? 参照は、レコードのリストでもポップアップでもするのかな? > 何から手を付けていけば覚えられるのでしょうか? 私も独学ですが・・・参考書は、買いましたが読んでも判りませんでした 殆どがアクセスのヘルプと実地ですね・・・覚えたのは^^; VBAあたりになると、MSDNあたりをネットで参照するようになりましたが・・・ 覚えるとすれば、普通はVBAから手をつけないと思うのですが^^; テーブル、クエリ、フォーム、レポート、とやっぱり作成していく順番で覚えて行くものだと思いますが、クエリは奥が深い気がするので、必要のたびに戻るって感じでしょうか? フォーム、レポートでのVBAは、デバッグをステップ実行してれば、大体の流れが判りますし、理解しやすくなってます ただし、デバッグのステップと、流しで実行した場合、タイミングが変な場合があるので・・・ Debug.Print 変数 は、忘れないように大体入れてあることが多いです

noname#49321
質問者

お礼

ありがとうございました。いちおできました。 部門コードを管理する画面です。非連結のリストボックスにクエリから引っ張ってきた参照画面をつけたので参照はいらなくなりました。 頑張って勉強していきたいと思います。ありがとうございました。

その他の回答 (3)

  • nackfive
  • ベストアンサー率32% (21/64)
回答No.3

テーブルを元にする場合のやり方だけ。 コマンドボタンのClickイベントに docmd.RunCommand acCmdSaveRecord ×ボタンで保存されないようにするには Sub Form_Unloadイベントに If Me.Dirty Then 'もし編集されていたらDirty=True Me.Undo 'データを戻す End If 但し これだけだと、PgUpキーなどを押されてしまうと 保存されてしまうので 無効化しておく必要があります Form_KeyDownイベントに If KeyCode=vbKeyPageDown then KeyCode=0 End If その他のキーについては お調べ下さい。 こんな感じで 出来るかと思います。

noname#49321
質問者

お礼

ありがとうございました。その他のキーってどこで探せばいいのでしょうか??初心者なので全く分かりません。調べながら書いていきます。ありがとうございました。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

こんです^^; アクセスでのコマンドボタンでの上書き保存について。 http://oshiete1.goo.ne.jp/qa3025989.html の続きの話なのでしょうか? フォームの流れなど、いろいろこうしたいと、言うものものもあると思いますが・・・大体、どれでもやれます 具体的に、流れを記載したほうが良いかと思いますが・・・ 私の場合は、 メインフォームにリスト表示(リストボックス使用) リストをダブルクリックで、閲覧&訂正用フォームを起こし閲覧&訂正可能の操作(前回回答のした手法を使用することが多い) 新規はメインフォームに新規作成のボタンがあって、ボタンをクリックすると、閲覧&修正用フォームを追加専用で開き、新規作成用に使用するパターンになります (更新前処理で、追加専用で開いたか、そうではないかで識別させて処理を加えてあります) だから、前回紹介したVBAより複雑なものになってますし、レコードの移動は、フィルタを使用し1レコードしか閲覧しない前提で作成しているため実際考慮してない部分もあります 実際、ひとそれぞれ流れが相違するものだと思いますが、どうしたいです? > フォーム上のテキストボックスに一つでも文字を入力すると、 > ×ボタンで消しても、データがテーブルに入っていってしまい > ます。これを防ぐことはできるのでしょうか? これは、×を押しても更新処理を自動的に行うので、更新前処理で、Me.Undoを入れるしかないのですが、登録もしくは保存ボタンを押した時とそうではないときを識別するために・・・ Form_Current で、変数設定して ボタンをクリックして、変数の値を変更、レコードの保存アクションを稼動させて・・・ Form_BeforeUpdate で、「Form_Current」にて設定した変数設定と変化があるかないかでMe.Undoを動作させる、させないを稼動させてくるようになってくると思います まぁ、非連結で追加クエリを動作させると言うのも良く見ますけど・・・ この処理は、人によるところなのでは?

noname#49321
質問者

補足

ご回答ありがとうございます(>_<)。前回質問した内容はいちおできました。ありがとうございました<m(__)m>。。流れ的には同様のものなのでしょうが・・。初心者なので、アクセスの感じを掴む為に簡単なテーブル作成。フォーム作成をということで課題がでたのですが、前回と同様の作り方で書き込んでいったのですが、どーも上手く動いてくれません・・。テーブルは部門コード、部門名、更新日の3つです。フォームには新規登録画面、修正、削除、参照、クリア、閉じるとコマンドボタンをもたせました。オブジェクトのフォームからfrm_部門を開いたときに、その1つのフォーム内でコマンドボタンにて、6つの動きをさせたいのです。初心者で独学です。パソコンと参考書などを頼りに勉強しています。何から手を付けていけば覚えられるのでしょうか?宜しくお願い致します<m(__)m>

  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.1

こんにちは。 やり方は2つだと思います。 1つ目は仰るように非連結のフォームを作成し、登録をクリックでフォームの値をクエリかVBAでテーブルに追加するということです。 2つ目は、登録したいテーブル(元データテーブル)と同じテーブル構造の作業用のテーブル(テーブルA)を作り、それと連結したフォームにデータを入力していきます。登録をクリックでテーブルAのデータを追加クエリで元データテーブルに追加し、最後にテーブルAのデータを削除クエリで全て削除します。なので、追加クエリの実行と削除クエリの実行を順にマクロ(マクロ1)に登録してクリック時のイベントにマクロ1を割り当てるという方法です。 この方法ですと、新規登録のみの扱いになりますので、修正登録の場合は最初に追加クエリで抽出条件を設定し元データテーブルからテーブルAに追加、修正作業後、修正登録クリックで、更新クエリで元データテーブルの抽出条件のものにテーブルAのデータを上書きし、最後に削除クエリでテーブルAのデータを削除という手順になる為、修正専用のフォームを新規登録とは別に用意するか、同じフォームで行うなら修正開始ボタンと修正登録(終了)ボタンの2つを用意するかになると思います。 比較的簡単なのは2つ目の方法だと思います。VBAの知識などお持ちでしたら1つ目の方がスマートかもしれません。

noname#49321
質問者

お礼

ありがとうございました。

関連するQ&A

  • アクセスでの登録ボタンでの処理について。

    アクセス初心者です。新規登録用のフォームを作成しています。普通のフォームはマウス等の操作で前後の情報が見れますよね?(100件、情報が入力されていたら、100件見れますよね。)非連結で作成して、クエリに飛ばして、登録ボタンを押したものだけがテーブルに入っていくという構造はできるのでしょうか?ちなみにクエリから引っ張ってきた検索画面はフォームにあります。今の作成に仕方で、登録ボタンをクリックしても、テーブルに入っていきません。新規登録用フォームはMainMenu上に新規というボタンを設けてあって、それをクリックしたら新規登録用画面が開くという風に作りたいのです。テーブルに情報を入れていくのは非連結じゃ無理なんですか?どなたか分かる方いましたらご教示ください。よろしくお願い致します。

  • ACCESSのコマンドボタンにデータを表示

    ACCESSのコマンドボタンはフォームに 貼り付け、このボタンを押されたとき 決められた動作を実行します。 このボタンがフォームに表示されるとき ピクチャーか文字により表示されます が このボタンの表示を内部のデータを表示できませんか つまり、テキストボックスにテーブルにある  データを表示するように よろしくお願いします

  • アクセス2000でデータの追加がうまくいかないんですけど

    アクセス2000を使ってます。 基礎データというテーブルを作って、そこに「テキスト」というメモ型のフィールドを作り、 参照追加フォームというフォームを作って、その中に二つのテキストボックスを配置し、一方のテキストボックス1には「基礎データ」の「テキスト」をコントロールソースとして設定し、他方のテキストボックス2は非連結にし、コマンドボタンを二つ配置して、一方のコマンドボタン1を押すと、テキストボックス1のデータがテキストボックス2のデータにコピーされるようにVBAコードを書き、さらに、もうひとつのコマンドボタン2を押すと、非連結のテキストボックスのデータを、基礎データテーブルの「テキスト」というフィールドに追加する追加クエリを動かすようにしました。  このような状況で、コマンドボタン2を押すと、非連結のテキストボックス2のデータが、全角126文字までなら正常に動作するのですが、それ以上(全角127文字以上)になると、「引数が無効です。」というエラーが出てしまいます。 基礎データテーブルの「テキスト」はメモ型に設定してあるのに、どうしてこのようなエラーが出てしまうのでしょうか?誰か教えてください。  ※ためしに、追加クエリ単独で動かして、全角127文字以上のデータを入れた場合には、追加クエリは正常に動作します。これって、フォーム側の問題なんですか?  

  • アクセスのテキストボックスで

    質問の仕方が適切でないかもしれませんがご了承下さい。 Access2000を使用しています。 社員テーブルには「性別」フィールドがあり、男なら1、 女なら2が登録されています。その社員テーブルを基にした フォームを作成し、そこに非連結のテキストボックスを作成、 1なら男、2なら女と表示させたいのです。 新規登録時は「性別」フィールドに連結したテキストボックス の更新後に表示させるようなVBAを記述しておいたのでうまく いくのですが、登録済みのデータを呼び出した場合は表示され ません(更新しているわけではないので当然といえば当然なの でしょうが・・・)。 何かしなければいけないのは分かっているのですが、どのイベント 時にどのようなアクションをすればよいのか教えてください。 よろしくお願いします。

  • 帳票フォームコマンドボタンを使用不可にしたい

    アクセスについて自力で解決できないのでご教示ください。 バージョンは2003です。 テーブルの構成 フィールド名 あああ    テキスト型(主キー) 表示     YesNo型  ----------------------- です。 帳票フォームにテーブルのデータと 非連結のコマンドボタンを設置しているのですが 表示フィールドの値が0のレコードはコマンドボタンを Enabled = False (使用不可) としたいのですが可能でしょうか? コマンドボタンのプロパティには コントロールソースはないので不可能でしょうか? よろしくお願い致します。

  • アクセスのコマンドボタンについて

    アクセスについて教えて下さい。 コマンドボタンで、フォームのデータをワンクリックで開くように設定したいのですが、コマンドボタンウィザードを使って、 フォームの操作→フォームを開く→フォームを指定 という操作でボタンを作りました。 ですが、ボタンをクリックして操作しようとすると、 「イベントプロパティに指定した式 クリック時 でエラーが発生しました:名前が適切ではありません:(フォーム名)_Click   *マクロ名、ユーザー定義関数名、「イベントプロシージャ」以外の式が指定されています。   *関数、イベント、マクロの評価でエラーが発生しました。」 というメッセージが出てきて、フォームを開くことができませんでした。 ウィザードだけではフォームを開くボタンを作成することはできないのでしょうか? 何か対処があれば教えて下さい。 よろしくお願いいたします。

  • エクセル コマンドボタン

    1)Sheet1でコマンドボタンを作成。クリックするとフォームが表示さ  れます。そのフォームの中のテクストボックスに数字を入れ、それ  をSheet2のB2に挿入したいです。どうすればいいのですか? 2)Sheet2にコマンドボタンを作りました。Sheet2へ戻るようなボタン  を作りたいのですがどうすれば良いですか? 以上2つの質問です。是非教えてください。

  • アクセスで条件によるコマンドボタンの使い分け。

    いつもお世話になります。 アクセス2003で納品管理を作成中ですが、商品のレコードに「不使用」のチェックボックスと「注文入力」のコマンドボタンがあります。この「不使用」のチェックボックスがOnの場合は「注文入力」のコマンドボタンをクリックできないようにしたいと考えています。 フォームの形式は帳票フォームになっていますのでそれぞれのレコードによってコマンドボタンがクリックできるものと、できないものにしたいのですが、可能でしょうか。(できたらそのレコードは色も暗くしたいのですが。。。) どなたかご教授よろしくお願いいたします。

  • Accessのコマンドボタンについて

    Access97を使用しています。 Accessのレポート(単票形式)を作成したのですが、画面上のコマンドボタンをクリックしようとしてもカーソルが「虫眼鏡マーク」のままで作動しません。 超初心者なので「フォーム」と「レポート」の区別が今一つ付いていないのですが、「レポート」上ではコマンドボタンは使えないのでしょうか? やりたいことは、 (1) コマンドボタンを押すと、入力用フォームから該当するレコードの単票形式レポートが出力されるよう、設定したい(いちいち該当ページ番号を指定して印刷するのが面倒なので)。 (2) コマンドボタンを押すと、該当するレコードの入力用フォームと単票レポートとの間を行ったり来たり出来るようにしたい(修正・追記が多いので)。 現在は、入力用と出力用の2つの「フォーム」を作成してデータの行き来をしているのですが、レイアウトが違うだけでデータソース自体は全く同じなので、何となく間が抜けている気がするのです。メモリも食いそうだし。 初歩的な質問で申し訳ありませんが、宜しくお願いします。

  • アクセス2003のフォーム上のコマンドボタンについて。

    アクセス2003のフォームで一覧を作っています。その中の1つをクリックすると詳細画面に移動させようとコマンドボタンをおいたのですが、下記のエラーが出ます。対処法を教えてください。 エラーの内容です↓ テーブル’業者登録’はほかのユーザーが排他的に開いているか、既にユーザーインターフェイスを介して開いているので、プログラムによって操作することはできません。 ACCESSのバージョンは2003です。 ’メンテナンス進捗’というフォーム上に一覧があり、それぞれに詳細ボタンを置き、その詳細ボタンをクリックするとそのIDに見合ったメンテナンスの画面を開きたいです。 主テーブルは‘メンテナンス‘で副テーブルには’機器登録’と’業者登録’があります。‘メンテナンス‘と’機器登録’は機器管理IDで結ばれ、と’機器登録’と’業者登録’は業者IDで結ばれています。このリレーションの仕方が悪いのでしょうか?分かりづらくて申し訳ありません。

専門家に質問してみよう