• ベストアンサー

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

色々調べてはみましたが、なかなかヒットしなくって。。 ご存知の方がいらしたら教えていただけると大変助かります。 実はコマンドボタンで、とある連番(日付+4桁の連番数字)をコマンドボタンを押した時にテキストボックスに発生させるようにしているのですが、あまりPCに慣れていない人も操作する事が想定されますので、『間違ってボタンを2回押してしまった』なんて事が無いように、コマンドボタンが1回しか機能しないようにさせたいのですが、そんな事は可能でしょうか? レコードを識別する大元になっている重要なコードなので、知らない間に誰かがボタンを複数回押し、コード番号が変わってしまうと意味の無い物になってしまいますので。。。 このコードが主キーに出来るような構造であれば別の方法で簡単に心配する事を回避出来るとは思うのですが、主キーに出来ない為困っています。 ヒントだけでも構いませんので、ご教授下さい。 お願いします! アクセス2000 OS:ウイン98SEです。

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

  • ベストアンサー
  • ema_0222
  • ベストアンサー率34% (63/185)
回答No.1

whitemarkさんこんにちは。 コードが入力されるテキストボックスが、空欄のときのみコマンドが有効になるようにしてみてはいかがでしょうか。 フォームのコードを表示して、コマンドボタンのところに「If」構文を使って If IsNull(テキストボックス名) Then 'テキストボックスが空欄なら Exit sub               'Exit subする Else                 'テキストボックスが空欄でないなら ~~~~~ End If として~~の部分には計算され値を表示する式をそのままにしておきます。 この方法ですと、式を書く場所によってはコードが未入力のまま作業が進むのも防止できます。 NULLかどうか以外にも、Val(Format(テクストボックス名))=0 で数字に直すと0になる(先頭が0以外の数字の羅列なら0以外になるはず)ならとかも使えるかもしれません。 細かな内容はヘルプを参照してください。

whitemark
質問者

お礼

始めまして。早速お返事頂けてありがとうございます! 今日は緊急で昼夜とも出かけていたためお返事が遅くなってしまって申し訳ありません。 しかしそんな事も出来るとはびっくりしました。っと言うか、すごい名案ですね! いくら不慣れな人でも、テキストボックスの中を削除し、更にコマンドボタン押してしまう。。なんて事はあまり考えられないですよね。 僕的には眼から鱗っと言った感じです。 実はまだアクセス歴1ヶ月ほどでして、普通に使うのがやっと。。の状態です。 明日にでもVBAの本を探して、早速取り組んでみたいと思います! 名案ありがとうございました(^-^)/

その他の回答 (1)

  • zealzany
  • ベストアンサー率35% (19/53)
回答No.2

No1さんの回答で対応できるとおもいますが、さらに念のためコマンドボタンに発番をまかせるのなら、テキストボックスの編集ロック(Enabled)をコマンドボタンでOFF/ON制御した方が良いと思います。

whitemark
質問者

お礼

初めまして。 こちらも名案ですね! 実は見積りした物件が受注した場合に、見積もりコードでまとめた情報をそのまま受注簿に移動させたかったのですが、受注フォームを開いた瞬間から見積もりコードが存在するため、受注コードをプロシージャーで発生させるタイミングが難しく、半ば諦めていました。 アイデア次第で色々な事ができるんですね!アクセスって。 まだまだ勉強中の身ですが、またテンバってしまった時は何卒宜しくお願いいたします。 本当にありがとうございました(^-^)/

関連するQ&A

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

    初心者です。よろしくお願いします。 Acceess2002を利用しています。 質問は、サブフォームのある状態でメインフォームのヘッターにコマンドボタンを設置しサブフォームのレコードの最終コードにカーソルをもっていくことは可能でしょうか? サブフォームはウィザードの表形式を使っています。 説明がうまく出来ないのですが、行いたいことは1業者に何十件の入力をする際、カーソルで右のバーを動かさずに入力できるようにしたいと思っています。 宜しくお願いします。

  • Access 主キーの変更について

    調査データの集計、蓄積用のDBを制作しております。 制作しているDBは主キーに県コードが含まれています。 そのため、調査データの住所に変更があるとコードを変えなければなりません。 AccessでのDBはほぼ完成しており、今からコードの形態を変更することは避けたいです。(もともと古い独自のDBのデータを流用しています。) 現在、主キーに県コードが含まれていますが、それとは別に県コードフィールドを設けています。 ※コードの形態 (先頭の二桁又は一桁が県コード、コードは4桁又は5桁) 例   主キー 北海道 1001 東京  13199 沖縄  47001 新規のデータを入力する際に主キーを入力しているのですが VBAの知識がないので県コードは個別に入力しています。 住所が変わり県が変更になった場合主キーを変更する必要が あるのですが一対多でリレーションシップをいくつもしてあり サブフォームなども使用してます。 主のフォームで主キーを変更した場合、関連付けられたレコードの主キーも変更されるようにしたいのですが可能でしょうか?

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

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

  • アクセスフォームのコマンドボタン複写がうまくいきません

    主キーはオートナンバーで、顧客は個人ごとに番号を決めて作成中です。これをフォーム上のコマンドボタンで複写しようとすると、顧客番号が1件のみであればいくらでも複写ができるのですが、2件目からは複写できずエラーとして関係のないテーブルが作られてしまいます。なぜ複写できないのかわかりません。初心者なのでよろしくです。

  • access2002 コマンドボタンウィザードでフリーズ

    access2002を使っています。 新しいPCにインストールして半年つかっていましたが、今日、コマンドボタンを作る際にフリーズしてしまいました。 どうやら新しいPCにインストールしてからコマンドボタンを作る機会がなかったのできづかなかったようです。 新PCはwindowsVISTAでPCにもともとoffice2007が入っていまいたが、 accessが入っていなかったので、 所有していたofficeXPのaccessだけインストールしたという環境です。 この環境がまずいのでしょうか? フリーズの状況は、コマンドボタンを配置する時にウィザードが起動し、れーコードの移動やらレコードの操作を選べるようになっていて、それを一つでもクリックすると100%フリーズします。 フリーズ時に出るメッセージ//////////////////////// microsoft windows Microsoft Accessは動作を停止しました。 問題の詳細 問題のイベント名 APPCRASH アプリケーション名 MSACCESS.EXE ・ ・ ・ 障害モジュールの名前 StackHash_3842 //////////////////////////////////////////////// コマンドボタンのウィザード以外では今のところフリーズはなく動作しています。 別のデータベースでも試しましたが同様にフリーズします。 それ以外は機能 よろしくお願いいたします。

  • 【Access】Excelへのエクスポート

    OS:Windows2000 ソフト:Access2003 単票形式のフォームにコマンドボタンを配置し、 そのボタンをクリックするとフォームで表示されているレコードのみを Excel形式でエクスポートするという機能を作成しようとしています。 ボタンを押すとまずそのレコードの主キーを取得し、 その主キーでクエリ抽出してエクスポートをするのでしょうか? VBAで取得した変数を事前に作成クエリのSQL文の変数に代入なんて出来ませんよね、、、? どのようにすればいいのでしょうか。

  • Access2003でフォームにあるコマンドボタンで更にフォームを開く

    Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。 Access2003で社員情報管理のデータベースを作成中です。 社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。 この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、以下のようなVBAを記述しました。 Private Sub コマンドボタン_Click() DoCmd.OpenForm "詳細情報フォーム" Forms![詳細情報フォーム![社員番号].DefaultValue = Me![社員番号] End Sub 【社員番号】は7ケタの半角英数で、社員によって、数字だけの場合と、英数混じっている場合とがあります(データ型はテキスト型にしてあります)。 困っているのは、 1.上記を実行した際に、数字だけの社員番号は問題ないのですが、英数混じりの場合だと"社員番号"テキストボックスが「#Name?」という表示になってしまう 2."基本情報フォーム"のコマンドボタンをクリックして新規の"詳細情報フォーム"を開き(社員番号のみが反映され、他の項目は空欄の状態)、詳細情報を入力→保存したあと、別の社員番号で"基本情報フォーム"を開き、コマンドボタンで"詳細情報フォーム"を開くと、前に入力した社員の情報が出てきてしまう。 (つまり、"詳細情報フォーム"のもととなるテーブルに、1行でもレコードがあると、それが出てきてしまう。) 【詳細情報】は、 1.データを入力する社員としない社員とがいる 2.新規でレコードを作成する場合と、既存のレコードを上書きする場合とがある ので、もととなる"詳細情報テーブル"にその【社員番号の】レコードがなければ新規入力画面を、レコードがあればそのレコードを呼び出す形にしたいのですが、英数混じりの表示の件も含め、どうすれば、正しく表示されるか教えていただきたいです。 ぜひぜひよろしくお願いします。

  • VB6 コマンドボタン クリックイベントについて

    教えてください。 フォームに貼り付けているコマンドボタンのクリックイベントについてですが、クリックイベント内の処理で処理に時間がかかります。コマンドボタンを1度クリックすると、この処理を実行します。この状態であれば、問題ないのです。ところが、コマンドボタンを押して、処理している間にコマンドボタンを連打すると、ずーっと同じ処理を繰り返してしまいます。 クリックイベントが待ち行列にたまっているように思えるのですが、 これを回避する方法などがあれば教えてください。 ・待ち行列をクリアするとか ・待ち行列にイベントがたまっていても、1度しか実行しない。 などなど、具体的な方法とサンプルコードなどを教えていただけないでしょうか。お願いします。 環境VB6 WIN2K です。

  • アクセスでのキー違反とは??

    コマンドボタンをクリックすることで、クエリから登録、修正、削除ができるフォームを作成しました。ただ、処理はできるのですが、型変換エラーのため、0個のフィールドをNull値に設定しました。また2件のレコードでキー違反、0件のレコードで・・・とエラー表示がでます。原因は何なのでしょうか?無視すれば処理ができます・・。 コード→数値型、値要求(いいえ)インデックス(はい(重複なし)) 名称→テキスト型、値要求(いいえ)インデックス(いいえ) 更新日→日付/時刻型、値要求(いいえ)インデックス(いいえ)となっています。コードを主キーにしているので、インデックスの変更ができません。

  • MS Access 何となく不安なんですが。。

    またしても変な質問なんですが、皆さんの意見をお聞きしたいです。 アクセスを弄り始めて一ヶ月半程ですが、色んな壁にぶかりながら何とか自分のやりたい様な形に出来そうな目処がつきました。 。。。が、自分が作ったこのDBで何度か入力テストを行いテスト結果は上手くいってますが、この先レコード数がどんどん増えていった時に、どこかで破綻しないか心配です。 っと言うのも、幾つかのテーブルで主キーが複数ついており、例えば通常ですと見積テーブル中の見積CDフィールド単体(主テーブル)と明細テーブル中の見積CD(リレーションテーブル)にリレーションを設定し(逆に設定しても)一対多となるのは合点が行くのですが、見積テーブル中の見積CDと仮番CDを複数で選択し明細テーブル中の見積CDと仮番CDに関連付けないと一対多にならない(主テーブルになりえるテーブルが限定されてしまっている)と言うのが、どうも無理やりなやり方ではないのか、また無理なやり方な為にレコード数が何百何千と増えた時に、システムの破綻が起こらないか心配です。 各テーブルの中で複数の主キーが重なり合ったこの様な状態ですと主キー、リレーションなどへの理解の浅さが自分でも認められるだけに『上手くはいっているけど本当にこれでいいのか?!』っと言う不安が尽きません。。 色々と難解な文章で長々書いてしまいましたが、とどのつまり、色々なテストを数回行い上手くいくと言う事は、レコード数がいくら多くなっても大丈夫だと自信を持ってもいいのでしょうか? どうせ駄目になるなら今のうちに直しておきたいし、単にDBが駄目になるだけでなく、それまでのデータも駄目になってしまうことを考え、率直なご意見をお聞きしたいです! 変な質問だと思いますが、何卒宜しくお願いします。m(__)m