クエリーでカウントをしたときに、カウント結果がゼロの場合でも「0」と表示させたいのですが、良い方法は、ありませんでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

補足説明をお願いしていながら、メールに埋もれていて確認しておりませんでした。

ごめんなさい。

質問の内容は、テーブルAのフィールド?に「B」(Bコード?)がない場合0「ゼロ」を表示するということですね。

選択クエリで処理するのは無理だと思います。
選択クエリは、条件に合致するものを出力するからです。
    • good
    • 0

質問の内容が今一つイメージ出来ないので質問させて貰います。



ご質問のクエリとはクエリの新規作成でクロス集計クエリウィザードを使用してクエリを作成して、そのクエリを実行した場合(つまり、開く)に表の状態でカウント数が0の場合でも「0」と表示したいと言うことでしょうか?

適当なサンプルで説明して頂いた方が回答しやすいと思いますので補足説明をお願います。

この回答への補足

言葉たらずですみません。

選択クエリーで、「集計」のカウントを使った場合、例えば、「Aテーブル」にある「Bコード」のカウント、と設定するとBコードがあれば、そのカウント結果が返りますが、「Bコード」がない場合、カウントできないので、データシートで見た時に何も表示されません。この場合に、「0(ゼロ)」を表示させたいのですが・・・何かいい方法はありますでしょうか。

補足日時:2001/07/12 13:38
    • good
    • 0

NZで囲ってみては?


NZ(Count(ほげほげ),0)
    • good
    • 2

??????なのですが、


セオリーどおり、COUNT(*)のSQL文を投げれば
きちんと0件という1レコードがもどってきます。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESS2003のデータアクセスページの使い方について

イントラ内でACCESS2003のデータアクセスページを使いたい。

1.ACCESS2003のデータアクセスページを作成しました。
2.そのMDBファイルと、データアクセスページ(htmファイル)を、WINDOWS2000ServerのInetpub内のwwwrootフォルダの中へ入れました。
3.ここにはイントラ内のHPなどを置いています。(普通に見れています。)
4.クライアントから、データアクセスページのhtmファイルを見に行くと「データソースログオン」が立ち上がります。(パスワードを設定しています。)
5.パスワードを入れるとデータアクセスページ(htm)から、通常のアクセスのフォームのごとくデータ入力が出来る予定なのですが(泣)できません。(泣)

で、悩んでおります。

ACCESS2003のMDBファイルとデータアクセスページ(HTMファイル)をサーバーのwwwrootへ置いただけでは、データアクセスページを通してmdbファイルへの入出力は不可能なのでしょうか?

Aベストアンサー

MDBに接続されたAccessプロジェクトを開いている場合データアクセスページは自動的にそのデータベースに接続されてそのパスがデータアクセスページのConnectionString プロパティに設定されます。
ページを作成した後でデータベースを移動またはコピーした場合はConnectionString プロパティに設定されているパスを更新して新しい保管場所を設定する必要がありますがどうなっていますか?
そこを確認してみてください。

QACCESS クエリ(カウント0のレコードも表示させたい)

すみません。クエリについて教えて下さい。

<生徒テーブル>
生徒ID・氏名

<出席テーブル>
生徒ID・日付

上記2のテーブルから、クエリで下記の情報を取り出したいのです。

<出席日数>
氏名・出席日数

<出席テーブル>には、1レコードもない生徒がいます。
この生徒は<出席日数>の出席日数を0として表示したいんです。

カウントを使って計算したところ、<出席テーブル>に1レコードもない生徒は表示できません。

説明がわかり難くて申し訳ないです。
どうぞ教えてください。

Aベストアンサー

SELECT
  生徒テーブル.生徒ID,
  生徒テーブル.氏名,
  Count(出席テーブル.生徒ID) AS 出席日数
FROM
    生徒テーブル
  LEFT JOIN
    出席テーブル
  ON
    生徒テーブル.生徒ID = 出席テーブル.生徒ID
GROUP BY
  生徒テーブル.生徒ID,
  生徒テーブル.氏名

Qホームページ移転に伴う.htaccessの使い方ですがアップロードして

ホームページ移転に伴う.htaccessの使い方ですがアップロードして削除できなくなる事ないですか??また、さくらサーバーは.htaccess使えますか??

Aベストアンサー

.htaccessだけではなく、
ファイルはパーミッションによっては一旦削除できなくなると思いますよ・・・
使えないのにアップすると削除出来ないとか。

>さくらサーバーは.htaccess使えますか??
使えます。
.htaccessを使えない有料サーバってあるのでしょうか?・・・

Qクエリーの結果をフォームに表示させたい(Access2000)

access初心者で、初歩的なことだと思うのですが教えていただけますでしょうか。

顧客情報テーブルを全件表示・入力・変更するフォームAがあります。
日付期間内検索、名前検索などいくつか条件絞込みのためのフォームBがあります。

やりたいこと
フォームBで指定した期間などで、検索結果をフォームAに表示させたいです。

←→現在はフォームBの検索クエリーごとに、実際は検索条件ごとにフォームAをコピーし、フォームのプロパティのレコードソースにて制御しています。

よろしくおねがいします。

Aベストアンサー

でしたらフォームB(条件設定画面かな?)にコマンドボタンでも作成し
クリック時イベントなどに
if currentproject.allforms("フォームA").isloaded = false then
docmd.openform "フォームA" '開いてなかったら開く
end if
Forms!フォームA.recordsource = "SELECT 顧客情報TBL.* FROM 顧客情報TBL WHERE [顧客情報TBL].[利用予定日] Between " & [Forms]![条件設定画面]![コンボ12] & " And " & [Forms]![条件設定画面]![コンボ14] & " ORDER BY [顧客情報TBL].[利用予定日] DESC;"
のようにレコードソースを変更するか、

フォームA自体には抽出条件を設定しないひな形フォームとして作成しておきます。
dim sFilter as string
if currentproject.allforms("フォームA").isloaded = false then
docmd.openform "フォームA" '開いてなかったら開く
end if
sFilter = ・・・・sFilterに条件を書き込むのですが具体例が挙げられません
sFilter の作り方は前回回答のVBAコードを参照してください。
debug.print sFilter 'イミディエイトウィンドウで正しくできているか確認
Forms!フォームA.filter = sFilter
Forms!フォームA.filteron = true
のような流れになります。べた打ちなので間違っているかも。

でしたらフォームB(条件設定画面かな?)にコマンドボタンでも作成し
クリック時イベントなどに
if currentproject.allforms("フォームA").isloaded = false then
docmd.openform "フォームA" '開いてなかったら開く
end if
Forms!フォームA.recordsource = "SELECT 顧客情報TBL.* FROM 顧客情報TBL WHERE [顧客情報TBL].[利用予定日] Between " & [Forms]![条件設定画面]![コンボ12] & " And " & [Forms]![条件設定画面]![コンボ14] & " ORDER BY [顧客情報TBL].[利用予定日] DESC;"
のようにレコード...続きを読む

QAccessで作成したテーブルのOLEオブジェクトの使い方

Accessで作成したテーブルにデータ型(OLEオブジェクト型)で画像を取り込みできるようにしました。
取り込みした画像を開くためのフォームを作成して画像を開けるようにしました。
下記の内容です。

Private Sub Form_Open(Cancel As Integer)
Form.Caption = ProgName
End Sub

しかし「ビットマップ形式」ですと問題なく開くのですが、「JPG形式」ですと開けないのです。取り込みしたAccessテーブルのフィールドから直接だとひらけます。
Accessで作成したフォームから、「JPG形式」の画像を開くにはどうすればよろしいですか?
また、画像を1000件ほど取り込みすると大きいデータベースになってしまいます。Accessのデータベースのサイズは制限があるのかしら?
アドバイスいただけれは幸いです。

Aベストアンサー

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正しく表示されません
http://support.microsoft.com/kb/832508/ja

解決策としては JPEG を開ける OLE コンテナになるアプリケーションをインストールしておく。

Google「Access データベース サイズ 制限」で検索
http://www.google.com/search?hl=ja&num=50&q=Access+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+%E3%82%B5%E3%82%A4%E3%82%BA+%E5%88%B6%E9%99%90&lr=lang_ja

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正...続きを読む

Qaccess 存在しない項目を”0件”と表示させるには?

宜しくお願いします。

仕様環境:WinXP access2002

acecssで集計クエリを作り、それが反映されるフォームを作っています。
集計方法は「カウント」です。

テーブルは重要なところだけいいますと、
ステータステーブル・・・IDとステータス(「見積中、返答待ち、確定、作業中、作業完了、入金待ち、終了、NG」)。
案件テーブル・・いろんな項目がありますが、「ステータス」という項目があり、別途のフォームで
そこをコンボボックスにしてステータステーブルの情報を引っ張ってきています。

そこでなのですが、「集計フォーム」の画像を見ての通り、
実際、まだ案件テーブルで選択されていない項目については表示されません。
例えば:確定、作業中、作業完了など。

これを「確定0件、作業中0件、作業完了0件」と出したいのです。
集計クエリには実際まだ存在していないので、表示されないのはわかりまして、
それがフォームにも反映しているのもわかります。

そこでnz関数を使って、例えば
「確定:nz([ステータス],"0")」や「確定:nz[確定],"0"」ではクエリに表示されません、
(いろいろ試したのでエラーが出たときもあります)

よく考えてみると存在していないものは、nz関数ではダメなのかなと思っています。
(nz関数は存在しているnull値を違う値に変えるものと認識しています)

クロス集計クエリも試しましたが、存在していないところは「#name」とエラーになり、
nz関数を同様に使ってみたのですがダメでした。

どうすれば存在していないものに対して”0件”という表示がだせるのでしょうか?
そもそもの構造がおかしいのでしょうか?
クエリは普通の集計クエリでもクロス~でもカウントを使うので”0”が”1つ”として
数えられてしまうと本末転倒です。

なるべく基盤の構造はシンプルに作りたいので集計クエリを望んでいます。

改善点があれば、ご教示お願いします。

余談ですが、こういうaccessの個別レッスンとかやっている教室があったら
教えて頂けば幸いです。(東京・ちなみにアビバは資格向けのようです)

宜しくお願いします。

仕様環境:WinXP access2002

acecssで集計クエリを作り、それが反映されるフォームを作っています。
集計方法は「カウント」です。

テーブルは重要なところだけいいますと、
ステータステーブル・・・IDとステータス(「見積中、返答待ち、確定、作業中、作業完了、入金待ち、終了、NG」)。
案件テーブル・・いろんな項目がありますが、「ステータス」という項目があり、別途のフォームで
そこをコンボボックスにしてステータステーブルの情報を引っ張ってきています。

そ...続きを読む

Aベストアンサー

集計クエリの結果とステータステーブルを外部結合させて、NULLなところをNz()で0と表示させればよいです。

SQLでいうとこんな感じ:
クエリQ1: select State, count( State ) as NumState from TMatter group by State;

クエリQSummary: select TState.State, Nz(Q1.NumState,0) as NumState from TState Left join Q1 on TState.State=Q1.State;

QAccess2000でFTPの使い方について。

Access2000のフォームから、実行のボタンをクリックするとFTPサーバに接続→ファイル取得→Accessテーブルに取込→FTPサーバのファイル削除→FTPサーバの接続切断という処理をしたいのですがどのようにしたらよいかわかりません。説明不足だとは思いますが、アドバイスを宜しくお願い致します。

Aベストアンサー

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイル名のみ)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信

end sub

実行には20秒ほどかかります。
実行前にはCドライブにtempというフォルダを作っておいてください。

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一...続きを読む

Qクエリーからクエリーを呼ぶことって?

クエリーから別のクエリーを呼ぶことってできますか?
よろしくお願いします。

Aベストアンサー

不可能ではありませんが、出来ないものもあります。
自身を使った選択クエリ、作成・更新・削除クエリはできません。

QRuby on Rails 「attr_accessor」 の使い方に

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状態になってしまうことです。
「:if => 項目?」を書いてみると、「undefined method」のエラーがでてしまいます。

どなたか対応策の分かる方がおられましたらご教授いただけないでしょうか?

下記に実際の問題箇所のモデルクラスのソースを書いておきます。

 class User < ActiveRecord::Base

   attr_accessor :NEW_USER_PW ← 追加したアクセサ

   # 追加したアクセサに対するチェック
   validates_length_of :NEW_USER_PW, :minimum=>4, :message=>"は%d桁以上を設定してくださ            
    い。", :on => :update, :if => :NEW_USER_PW?

 end

上記のチェック内の「:if => :NEW_USER_PW?」で落ちてしまいます。
入力がないのにチェックに引っかかるとまずいので、入力がないときだけ上記チェックを行えれば良いのですが・・・。

どうぞ宜しくお願い致します。

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状...続きを読む

Aベストアンサー

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.size > 0
end

また、ifにはprocオブジェクトを渡すこともできますので、
:if => Proc.new{|u| u.NEW_USER_PW.size > 0}
と書いてもいいでしょう。


NEW_USER_PWというインスタンス変数はすべて大文字を使用されていますが、
見る人によっては定数と勘違いします。
変数であれば小文字表記を利用するほうが良いかもしれません。

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.s...続きを読む

Qテキストボックスにクエリ結果を表示させたい

フォームにテキストボックスAがあり、そこに入力した文字(下記テーブルのフィールド1の文字)をクエリーの「抽出条件」にし、同じフォーム上のテキストボックスBに表示しようと思っています。

クエリを開くとパラメータの入力を求めてきて、入力するとうまく抽出されます。

テーブルは
フィールド1|フィールド2
  A   |  10
  B   |  20
  C   |  30
  D   |  40
のような簡単なものです。

テキストボックスBのコントロールソースに
「=[○×クエリ]![フィールド2]とやっても「#Name?」と表示されてしまいます。

どのようにやればよいのでしょうか?

Aベストアンサー

クエリは必要ありません。

フォームのレコードソースに無いデータを表示させる
場合には DLookUp を使います。

テキストボックスBのコントロールソースに
=DLookUp("フィールド2","テーブル名","フィールド1='" & [テキストボックスA]) & "'"

上記は「フィールド1」が文字列型の場合です。

数値型の場合は次のようになります。
=DLookUp("フィールド2","テーブル名","フィールド1=" & [テキストボックスA])

DLookUp 関数は コントロールソースに限らず
VBA でも使用し、Access では、非常に使用頻度の高いものです。

ヘルプで調べて、ぜひマスターしてください。

もし Access でなかったら、このレスは無視して下さい。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報