<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--基本操作をさらに考える
   >00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 



もし、もし・・・「この伝票間違い、この世から抹消したい!」という場合は・・・。
フォームから指定したレコードを削除する方法です。

これもいろんなやり方や考え方があるので、じっくりいろいろ研究していただきたいなって思うんですけど、今日は「削除クエリを使って、フォームに表示しているレコードを削除する」方法をお話しますね。

削除するのは、さっき作ったこのフォームからにしましょうか。



まず、「このフォームで表示している伝票番号のレコードだけをターゲットにするクエリ」を作ります。
とりあえず、下のような感じになりますね。


んでもって、ちょいとテスト・・・。データシートビューに切り替えると、1件だけ、表示します???

これが正しく動くことが確認できたら、このクエリを「削除クエリ」に切り替えます。

なんか適当な名前を付けて保存してください。名前はなんでもいいですよ。
ふふふ。まじめでしょう。まじめな名前を付けることにしたんです。ええ。


フォームのどこかに、適当なコマンドボタンをこしらえてください。標題も何かわかりやすいものに変えてくださいね。お任せします。

で、そのコマンドボタンの「クリック時」のイベントを作ります。

「クエリを開く」というマクロのアクションを実行します。
マクロでもいいし、下のようにコードを書いても、どっちでもオッケーです。クエリの名前、間違えないようにしてくださいね。


んじゃ、実際に何件か削除して試してみましょう。フォームを保存して、フォームビューにします。

で、削除クエリが動くコマンドボタンをクリックすると・・・。

ぎょー。なんかメッセージ出てきますね。
削除クエリ開こうとすると、必ず出てくる確認のメッセージです。エラーじゃないので、このまま「はい」ボタンをクリックします。


多分、こんな風になると思うんですが・・・。

「データの絞込み」のとこで、お話をさせていただいたと思うんですが、フォームというのは基本的に、「開いたときの状態」を保持します。
だから、今表示しようとしているレコードが削除されちゃったら、こんなふうに「表示したいのはやまやまだが削除されているようだ」という意味で#Deletedという表示になるんです。

気を利かせて、次のレコードでも表示してくれりゃいいのにねぇ。ほんとに気が利かないです。
まあ、でも、今、1件だけ表示するようにしてますからね。削除した後は、このフォーム閉じて、売り上げ一覧のフォームに戻ればいいんじゃないかな、って思います。


↓このメッセージがいやだ、っていう方は・・・「メッセージの設定」というアクションを使って「確認メッセージを非表示」にするといいでしょう。

マクロで処理を作ってる方は、「Q_伝票削除」を開くアクションの前に「メッセージの設定」アクションを動かすようにしてやります。引数は「いいえ」のままでオッケー。詳しくはヘルプを見てくださいね。

コードで作ってる方も基本的には同じです。
 DoCmd.SetWarnings False
 DoCmd.OpenQuery "Q_伝票削除"
としてやれば、この処理の間だけ、確認メッセージを非表示にすることができます。  

メッセージが出なくなるか、何度か試してみてください。
「この伝票いらない」ボタンをクリックすると、すっと削除されるようになるはずです。

いちおう、「メッセージの設定」をするのは、ひととおりテストが終わってからにしてくださいね。
もしかしたら、ちゃんと削除するクエリが作れてなくて、全件削除しちゃったりするかもしれないし・・・。確認メッセージって、とっても大切なんですよ。
非表示にするのは、正しく動作することを確認してからにしましょうね。


さて、いろいろご覧いただきましたけど、いかがでしょう。
もちろん、Accessの機能をすべてお話できたわけじゃないですけど・・・ひとつの操作を作っていくんでも、いろいろ工夫できるってとこ、ご覧いただけました?
いろんなことができるし、いろんなやり方がある。でも、何もしなければ何もできてこない・・・そんなもんなんです。Accessって。
ひとつひとつ、工夫して考えて作りこんでいくんですね。
その辺の理解を深めていただければ、皆さんがそれぞれ「こんなデータベース作っていきたいんだけどなぁ」って思い描いているものと、Accessの中のいろんな機能や操作が少しずつ結びついていくと思います。

とにかく、やり方はひとつじゃないんです。
Accessを習得するためには、まず「目的をもつこと」。「作りたいデータベースの完成品を思い描くこと」。です。
ただ漠然と「クエリを作りたい」とか「サブフォームを作りたい」とか思ってしまわずに、「顧客管理をしたい」ということをまず考えて、どういう項目が必要で、どういうフォームがあったら便利そうか、どういう検索ができたら便利そうか・・・ということを少しずつ考えていってください。

決して、ツールボタンやメニューバーなどの「操作方法を覚える」のではありません。
ここまでのお話でも、決して操作の方法を覚えるのではなく、段取りとか流れとか、少し視野をひろく持っていただいたほうがいい、ってとこ、おわかりいただけたんじゃないかなーって思います。

今度は、皆さんが「作っていきたい」と考えているデータベースと、今までお話してきた操作や段取りを少しずつ結びつけていってみてくださいね。


おしまい(拍手)