• ベストアンサー

accessのクエリで、該当するデータがなかったときの処理

Accessを使って仕事をしています。クエリで該当するレコードがないとき、空白のレコードを表示して新しいデータの入力をするようになっています。そうではなく、データの有る無しを調べ、あった時は続行、なかった時は別のフォームを開くなどをしたいのですが、どうしたらよいのか分かりません。どなたか、分かりやすく教えてくださることを期待しております。どうぞよろしくお願いします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

あまりこういう処理にしないので今考えましたが・・。 クエリー1のレコード件数を取得して0の場合は別フォームを開く Function Sample() Dim db As Database Dim rs As Recordset Dim stDocName As String Dim stLinkCriteria As String Set db = CurrentDb Set rs = db.OpenRecordset("クエリー1") rs.MoveLast If rs.RecordCount = 0 then stDocName = "別フォーム" DoCmd.OpenForm stDocName, , , stLinkCriteria End If End Function これで行けるのではないかと思います。

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

その他の回答 (1)

  • ykkw_2001
  • ベストアンサー率26% (267/1014)
回答No.1

表示する前に、レコード数をカウントし、判定してはどうでしょう。 CountOf の使い方を調べてみてください。

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

関連するQ&A

  • アクセスのフォームでデータ元をテーブルからクエリにかえたい

    上手く表現できるかどうかわからないのですが、頑張って書きます。少々長いです。 アクセスでフォームを使ってデータ入力しています。これは単純で、あるテーブルへのデータ入力をフォームを使ってやるだけのことです。このテーブルの中に「都道府県」というフィールドがあります。ある事情からこのフォームを使ってデータ入力(または修正)をするレコードは、「都道府県」のフィールドが「福岡県」のものだけでよくなりました。 そこで、「都道府県」に「福岡県」を持っているレコードだけを取り出すクエリを作ります。このクエリを元にして、同じフォームでデータ入力したいのです。入力項目は全く同じです。「福岡県」をもっているレコードだけが全く同じフォームで表示されるようにしたいのです。 もとのテーブル名を「全データ」とし、クエリを「福岡県抽出クエリ」と呼ぶとすると、どこかで「全データ」を「福岡県抽出クエリ」に書き換えればすべてのテキストボックスのデータ元が入れ替わってくれると思うのですが、それでいいのでしょうか。その場合、どうやったらいいのでしょう。 なぜ一からファームを作り直さないかというと、テキストボックスの大きさや配置を決めるのに膨大な労力を費やしていて、全部をやり直したくないからです。 どうかお願いします。ご指導ください。

  • Access2007のフォームとクエリについて

    Access2007、OSはwindows7での開発です。 フォームのレコードソースに自分で作ったクエリを張り付けているのですが、 コードの中でクエリを変更し、その変更した内容がフォームに反映のされ方がおかしくて困っています。 前の画面で年月を入力し、ボタンをクリックすることで次の画面へ移行し、前の画面の年月でクエリを書き換えています。クエリは書き変わっていますし、クエリを書き換えた後にフォームをリクエリしています。しかし、フォームに反映されているデータは直前に入力した年月ではなく、その1つ前の年月のデータが出てきます。 流れとしましては、 年月入力画面で年月入力⇒作成ボタン押下で時間テーブルを見て、データが無ければ新しく作る。あればそのデータを表示というながれです。 説明下手なので理解しにくいかもございませんが、ご協力よろしくお願いします。

  • ACCESS2000 クエリーを開いてテーブルのデータを更新したい

    ウィンドウズ98,ACCESS2000です。 二つのテーブルがあって、リレーションがあります。 これを元にクエリーを作成して、クエリーを表示させたフォームでデータの更新や削除を行いたいと思っております。 が、実際やろうとするとこのレコードセットは更新できませんとでます。 何か考えられる理由はありますか? よろしくお願いします。

  • クエリーで全部のデータを抽出する方法

    アクセスのクエリーでデータを抽出する時、具体的にはフォームでデータを入力し抽出するのですが、たとえばフォームのテキストボックスに数字を入れないとそのクエリーのフィールドは抽出がかからないようにしたいのです。(抽出フィールドが1つなら数字をいれなければクエリーのデータすべてが表示される) ----------------------------------- フィールド   A      B     c テーブル   テーブル1 テーブル1 テーブル1 抽出条件    []    [] または    ---------------------------------- 上はクエリーのデザインですがクエリーをひらくと抽出条件をきいてきますがA列は何も入力しないでB列では1と入力するとBの列に1の入ってるレコードを表示させたいのです。(もし空欄が無理ならAの列の時何かある文字を入力すると全部表示になる、でもいいです。) まわりくどくなりましたが、アクセス超入門者です。よろしくおねがいします。

  • ACCESSのクエリー表示について

    ACCESSのクエリー表示について 困っています。 現象としましては、私が作成したMDBなのですが、フォームから日付入力を行い、その指定範囲のみのデータを表示するだけなのですが、私のパソコンでは正常に表示されるのに、他のパソコン(ネットワークでつながっていて、MDBもネットワークのフォルダーにおいています)では表示されません。 クエリー単体で動かすと正常に動いているようなのですが、フォームに結果を映すとなるとなぜか表示されなくて、クエリーのデータも0件のようです(確実にあるはずなのに) パソコンが違って、動く動作が違うと、どこを調べていいのやらわかりません。 クエリー自体もあるテーブルのデータの日付範囲のみ指定している簡単クエリーなので、 別に複雑なわけでもありません。 困っています。よろしくお願いいたします。

  • アクセスでのデータ管理について。

    アクセスで検査データをIDや依頼日などで検索した場合、クエリの一覧で検索結果を表示させるようにしているのですが、この一覧から一つのレコードをクリックすると、そのレコードの入力フォーム(そこに詳細が表示されているので見るときに便利なので)が開くようにしたいのですが可能でしょうか?検索結果がクエリ表示しか考えられないのですが、他によい方法があったら教えてください。よろしくお願いいたします。

  • Access2010 更新データのレポート表示

    Access初心者です。 新規データを入力しても、レポートが更新されずに困っています。 (テーブルや、フォーム内では、データは更新されています) エクセルデータをAccess2010にインポートして、元テーブルを作成しました。 元テーブルを元に、フォーム・レポート・検索クエリ(年度別・分類別)等を作成しました。 ここまでの作業で、新規データの入力はありませんでした。 ところが・・・ 新規データをフォームに入力すると、元テーブルは更新されますが、既に作成しているレポートには、新規レコードが表示(反映)されません。 更新されている元テーブルを元に、もう一度レポートを作成しても、新規レコードは表示されません。 ホームタブの「全て更新」ボタンをクリックしても、新規レコードはレポートには表示されません。 尚、Access初心者です。 「更新クエリ」なるものは、作成していません。というか、「更新クエリ」って何?状態です。 また、クエリそのものが良くわかっておらず、作成したクエリは全て「検索」のためのクエリで、抽出条件に「 [] 」を入力したり、フィールドに「 年度: Year(DateAdd("m",-3,[発送日])) 」を入力したりしかできません。 勿論、リレーションシップって何???状態です。 どうしたらよいのでしょうか??? どなたか、初心者でもわかるように、教えていただけないでしょうか? 宜しくお願いいたします。

  • クエリの条件にての"*"の使い方

    いつもお世話になっております。 Access2000にてクエリの抽出条件で悩んでいます。フォームにて入力があったときはそれで抽出・入力が無かった時は全て抽出したいと思い Like forms![フォーム名]![コントロール名]&"*" をクエリの抽出条件にセットしました。入力があったときはOKなのですが、入力が無かった時はテーブルにデータがあるレコードのみを抽出してしまいます。データが入ってないレコードも抽出したいのですがどのように記述すればいいのでしょうか? 宜しくお願い致します。

  • accessのクエリとフォームの関係についてお尋ねします。

    accessのクエリとフォームの関係についてお尋ねします。 IDを主キーとした同じような構造のテーブルを3つ繋いでクエリを作成し、更にそのクエリをレコードソースとしたフォームを作成しました。 ところがフォームが動かない。テキストボックスを3つ作っていますが、何も表示してないし、レコードも移動しません。 まいった。 accessは2003、vistaを使っております。 素人です。よろしくご教授くださいませ。

  • クエリ「あいまい検索」該当レコードなし時の設定

    [質問素材の作成環境]ソフト名:Access2007になります。 [やっていること] 1,クエリの「抽出条件欄」に下記の「パラメータ」を記述してフリー検索できる様にしています。「Like "*" & [情報検索「食材・メニュー・一文字可」] & "*"」 2,フォーム「レシピ食材情報フォーム」の「レコードソース」欄に、クエリ「レシピ食材情報クエリ」を設定しています。「生活情報メインフォーム」上のコマンドボタンで「検索キーワード入力窓」を表示させ、入力後に「レシピ食材情報フォーム」が起動し検索結果を表示しています。 3,オブジェクトの構成 ・テーブル:名前「レシピ食材情報テーブル」(レコード:ID、種類、種別、内容、情報) ・フォーム:名前「生活情報メインフォーム」 ・フォーム:名前「レシピ食材情報フォーム」 ・クエリ:名前「レシピ食材情報クエリ」(レコード:ID、種類、種別、内容、情報) ・検索条件レコード:情報 [困りごと(希望)] ヒットしない時「該当するレコードがない時」、何の活字も表示されない無地のフォームで起動しますので、「該当するレコード」がないときは無地の「レシピ食材情報フォーム」を開かず、ダイアログメッセージで「該当データがありません」”が表示できればと思います。 [やりたいこと(期待)] ダイアログ「コマンドボタン付き」でメッセージを表示して、ダイアログの「コマンドボタン」をクリックすると、「生活情報メインフォーム」を元に戻して「検索動作」が可能になる様にしたいと思います。※現在は、「生活情報メインフォーム」のコマンドボタンをクリックし「レシピ食材情報フォーム」を表示させた時点で、「生活情報メインフォーム」は最小化しています。要望が難しい場合は、「生活情報メインフォーム」を最小化しない方法を視野に入れます。 以上ですが、難易度が分からないでアドバイスを求めています点、ご理解をお願いします。

専門家に質問してみよう