• 締切済み

Access2000

こんにちは。 Access初心者です。 フォームに多数の入力項目がある為、現状の設定だと、 ちょっとでも項目を変更した瞬間に何の確認もなしに レコードが上書きされてしまいます。 変更があった場合に再確認のボップアップ画面が出てきて、 「はい」を選んだ時だけ、上書きされるような機能を 持たせたいのですが、やり方が全くわかりません。 インターネットでいろいろ調べて試しはしてみたのですが 全く反映されません。 どなたか、わかりやすく設定方法を教えて頂けませんでしょうか? どうぞよろしくお願い致します。

この投稿のマルチメディアは削除されているためご覧いただけません。

みんなの回答

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

#1です ぱ~っと、見たところ、おかしな所は無いですね しかし DoCmd.RunCommand acCmdSaveRecord で、キャンセルが起きているって事は、 ussave = True が、有効に働いてなく Private Sub Form_BeforeUpdate(Cancel As Integer) で、「Cancel = True」が、動作していると、言うこと・・・ 判断する方法として、 Dim ussave As Boolean を、書き換えて、 Dim usSave As Boolean として、すべてが「ussave 」から「usSave」へ自動的に書き換われば、すべてが同じフォームのモジュール上にあるということ、ならない場合は、記載している場所を間違えてるということ 多分、モジュールの記載場所を間違えてるんでしょかね?

sakomax
質問者

お礼

質問番号4767600 へ続きを画像付きで投稿致しました。 よろしくお願い致します。

sakomax
質問者

補足

私もそう思います。 もうひとつ画像を見ていただけますか? Dim usSave As Boolean が変な場所に記載されています。

全文を見る
すると、全ての回答が全文表示されます。
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.6

#1です > エラー画面を載せますので、一度見ていただけますでしょうか? エラー画面は、見ても仕方ないかと、モジュールの記述ミスでしょうね その画面なら、こちらでも、ミスを故意に作って、再現可能です ですので、貼るなら、Visual Basic Editerで、モジュール部分を、ファイルエクスポートして、テキストで、貼り付けるんでしょうけど・・・ やり方が、判るかどうかはね^^; 参考に、再現可能な画面を貼ると、こんな感じでしょ

sakomax
質問者

補足

こんにちわ。 最初の質問部分に、記述も記載した画像を 載せました。 一度、添削をお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.5

#1です > 当初の解説にございました、Option Compare Databese > という標記は出てきません>< これは、出てきた!って言われる > private Sub Form_Current() > End Sub です。 の上に記載されていると思いますが・・・無ければ、考えないで、エディタで、一番上に Dim usSave As Boolean を記載ください > private Sub Form_Current() > End Sub です。 の「Sub~End Sub」の外に記載します ですので、最初であれば・・・ Dim usSave As Boolean private Sub Form_Current() End Sub のようになります

sakomax
質問者

補足

ありはとうございます。 やってみたのですが、どうしてもエラーが出てしまいます。 エラー画面を載せますので、一度見ていただけますでしょうか? よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.4

#1です > フォームのモジュールですが、「・・・」をクリックした後に、 > 確かに左上に、モジュールを選択するアイコンが出てきます。 > 「新しい標準モジュール」の選択でいいのでしょうか? 何か違うような?・・・ クリック後、 「式ビルダ」 「マクロビルダ」 「コードビルダ」 って、出てきませんか? このうち「コードビルダ」が、そうなんですが・・・ そうすると、Visual Basic Editerが、起動します > また、Dim ussave As Boolean > を入力した後に、保存ボタンを押すと、「次のオブジェクトへの変更 > を保存しますか?」 > と聞かれますが、「はい」を選択するとこれで設定はOKなのでしょうか? Visual Basic Editerで、保存を押した時、質問文が出たような記憶が無いです > 一応、教えて頂いたとおりに入力してみたのですが、 > 保存ボタンをクリックすると、runcommandの実行はキャンセルされ > ましたという文章がでてしまいます・・・ えっと、#1での回答を実施した前提で記載してたので、#1で記載した内容を実施してない、確認していないなら・・・ #2から、読んで、そのままにしてください 「Cancel = True」を「Me.Undo」に変更したのは、「DoCmd.RunCommand acCmdSaveRecord」が、Cancelを受けると、質問のとおり、キャンセルを受けたと言う警告が、出るために変更してあります 何か、既に、記載しているところが、違うのでは?って、思ってるのですが・・・

sakomax
質問者

お礼

こんにちは。 何度も何度もありがとうございますorz 感謝しております。 >クリック後、 >「式ビルダ」 >「マクロビルダ」 >「コードビルダ」って、出てきませんか? >このうち「コードビルダ」が、そうなんですが・・・ >そうすると、Visual Basic Editerが、起動します 確かに、出てきました! ただ、Visual Basic Editerの画面になった後、 表示されているのが、 private Sub Form_Current() End Sub です。 当初の解説にございました、Option Compare Databese という標記は出てきません>< どの部分に表示されているのでしょうか? よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.3

#1です > (ここは、フォームのモジュールではなく、オブジェクトの > モジュールの事でしょうか?) フォームのモジュールです オブジェクトのモジュールに記載しても、機能しません > (これは、どこに対して設定すればよろしいのでしょうか? > 入力できる項目全てに対してでしょうか? > レコード移動時のイベントとはどこから設定できますか?) えっと、フォームのイベントです フォームをデザインビューで開き、左上の四角を、クリックすると、黒い四角が、現れます(または、メニューの編集、フォーム全体の選択をクリック) その状態で、プロパティのイベントを見てください そうすると「レコード移動時」と言う、プロパティが、あります それをクリックすると、右側に「…」が、出ますので、それをクリック で、モジュールを選択すればOKです 選択後、モジュール画面が出て、 Private Sub Form_Current() End Sub の状態で、モジュールの記載が始まります > >フォームの更新前処理のイベントを書き直して > (これは、具体的にどの部分を書き直せばよろしいのでしょうか?) #1で、回答したとおり、動作テストした前提で、記載してます ですので、#1と#2の差異を書き直すって、意味です > ご回答では、最後に「保存」のコマンドボタンを作成し、クリック時 > のイベントを設定するという解説になっておりますので、それまでの > イベント設定をどこに対して行えばよいのかがわかりません。 すみません フォームのイベントは、フォームに、コマンドボタンのイベントは、コマンドボタンにと、言うことで・・・ 何が、判らないのか?判らない状況です^^;

sakomax
質問者

お礼

早速の御返事ありがとうございます。 フォーム全体へのイベント設定適用はそういう風にするんですね。 すごく勉強になりました。そしてそんなことも知らずに申し訳 ございません>< フォームのモジュールですが、「・・・」をクリックした後に、 確かに左上に、モジュールを選択するアイコンが出てきます。 「新しい標準モジュール」の選択でいいのでしょうか? また、Dim ussave As Boolean を入力した後に、保存ボタンを押すと、「次のオブジェクトへの変更 を保存しますか?」 と聞かれますが、「はい」を選択するとこれで設定はOKなのでしょうか? 一応、教えて頂いたとおりに入力してみたのですが、 保存ボタンをクリックすると、runcommandの実行はキャンセルされ ましたという文章がでてしまいます・・・ 原因が全然わかりません><

全文を見る
すると、全ての回答が全文表示されます。
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

#1です 少し応用すれば、可能だよ フォームのモジュールを開いて、 > Option Compare Database の下に Dim usSave As Boolean を追記 フォームのレコード移動時にイベントで Private Sub Form_Current() usSave = False End Sub フォームの更新前処理のイベントを書き直して Private Sub Form_BeforeUpdate(Cancel As Integer) If usSave Then If Me.Dirty Then If MsgBox("内容が変更されていますが保存しますか?", vbYesNo) = vbNo Then Me.Undo End If End If Else Cancel = True End If End Sub コマンドボタンを配置して、クリック時のイベントに Private Sub [コマンド]_Click() usSave = True DoCmd.RunCommand acCmdSaveRecord usSave = False End Sub と、記載 [コマンド]は、コマンドボタンの名前によって、異なるけどね 質問の文章から、イメージできる内容だと、こんな感じかな? イメージしてた物と違う、思ったとおり動作しないと、言うのは・・・ Acc2000が、手元に無いから確認できないけど^^; Acc2002では、動作確認してますよ

sakomax
質問者

お礼

丁寧な回答をありがとうございます。 やってみたのですが、わからない点がございます。 >フォームのモジュールを開いて、 >Option Compare Databaseの下に >Dim usSave As Booleanを追記 (ここは、フォームのモジュールではなく、オブジェクトの モジュールの事でしょうか?) >フォームのレコード移動時にイベントで (これは、どこに対して設定すればよろしいのでしょうか? 入力できる項目全てに対してでしょうか? レコード移動時のイベントとはどこから設定できますか?) >フォームの更新前処理のイベントを書き直して (これは、具体的にどの部分を書き直せばよろしいのでしょうか?) ご回答では、最後に「保存」のコマンドボタンを作成し、クリック時 のイベントを設定するという解説になっておりますので、それまでの イベント設定をどこに対して行えばよいのかがわかりません。 何度も質問してしまい、申し訳ございませんが、ご回答の程 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.1

設定方法??? Acc2000にて、動作確認してませんので、確認してみてください フォームの更新前処理に、イベントを作成して・・・ Private Sub Form_BeforeUpdate(Cancel As Integer) If Me.Dirty Then If MsgBox("更新しますか?", vbYesNo) = vbNo Then Cancel = True End If End If End Sub と、なるように転記ください フォームをセーブして保存、再度開いてみて、挙動確認してみてください

sakomax
質問者

お礼

ありがとうございました。 もう一点教えていただければ幸いです。 フォームに入力する項目が多数あり、頻繁に入力内容の変更が 行われる為、入力後の確認が必要です。 しかし、通常のAccess設定は内容を変更しても確認のポップアップは 表示されず、自動でテーブルに上書き保存されてしまいますよね。 いくつかの内容を変更し、最後に「保存」ボタンを押した時に、 前の内容と変更点があれば、「内容が変更されていますが保存しますか?」 とポップアップ表示で確認してくれるように設定したいのです が、やりかたが全くわかりません>< どこにどのように式を入力すればいいのでしょうか・・・ Accessは詳しいほうではないので、どうか教えて頂ければ 幸いです。よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access2000(>_<)

    Access2000を使っています。 既存のデータベースからレコードを削除できないように設定したいと思っています。 そこで、フォームのデザインにて、フォームのプロパティを開き、「データ」タブで「削除の許可」を「いいえ」にしてから閉じてみたのですが、試しにテーブルでレコードを削除してみると、削除できてしまいます。 再びフォームのプロパティを見ると、「削除の許可」が「はい」に戻っています。変更が保存されていないようです。 同様に、特定のフィールドの上書きを禁止したいので、同じくフォームのデザインで、上書きを禁止したいフィールドのテキストボックスのプロパティの「データ」タブにて、「編集ロック」を「はい」にしてから閉じましたが、この変更も保存されておらず、編集ができるままの状態です。 どうすれば変更を保存できるのでしょうか…。 またほかに、レコードの削除を禁止する方法、特定のフィールドのみ上書きを禁止する方法があれば教えてください。初心者なのでわかりやすく教えていただけると助かります。よろしくお願いします。

  • Accessのふりがな自動入力

    お世話になります。 Accessの振り仮名自動入力機能について質問致します。 ウィザードで振り仮名自動入力を設定したのですが、 テーブルから入力すれば設定が反映されるのに、作成 した入力フォームでは自動入力機能が反映されません。 これは何故なのでしょうか? 以前試したときは、ちゃんと入力フォームでも自動入力されたのですが・・・・。

  • Microsoft Access 2000

    2つのフォームで一方の値をもう一方のフォームに代入したいのです。 方法はコマンドボタンを押すことによって、AフォームからBフォームに2項目同時に同じレコードに代入したい。コマンドボタンに“値の代入マクロ”を設定します。 Aフォーム 代入したい項目のデータ型=2つともオートナンバー型(AN項目,AG項目)   レイアウト=2つともリストBOX(1列目がAN項目,AG項目) Bフォーム 代入されたい項目のデータ型=2つとも長整数型(BN項目,BG項目)   レイアウト=2つともテキストBOX 現状はAフォームの2つの項目のどちらか1つしか代入できません。 Aフォームの代入したい項目は新レコードではなく、既にデータが入力されているレコードのIDをBフォームの新レコードに代入したいのです。 コマンドボタンを押すとエラーは表示されず、フォームは正常に閉じます。しかし、テーブルを見るとどちらか一方のレコードにはデータが入力されていないのです。 代入されたいBフォームは、常に新レコードで主キーは設定していません。Bフォームに代入されるAN項目・AG項目の値は、その他のレコードの値と重複しています。 いきずまって困っているので、みなさんの力をお借りできたらと思って書き込みました。イメージが湧きにくいとは思いますが、よろしくお願いします。

  • アクセスのように

    3つの項目を入力し、ファイルに保存していきます。 そして、入力フォーム上にそれまで入力したデータを 表示させ、修正などを行うことは可能でしょうか? アクセスのように1レコードごと参照でき、編集できるようにしたいのですが(とにかくPerlで)。 どうかよろしくお願いします。

    • ベストアンサー
    • Perl
  • ACCESS SELECTで始まるフィールド

    ACCESS2003です。 他部署の人が使用していたACCESSの改変を依頼されました。 フォーム部を変更したいとのことだったので、 フォームのフィードリストを確認しながら、参照先に該当するクエリを変更していました。 あるフォームのフィールドリストを確認したら、「SELECT」で始まるフィールドがありました。 しかし、どこを探しても「SELECT」で始まるクエリもテーブルは存在しません。 どこから参照されているのかがわかりません。 プロパティのレコードソースから変更して保存しようとしたら、上書きできずクエリ名を求められてしまいます。 追加を行うには、どこから行えばいいのでしょうか?

  • アクセスであるフォームから別のフォームへリンクさせる際の不具合について

    アクセス2000で、あるフォームからコマンドボタンを用いて別のフォームへリンクさせました。氏名というフィールドを共通の項目としてリンクさせたのですが、氏名を入力し、コマンドボタンをクリックした場合、リンク先には飛ぶのですが、リンク先には前に入力した氏名が反映されていません(氏名も何も入力されていないフォームが開きます)。 フォーム入力画面で、氏名を入力したとに、新しいレコードを開き、その後もう一度、氏名を入力したレコードに戻って、ここでコマンドボタンをクリックすると今度はリンク先にも氏名が反映されています。 これは、どこに問題があるのでしょか。

  • ACCESSにて・・・

    accessにて・・・ フォームには初期値としてテーブルのデータがテキストボックス等に表示されます。 本来は、変更すべき項目があれば変更して(この時点ではテーブルは更新されない)、更新ボタンを押すとテーブル更新・・・としたいのですが・・・フォームのテキストボックス等に入力した項目が入力した時点でテーブルに更新されてしまいます・・・何か設定があるのでしょうか?

  • XP アクセス2002にての文字入力

    アクセスを使用していて文字の入力時にレコードを移動するたびに半角英数にかわってしまいその都度変更しないと入力が出来ません。 何かの設定とは思うのですがわかりません。どなたかおしえていただけないでしょうか? IMP入力モードなどの設定は確認済みです。どのアクセスのファイルを開いてもレコードの移動時に変更されています。

  • アクセス 主キー・INDEX無フォーム背景色

    Access2010でフォームに入力する際に、レコード数と確認項目も多いため、入力時に 該当行が一目でわかるようにしたいのですが、主キーもINDEXも無いフォームの背景色を 以下のように変更する方法がわかりませんので、お教え願います。 データは、日々増減します。 ((1)ができればベストですが、無理なら(2)でも構いません) (1) カレント行の背景色の変更および文字拡大 (2) 1行毎に行の色をつける

  • Accessのエラー (いくつかあります・・・)

    アクセスでデータを入力したのですが、なぜか下記のエラーがでます… *作成したアクセスデータ* テーブル 項目AのCDと項目A、項目BのCDと項目B、項目CのCDと項目C、項目A~CのCDとその他繰り返し入力しないデータ の合計4つのテーブル それらすべてをリレーションでつないでます クエリ 全項目入りのテーブルを元に作ったもののみ フォーム クエリを元にウィザードを使って作成 *エラー* (1)クエリを作った時に、1つでもCDが入力されてないフィールドがあるとその行全体が表示されなくなる  (CDを入力したら表示されますし、テーブルではCDが入ってなくても全て表示されてます) (2)フォームで新たにデータを入力しようとしても一切入力できないし、変更もできない時がある (使用可能等の項目は一切触っていません) (3)フォームでCDが入ってる箇所を未入力にしたままでは保存できずに、「CDと値が一致しません」?のようなエラーメッセージがでる (すみません、エラーメッセージはうろ覚えです…) (4)なぜか昇順で番号を並べ替えていたのに、フォームでデータを追加したら、昇順が反映されずに「1,11,2…」のようにフォームのみ表示される (テーブル・クエリは反映されています) このエラーの原因がわかる方ぜひ教えてください!! よろしくお願いします。