• ベストアンサー

アクセスにて、更新の処理を..

アクセスのフォームにおいて、普段は追加と参照だけで、更新はできないようにロックがかかっていて、いざ情報が間違っていて、情報を更新したいときは、更新したいレコードを(例えば)ダブルクリックすると更新できるようになって、更新が終了するとまた、更新はロックがかかる。というようなことはできるのでしょうか?

  • xb12r
  • お礼率100% (2/2)

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

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

以下のようなコードで、お望みの動作になると思います。 'フォームを開くときに、「レコードの編集」に制限をかける '(フォームのプロパティシートで、『イベント』タブの「開く時」に 'カーソルを移動させ、右端に表示される「...」をクリックしたら、 '「イベントプロシージャ」を選択して、以下を貼り付け) Private Sub Form_Open(Cancel As Integer) On Error Resume Next Me.AllowEdits = False End Sub 'レコードの、何もコントロールがないところをダブルクリックしたら '一時的にレコード編集の制限を解除 '(フォームのデザインビューで「詳細」領域を選択し、プロパティ  シートの「ダブルクリック時」のところで、上記と同様に貼り付け) Private Sub 詳細_DblClick(Cancel As Integer) On Error Resume Next If MsgBox("編集制限を一時的に解除します。", vbOKCancel) = 1 Then Me.AllowEdits = True End If End Sub 'レコード移動で、編集制限モードに戻す '(フォームのプロパティシートの『レコード移動時』で、上記と同様に貼り付け) Private Sub Form_Current() On Error Resume Next If Me.AllowEdits Then Me.AllowEdits = False MsgBox "制限モードに戻りました。" End If End Sub

xb12r
質問者

お礼

そのまま、コピーして張り付けたのですが、まさに理想どおりになりました!!ほんとうにありがとうございます。 コードに関してはぜんぜんわからないので、これからよく勉強します。

その他の回答 (1)

回答No.1

VBで記述します。 1.フィールドをダブルクリックしたらのイベントにロックを解除させるコードを記述。 2.データを書き換えて、そのフィールドを抜けるイベントに更新のロックをかける記述。 しばらくアクセスさわってないので、コードは自分で考えて下さい。 でも、かなり簡単にできるとオモイマス。 一応答は、「できる」とういことで。

xb12r
質問者

お礼

コードがわかっていれば簡単にできてしまうのですね。 これからよく勉強したいと思います。

関連するQ&A

  • フォーム内のデータをすべて更新したい

    フォーム内のデータをすべて更新したい ACCESSでデータ入力ができるようにフォームを作成しました。 わりと頻繁に同じ様な内容のデータを入力することがあり、レコードのコピーをボタンウィザードのレコードの複製を使わず、選択しているレコードで必要な部分のみをコピー用に用意したテーブルに追加して、追加したテーブルから元のテーブルに追加するというマクロを作成しました。 テーブルにはデータは追加されているのですが、フォーム上には「F5キー」やメニューの「すべて更新」ボタンをクリックしないとフォーム上に現れません、マクロ「再クエリ」や「コマンドの実行」-「最新の情報に更新」を入れてみましたが、「F5キー」やメニューの「すべて更新」ボタンをクリックした時のような動作はしてくれませんでした。 どういったマクロを作ればよいかご教示いただけないでしょうか。 緒ろしくお願いいたします。 ACCESS 2007を使っています

  • ACCESS mdbファイル 更新日時

     ACCESS(アクセス)2000で、住所録の管理をしています。フォームにより、入力や参照などを行っているのですが、フォームにより内容を参照しただけで、データを書き換えたり新規に追加したりしていなくても、ACCESSを終了すると、mdbファイルが更新され、更新日時欄が現在の日時になってしまいます。これを回避する方法があれば、ご教示いただきたいのです。つまり、データを書き換えたり新規に追加した場合に、mdbファイルが更新されるのはいいのですが、内容を参照しただけで変えていない場合には、mdbファイルの更新日時が更新されないようにすることができないのか、ということです。仕事場のパソコンと自宅のパソコンとで同期を図っているため、どれが新しい内容のmdbファイルであるのかをmdbファイルの更新日時により見分けたいものですから、このようなお尋ねをする次第です。どうぞよろしくお願い申し上げます。

  • Accessのフォームでデータの更新や、新規登録ができません

    Accessのフォームについての質問です。 単票形式のフォームを作成したところ、内容の更新もできず、新しいレコードを追加するためのボタン(▲と*のボタン)も無効になっているので、レコードの新規追加ができません。 フォームに入れるフィールド(氏名や商品番号など)を変えると、上記のような状況にはなりません。 何がまずいんでしょうか?

  • Accessのフォームを更新させるには

    Access2000を使用しています。 レコードを検索できるように同フォーム内にリストボックスを老いています。 そのリストボックスにはこれまで入力した人の名前が列挙されています。 そのリストボックスのだれかをクリックするとその人のレコードに移動するようフィルタでマクロを使っています。 新しいレコードを入力すればそのリストボックスにそのレコードの名前が追加表示されると思ってたのですが、されません。 閉じて拓き直すとちゃんと更新されてそのリストボックスに新しい名前が表示されます。 閉じて開き直さなくてもよいようにするにはどうしたらよいのでしょうか? わかりずらい文面とは思いますが、わかる方宜しくお願いします。

  • ACCESSでの画面更新について

    ACCESSの初心者です。 現在マニュアルを見ながら会社の携帯電話管理の仕組みを考えています。 今考えていることをACCESSでどう実現していいのか分からなくなってきましたのでアドバイスをお願いします。 業務としては、会社が社員に貸与している数千台の携帯電話の管理です。 毎月、新規発生分を追加したり、使わなくなったものを削除したり、使用者や付加情報を更新したりします。 追加ができるフォームは作成できたのですが、問題は削除と更新です。 主キーである電話番号を画面から入力して、該当する携帯電話の情報を画面に表示し、必要なところを修正する。 または該当レコードを削除する。 このような処理はACCESSには不得意なものなのでしょうか? 2冊ほど買って読んだマニュアルにはそのような例はありません。 更新するにも最初からレコードの順に該当するレコードまで送っていってそこで修正するようなものしか載っていません。 多分VBA等を使えばできるのだと思うのですが、ACCESS自体が初心者でVBAなどはますます分かりません。 簡単にできる方法は無いでしょうか? アドバイスをよろしくお願いします。

  • Accessでレコードの保存をせずにフォームを閉じたい

    Accessでデータベースのレコード追加を行うフォームを作成しています。 コマンドボタン(1)をクリック→新しいレコードの追加 コマンドボタン(2)をクリック→フォームを閉じる としています。(ウィザードを使用して、埋め込みマクロ?を設定しています。) コマンドボタン(1)でレコードが追加されるのは問題ないのですが、 コマンドボタン(2)をクリックした場合も、レコードが追加されていることに気がつきました。 一般的に入力する人は、 データを追加しようと思って入力していたけれど、 途中でやめてフォームを閉じることってありますよね? そういう場合にレコードが追加されてしまったら問題だと思ったのです。 ですが、どうしたらレコードの追加をせずにフォームを閉じられるかがわかりません。 それって可能でしょうか? Access初心者です。難しいVBAとかはまだよくわかりません。 何か方法、アドバイス等ありましたら よろしくお願いします。

  • ACCESSのサブフォームについて

    ACCESSにおいて、サブフォームにデータを表示させた状態で、あるレコードをダブルクリックで選択させ、 そのデータ(対象レコード)をメインフォームに戻って使用させるにはどのようにしたらよろしいのでしょうか? サブフォームの該当箇所に、ダブルクリック時イベントを貼り付けて、 制御をメインフォームへ移すのでしょうか。 よろしくお願いします。

  • アクセス レコードセットを更新できません

    アクセスは初心者ですが、会社で少しずつ勉強しながら、会社のアクセスのシステムを管理しています。 先日から、突然既存のアクセスのシステムで、フォームを入力しテーブルに追加しようとすると「レコードセットを更新できません」とメッセージが出てきて、データを更新できなくなってしまっています。 特にアクセスを変更したりしていないのですが、突然なってしまいました。 今まで問題なく動いていたので、なぜそういったメッセージが出るのか分からず、困っています。 どういった対策をしたらよいでしょうか。 ご助言をお願いいたします。

  • Access 更新キャンセルするには?

    Access2000で作成しています。 フォーム上でデータを書き換え後、更新をしない場合はどうしたらよいのでしょうか? 【希望する流れ】  1.データを変更  2.「更新」ボタンクリック     「データの更新をします。よろしいですか?」のメッセージ   (1)更新する場合:データを更新     「データが更新されました」のメッセージ   (2)更新しない場合:データを変更前に戻す     「データの更新がキャンセルされました」のメッセージ  3.フォームを閉じる  4.別のフォームを開く この動作をフォーム上にある「更新」ボタンのクリック時イベントにすることはできますか? とりあえず、現在は以下のようなものが作ってあります。 「VBA」  Private Sub Form_BeforeUpdate(Cancel As Integer)  '更新前確認   If MsgBox("更新します。よろしいですか?", vbYesNo, "更新確認") = vbNo Then   Cancel = True   Me.Undo   End If  End Sub 「更新」ボタンクリック時(こちらはマクロです)  ・フォームを閉じる  ・別のフォームを開く 今の状況では、更新する場合は問題ないのですが、更新しない場合、 「このレコードを保存することができません。  レコードを保存する時にエラーが発生しました。  ・・・・・・・・・・・」 というメッセージが出てきてしまいます。 どのようにVBAを作ればよいでしょうか? 説明不足の場合、補足いたします。よろしくお願いします。

  • ADOでエクセルからアクセスにデータを追加したいのですが、「CursorType」と「LockType」がどれが適切かわかりません。

    ADOでエクセルからアクセスにデータを追加したいだけなのですが 「CursorType」と「LockType」がどれが適切かわかりません。 CursorType 0 adOpenForwardOnly   レコードの前方スクロールだけが可能な静的カーソル。 (デフォルト) 1 adOpenKeyset 他のユーザによる変更データを参照可能。但し、追加データは参照できず、削除データにはアクセスできない。 2 adOpenDynamic 他のユーザーによる追加、変更、削除の操作が即座に反映される。 3 adOpenStatic レコード集合のコピーによる静的カーソル。前方、後方への移動が可能。 LockType 1 adLockReadOnly 読み取り専用。 2 adLockPessimistic レコード単位での排他的ロック。編集操作開始時にレコードをロックする。 3 adLockOptimistic レコード単位での共有的ロック。Updateメソッドを呼び出し時にレコードをロックする。 4 adLockBatchOptimistic 共有的バッチ更新。即時更新モードに対するバッチ更新モード。 ・エクセルもアクセスも使用しているのは自分ひとりです。 ・LockTypeについては Updateメソッドを使用してアクセスにデータを追加するため「adLockOptimistic」が適切かなと思うのですが CursorTypeの静的・動的がわからず判断できません。 ご教授よろしくお願いします。