• ベストアンサー

アクセスのカウント(件数)について。

アクセスでAフィールドとBフィールドがあり、AフィールドとBフィールドの両方に入力があるレコードと、AフィールドとBフィールドのどちらかに入力があるレコードの合計レコード数を求めたいのですが、どのようにしたらよいのでしょうか?(つまりAフィールドとBフィールドの両方に入力がないレコード以外をカウントしたいのです。)よろしくお願いいたします。

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

  • ベストアンサー
noname#22222
noname#22222
回答No.3

DCOUNT 関数の実態は、次のようだと推察されます。 そうであれば、関数の引数は DCOUNT("*", テーブル名, 条件節) となります。 ですから、見た目では正しいようですが・・・。 もしかしたら、'件数’がテーブル名ではないのかなーとも・・・。 下記のDBCount() でも試されたら、多少は原因が見えてくるかも知れません。 なお、DBCount() は、DCount() より3倍速で動作します。 Public Function DBCount(ByVal strField As String, _             ByVal strTable As String, _             Optional ByVal strWhere As String = "") As Variant On Error GoTo Err_DBCount    Dim N    Dim strQuerySQL As String    Dim rst     As ADODB.Recordset    Set rst = New ADODB.Recordset    strQuerySQL = "SELECT COUNT(" & strField & ") FROM " & strTable    If Len(strWhere) > 0 Then      strQuerySQL = strQuerySQL & " WHERE " & strWhere    End If    With rst      .Open strQuerySQL, _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then        .MoveFirst        N = Nz(.Fields(0), 0)      End If    End With Exit_DBCount: On Error Resume Next    rst.Close    Set rst = Nothing    DBCount = N    Exit Function Err_DBCount:    MsgBox "SELECT 文の実行時にエラーが発生しました。(DBCount)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"    Resume Exit_DBCount End Function

ayanohina
質問者

お礼

何度も申し訳ありません。これで最後にします。 ?DCOUNT("*","件数","検鏡]is null AND [抗酸菌染色]is null") 「演算子がないときにオペランドを使用しています」というエラーが出ます。どういうことでしょうか。

その他の回答 (2)

noname#22222
noname#22222
回答No.2

s_husky です。 "A is null AND B is null") "Len(A & '') = 0 AND Len(B & '') = 0" と、質問を良く読まずに全く逆の条件を書いていました。 ま、ここら辺りは応用して下さい。

ayanohina
質問者

お礼

ありがとうございます。下記の記述でうまくいかないのですが、どこがおかしいでしょうか?申し訳ありません。 ? DCOUNT("*", "件数", "[検鏡] is null AND [抗酸菌染色] is null")

noname#22222
noname#22222
回答No.1

ID   A    B 1    1 2    1    1 3 4         1 ? DCOUNT("*", "テスト", "A is not null AND B is not null") 1 ID A B 1 1 2 1 1 3 4 1 1 ? DCOUNT("*", "テスト", "A is not null AND B is not null") 2 と、DCOUNT関数でカウント可能です。 ? DCOUNT("*", "テスト", "Len(A & '') > 0 AND Len(B & '') > 0") 2 と、ヌルを Len関数で判定しても構いません。 クエリに関する質問ならば、同じようなWhere節をそのままクエリに書いて下さい。

関連するQ&A

専門家に質問してみよう