Access2013の更新の許可について

このQ&Aのポイント
  • Access2013を使用している場合、フォームのプロパティから更新の許可を設定できます。
  • VBAを使用して更新許可ボタンを作成することもできますが、更新不可ボタンが正常に機能しない場合があります。
  • 原因としては、書き換えたTrueとFalseの値が正しく反映されていない可能性があります。具体的な解決策については、検証が必要です。
回答を見る
  • ベストアンサー

更新の許可(AllowEdits)について

Access2013を使用しています。 フォームのプロパティ →更新の許可 いいえ VBAに以下のコードを記述しました。 Private Sub 更新許可_Click() Me.AllowEdits = True End Sub Private Sub 更新不可_Click() Me.AllowEdits = False End Sub 更新許可ボタンをクリックしたとき、問題なく更新出来るようになるのですが 更新不可ボタンをクリックしても、更新出来てしまいます。 何処に原因があるのでしょうか。 なお、True→ -1 、False→0に書き換えてみましたが変化が有りませんでした。 出来ましたら、具体策をお願い致します。

  • jjj22
  • お礼率58% (17/29)

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

  • ベストアンサー
回答No.1

このフォームは連結フォーム(レコードソースにテーブルかクエリで設定してある)ですか。 もし非連結フォーム((レコードソースが空白)なら、AllowEdits の設定は無意味です。 AllowEdits プロパティは連結フォームのみ有効ですので。 連結フォームなのに、AllowEdits = False が効かないという場合は、フォームが編集中ではないですか。 レコード保存してから、更新不可 ボタンをクリックしてください。 あるいは、強制的にレコード保存知るか。 Private Sub 更新不可_Click() If Me.Dirty Then Docmd.RunCommand acCmdSaveRecord Me.AllowEdits = False End Sub

関連するQ&A

  • Access2010 SetFocusが当たらない

    Access2010です。 VBAにて、あるフォームの、デザイン上、「詳細」の中に存在しているテキストボックスにSetFocusでフォーカスを当てようと思ってます。 1 フォームロード時、フォームの「詳細」は非表示(当然、テキストボックスも非表示) 2 ボタンクリック時、フォームの「詳細」を表示し、テキストボックスにフォーカスを当てる という動作をしているのですが、2でテキストボックスにフォーカスがフォーカスが当たりません。どうしたらフォーカスが当たるのでしょうか? 以下、コードです。 Private Sub Form_Open(Cancel As Integer) Me.詳細.Visible = False End Sub Private Sub cmdボタン_Click() Me.詳細.Visible = True 'テキストボックスにフォーカスを当てる Me.txtテキスト.SetFocus End Sub よろしくお願いいたします。

  • Me.FilterOn = True は先でも後で

    Me.FilterOn = True は先でも後でも問題ないですか? アクセスのvbaでフォームにフィルタをかけるときに 今まで --------------------------------------- Private Sub コマンド2_Click() Me.Filter = "フィールド = '" & "test" & "'" Me.FilterOn = True End Sub --------------------------------------- とコードを書いていましたが --------------------------------------- Private Sub コマンド2_Click() Me.FilterOn = True Me.Filter = "フィールド = '" & "test" & "'" End Sub --------------------------------------- でも機能しました。 という事は、 Me.FilterOn = Trueは Me.Filter の前でも問題ないのでしょうか? Me.FilterOn = Trueは Me.Filter の後と習ったので疑問に思っています。 よろしくお願いいたします。

  • Access 1つのイベントに複数のVBA

    こんにちは! Accessについて、質問です!! あるフォームの『修正』というボタンのクリック時プロパティに、以下のVBAが組み込まれています。 Private Sub 修正_Click() CopyRec End Sub ここに新たに、 『メッセージボックス』『ウインドウを閉じる』VBAを加えたいのです。 現状として…… (1)Private Sub 修正_Click() CopyRec MsgBox "修正が完了しました" End Sub (2)Option Compare Database (下線) Private Sub 修正_Click() CopyRec End Sub Option Compare Database (下線) MsgBox "修正が完了しました" End Sub 上記(1)(2)は、失敗しています。 質問は2つあります。 (1)1つのプロパティに、複数のVBAを設定するのは可能ですか?可能なら、どのようにVBAを入力すれば正常作動するのでしょうか? (2)『ウインドウを閉じる』VBAの書き方が調べても分かりませんでした……。どのように入力するのですか? どちらか1つが分かる方でもかまいません。 回答よろしくお願いします!

  • 【VB.net】フォーム間でのやり取りについて

    先日、同じような質問をさせて頂いたのですが、 解決に至らなかったため、もう少し質問内容を工夫しますので、再度質問させてください。 ・実行したいプログラム フォーム1のボタン1をクリックすると、フォーム2を開くと同時にフォーム2ボタン1がvisible=Trueになる。 フォーム1のボタン2をクリックすると、フォーム2を開くと同時にフォーム2のボタン1がvisible=Falseになり、ボタン2がvisible=Trueになる。 ・書いたコード ---------------- Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim f As New Form2 f.Owner = Me f.Show() DirectCast(Me.Owner, Form2).Button1.Visible = True DirectCast(Me.Owner, Form2).Button2.Visible = False End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim f As New Form2 f.Owner = Me f.Show() DirectCast(Me.Owner, Form2).Button1.Visible = False DirectCast(Me.Owner, Form2).Button2.Visible = True End Sub End class ---------------- ・問題点 「nullreferenceexceptionはハンドルされませんでした オブジェクト参照がオブジェクト インスタンスに設定されていません。」 というエラーが発生します。 「DirectCast(Me.Owner, Form2).Button1.Visible = True」の部分のエラーです。 手書きで申し訳ありませんが、書きたいプログラムの参考画像も載せておきます。 数日前より調べては試し調べては試しと試行錯誤していますが、 正直手詰まりになっており、非常に困っております。 この他にも、フォーム間で命令を出しあいたい場面が多々あるのですが、 プロパティを変える程度のコードでつまずいていて、先に進めません。 手直しした簡単なサンプルコードを書いて頂けると非常に助かります。 以上、何卒よろしくお願い致します。

  • フォームを開いた時にVBAでデザイン変更の許可の設

    フォームを開いた時にVBAでデザイン変更の許可の設定が出来ない(access2003) デザインビューで手作業で操作するのではなく VBAで値を設定したいのですが Private Sub Form_Open(Cancel As Integer) Me.AllowDesignChanges = False End Sub をすると ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・  実行時エラー '2448':  このオブジェクトに値を代入することはできません。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ と言うエラーが出てしまいます。 標準モジュールで Sub test() Form_フォーム1.AllowDesignChanges = False End Sub としても同じエラーが出ます。 フォームのデザイン変更の許可は デザインビューで手作業で操作するしかないのでしょうか?

  • 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を作ればよいでしょうか? 説明不足の場合、補足いたします。よろしくお願いします。

  • VB6でスロットを作成したい

    VB6歴2ヶ月の初心者です。 フォーム上に ラベルコントロールが三つ コマンドボタンが二つ タイマーコントロールが一つ あります。 タイマーのプロパティは Enabled False Interval 10 です。 スロットを作成したいのですが、 ボタン1を一回押すごとに左からスロットが回り、 最後にボタン2で動きを止めたいのです。 一応自分でも書いてみたのですが、ここで行き詰まりました。 ウワァァァァァァヽ(`Д´)ノァァァァァァン! Private Sub Command1_Click() Timer1.Enabled = True End Sub Private Sub Command2_Click() Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Dim slot As Integer slot = Int(Rnd(1) * 9 + 1) Label1.Caption = slot End Sub 思い通りに動かすにはどんなコードにしたらいいですか?

  • メニューバーの使用可不可の

    初めて投稿いいたします。VB初心者です。 VB6.0(SP6)で、ちょっとしたテストアプリを作成中です。 メインフォーム(MDI)のメニューバーとツールバーコントロールの使用可能(不可)を切り替える方法を教えてください。 子フォームのボタンをクリックした際、内部処理実行中に、上記コントロールを一時的に使用不可とさせたい次第です。 現状は、下記のような方法で実現させていますが、あまりスマートな方法とは言えないように思います。 -----禁止させる場合-------------------------------- Private Sub CommandDisable_Click() 'メニューバー禁止 MDIForm1.mnuFile.Enabled = False   'ツールバーボタン禁止 MDIForm1.Toolbar1.Buttons(1).Enabled = False End Sub -------------------------------------------------- -----禁止を解除させる場合-------------------------- Private Sub CommandEnable_Click() 'メニューバー禁止 MDIForm1.mnuFile.Enabled = True   'ツールバーボタン禁止 MDIForm1.Toolbar1.Buttons(1).Enabled = True End Sub -------------------------------------------------- 上記の方法で、メニューバーまたはツールバーともにグレイ表記となり、割り当てた機能が呼び出されることを防ぐことは実現出来ています。 しかし、メニューバー、ボタンともに、クリックだけは出来てしまいます。 どなたか、クリックも含めて、使用不可とさせる方法を教えてください。 よろしくお願いします。

  • Vba UserForm SetFocus

    ExcelのVbaでUserForm上に英単語のタイピング練習のソフトを作ろうとしていますが、うまくいきません。コントロールのイベントについての理解が不足しているのが分かりました。 ユーザフォーム上の複数のテキストボックス間のフォーカスの移動について教えて下さい。 UserForm1にテキストボックスを3つ、コマンドボタンを1つ配置しました。それぞれTextBox1、TextBox2、TextBox3、CommandButton1とします。 Private Sub CommandButton1_Click() TextBox3.SetFocus ・・・(1) End Sub Private Sub TextBox3_Enter() MsgBox "In TextBox3" TextBox2.SetFocus ・・・(2) End Sub 各TextBoxのTabStopプロパティは「True」、「TabIndex」は番号順になっています。 コマンドボタンのTabStopプロパティは「False」にしています。 フォームを表示し、コマンドボタンをクリックするとエラーが発生します。 (2)の実行の後(?)、(1)がエラー表示されます。 各イベントの発生のタイミング、連鎖、終了等の理解が不足していて、その理由がよく分かりません。どなたか教えていただけないでしょうか。よろしくお願いします。

  • クリックイベントなのに、2回クリックしないとフォー

    クリックイベントなのに、2回クリックしないとフォームが閉じないです。 フォームに閉じると言うコマンドボタンがあり、クリックイベントで Private Sub cmd_閉じる_Click() DoCmd.Close acForm, Me.Name End Sub としてるのですが、なぜか1回ボタンを押しただけではフォームが閉じません。 2回目押した時にフォームがとじます。 ダブルクリックでも閉じます。 Private Sub cmd_閉じる_Click() 'DoCmd.Close acForm, Form_Fフォーム.Name End Sub のように、フォーム名を指定すると1回のクリックで閉じます。 しかしMe.Nameだと2回目じゃないと閉じない理由がわかりません。 Fフォームは他フォームから DoCmd.OpenForm Form_Fフォーム.Name, acNormal で開いたから2回クリックしないと閉じないのでしょうか?