• ベストアンサー

Null値件数をカウントする式について

あるテーブル(UserLog)から、「LogOffTime」フィールドの値が空欄(Null)のデータを探す式ですが、 Access_97で・・・ DCount("*", "UserLog", "[LogoffTime] = Null") ・・・としていたのを、Access2000にしたら上手く動きません。 アレコレ試行錯誤して・・・ DCount("[UL_Id]", "[UserLog]", "[LogoffTime] is Null") ・・・だと上手く行くのですが、資料類を見ても「=」が使えるハズなんですけど、なぜダメなんでしょう?

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

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

Accessは2種類の空白の値を使って区別します。空白値にはNull値(データが存在しないこと、またはデータが不定であることを示すために使用する値。)と 長さ0の文字列(文字を1つも含まない文字列。意図的にフィールドに値がないようにしていることを示すことができる。)がありますよね。 =Nullや<>Nullのようなこの状況ではTrue(真)と評価される式でもFalse(偽)になります。 Null値を含む式はすべて式自体がNull値となりFalse(偽)と評価されるためです。 2000以降はIsNull関数でNull値を厳密に?判定しているのでNullの判定はIsNull関数でやらなければだめであるという事だと思いますが。

KonaCoast
質問者

補足

ありがとうございました。 Ac97とAc2000で、同じ条件式で試した処・・・ 式                 Ac97 Ac2000 =IIf([xxx]=Null,"○","□")     ○  □ =IIf([xxx] Is Not Null,"□","○")  ○  ○ =IIf([xxx] Is Null,"○","□")    ○  ○ ・・・の様な結果を示しました。 「[xxx]<>Null」と書いても「[xxx]Is Not Null」と 勝手に変換されてしまうので、やっぱり「=」が クセモノなんでしょうかネェ? Ac2000のHelpでも、そんな事明記されてなかった様な。。。 これを元に、書き換え初めます。。。 ありがとう御座いました!

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

その他の回答 (1)

回答No.1

基本的に振る舞いが似ていても、ISと=の仕様は違います。 おそらく、原因はその辺かと思います

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

関連するQ&A

  • null→数値にするには?

    何度も質問してすみません。 NULLが格納されているフィールドに 「0」や「1」といった値を入れる為には どういうINSERT INTO文をPHP内で記述すれば宜しいでしょうか? pg_field_is_nullを使ってみたのですが イマイチ値を変更する事ができません。 また、SQL文で「NOT NULL制約」という言葉があるのを知ったのですが、 ALTER TABLE文でテーブルを作る時に、 各フィールドにはnullではなく、「0」を最初から格納したい場合は どういった記述をすれば宜しいでしょうか? 宜しくお願い致します。

  • アクセスのフィルタ nullについて。

    質問です。 アクセスのテーブルの中で、あるフィールド(フィールド名:管理番号)が空白のものだけ抽出したいのです。フィルターで、管理番号箇所に「Is Null」としたのですが、実際空白になっているデータがうまく抽出されません。 で、「Is Not Null」で抽出するとそれらのデータが抽出されます。 そのデータの認識ではnullになってないようです。 (でも実際空白です。) どうやったらnullで抽出されるでしょうか? ちなみにそのフィールドのデータ型はテキスト型です。

  • Nullを変更

    t_tanaorosiというテーブルに棚番というフィールドがあります。 値がNullならば"なし"と棚番へ保存したいのですが どうすればいいのでしょうか? 教えてください。 お願いします。 VB6.0 SQL Serverです。

  • 特定のフィールドにデータが入ってる件数を調べたい

    ageというフィールドにデータが入っている件数を調べたいのですが、どのようなsql文を書けばいいでしょうか。 ageフィールドのNULLは「いいえ」、デフォルト値は「空欄」です。 $sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null ;"; この文ではうまくいきませんでした。ageフィールドのデフォルト値をNULLにすればいいのでしょうか?

    • ベストアンサー
    • MySQL
  • Acccess・レポートで2つの条件を満たすもののカウント

    フォーム1から「年度」を入力してテーブルから検索結果をレポートへ表示。 その中に「フィールド1」という項目があります。 この「フィールド1」の項目の数を数えたいのですが、条件が、 ●上記のフォームから入力した年度であること ●「フィールド1」の値が「1」であるもの を数えたいのです。 2つ目の条件だけでしたら =DCount("フィールド1","T_印刷用テーブル","フィールド1=2") のようにできるのですが… 式でもモジュールでもかまいませんので教えてください。

  • MariaDBでのNULLの扱い方

    お世話になります。 MariaDBで作ってあるあるテーブルのひとつのフィールド "batch" にデータが入ってないために、コマンドプロンプト画面で見ると"NULL"と表示されています。添付したスクリーンショットの通りです。 ところがこれを select * from calreport where batch=NULL というコマンドを入れても empty set と表示されて、"batch" フィールドが NULL の物が表示されません。 NULL という値はどのように検出すればよいのでしょうか? 正しい select 文の書き方を教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • NULL 値が許可されていません

    SQLServer2008かじり始めの素人です。ご教授願います。 MicrosoftSQLManagementStudioにて、「新しいクエリ」で以下のクエリ実行で 以下のエラーが出ます。対応ご存知な方がいらっしゃいましたら 教えてください。 【環境】Windows2003Server     SQLSERVER 2008 【テーブル構成】  データベース:BUHIN_SEA                  列 親: 部品テーブル(ID,工号,納入先,形式)            ↓      列 子: 納入先テーブル(NOUNYU_ID,納入先)   子: 形式テーブル(KEISIKI_ID形式) * NOUNYU_ID,KEISIKI_ID は主キー 設定 【クエリ】   INSERT INTO 納入先 ( 納入先) SELECT DISTINCT LTrim(部品テーブル.納入先) FROM 部品テーブル LEFT JOIN 納入先 ON 部品テーブル.納入先 = 納入先.納入先 WHERE (((LTrim(部品テーブル.納入先)) Is Not Null) AND ((納入先.納入先) Is Null)) ORDER BY LTrim(部品テーブル.納入先); 【実行結果】 メッセージ 515、レベル 16、状態 2、行 1 テーブル 'BUHIN_SEA.dbo.納入先' の列 'NONYU_ID' に値 NULL を挿入できません。この列では NULL 値が許可されていません。INSERT は失敗します。 ステートメントは終了されました。 * 'NONYU_ID' は、主キーのため、NULLを許容できません。

  • 不一致クエリでnullまで抽出されてしまいます

    質問です。 現在、accessにて不一致クエリを使用し、テーブルAをチェックし、 マスタテーブルに無い情報が書かれてしまっているフィールドがある場合 抽出して確認をする、というクエリを作りたいと考えています。 不一致クエリにて自動で入る「is null」を使用すると マスタテーブルに無い事が書いてあるレコードは抽出するのですが (逆になぜis nullで相違するレコードが抽出されるのか理解に苦しんでもいるのですが) is nullですので、nullのレコードも抽出されてしまいます。 抽出条件として、マスタテーブルと相違するもの&nullは抽出しない、としたいのですがお知恵を拝借出来ませんでしょうか。 よろしくお願いいたします。

  • NULLについて

    NULLについて伺います。 現在、strutsで入力画面にて入力した内容がデータベース(MYSQL)に反映されるWEBアプリケーションを作っているのですが、Column 'title' cannot be nullとコンソールでエラーが出ており、「not nullでテーブルを作り直せばいいのかな」と思い、一旦テーブルを削除してからもう一度作り直したのですが、エラーが変わりません。何かしらご教授頂ければ幸いです。よろしくお願いいたします。下記にテーブル構造と、その下にエラーを貼り付けておきます。(文字数の関係上、エラー全文は貼り付けられませんでした) mysql> desc input; +--------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | text | NO | | NULL | | | movie_url | text | NO | | NULL | | | material_url | text | NO | | NULL | | | explanation | text | NO | | NULL | | +--------------+---------+------+-----+---------+----------------+ com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'title' cannot be null

    • ベストアンサー
    • MySQL
  • NULL値を含む場合のフィルタ

    アクセスです。 テーブルに フィールド1 フィールド2 A    B       B  C       C と入ってるとします。 フィールド2についてはNULL値のレコードもあれば、 値が入ってる場合もあります。 このテーブルをフォームにひもづけていて、(帳票フォームにしています) フォームヘッダーにテキストボックス2つとコマンドボタンがあり Private Sub コマンド_Click() Me.Form.Filter = _ "フィールド1 like '*" & Me.テキスト_1.Value & "*'" & " and " _ & "フィールド2 like '*" & Me.テキスト_2.Value & "*'" Me.Form.FilterOn = True End Sub としたときに、レコードのフィールド2に文字が入ってる場合は、抽出できるのですが、 フィールド2がNULLの場合は、1件もヒットしません。 テキスト_1にはAを入れて テキスト_2には何も入れないで検索してみると、1件もヒットしませんが、 テキスト_1にBを入れて検索すると、Bのレコードが抽出されます。 もちろん テキスト_1もテキスト_2もBをいれても、Bのレコードが抽出されます。 VBAコードで & "フィールド2 like '*" & Me.テキスト_2.Value & "*'" としてるので、NULL値でも抽出されると思ったのですがなぜ何も抽出されないのでしょうか? ワイルドカードでnull値も検索されないのでしょうか? テーブルのフィールド2のデータをNull値ではなく、””にしたら、問題なく抽出されましたが データのNull値はNull値のままにして、空白などの文字には置き換えたくないです。 (というか、すべてのNULL値に空白を入れる作業が大変なのでやりたくないです。 実際のフィールド数は50個くらいあります) よろしくお願いします。