1

Access 2010 テーブルのすべての列のすべての NULLS をカウントできる必要があります。具体的には、30 列 (フィールド) のうち、部分的なデータを含むレコードが大量にあるということです。

テーブル全体で空の数を数えたい。

このサイトの「テーブル内のすべての NULL 値をカウントする方法」というタイトルの記事を読みましたが、それは SQL に言及しており、私には複雑すぎることを認めて申し訳ありませんでした。

誰もがさらに手がかりを得ましたか?

:)

4

3 に答える 3

4

単一のフィールドの場合、単純なクエリを使用できます。

SELECT Count(*) AS CountOfNulls
FROM MyTable
WHERE some_field Is Null;

1つのクエリで複数のフィールドのNullを個別にカウントする場合は、次のように実行できます。

SELECT
    Sum(IIf(some_field Is Null, 1, 0)) AS NullsIn_some_field,
    Sum(IIf(another_field Is Null, 1, 0)) AS NullsIn_another_field
FROM MyTable;

列ごとのカウントではなく、すべてのNullの総計が必要な場合は、前のクエリをサブクエリとして使用して、個々の列のカウントを合計できます。

SELECT base.NullsIn_some_field + base.NullsIn_another_field AS total_nulls
FROM
    (
        SELECT
            Sum(IIf(some_field Is Null, 1, 0)) AS NullsIn_some_field,
            Sum(IIf(another_field Is Null, 1, 0)) AS NullsIn_another_field
        FROM MyTable
    ) AS base;

OTOH、SQLを完全に避けたい場合、または単にそれらのステートメントが複雑すぎると感じた場合は、SQLを使用する必要はありません。DCount()この関数はVBAプロシージャで使用できます。

データベース内のテーブルの名前を使用して、イミディエイトウィンドウで以下の手順を実行します。

HowManyNulls "YourTable"

CTRL+gキーボードショートカットを使用してイミディエイトウィンドウに移動できます。

Public Sub HowManyNulls(ByVal pTable As String)
    Dim db As DAO.Database
    Dim fld As DAO.Field
    Dim tdf As DAO.TableDef
    Dim lngNulls As Long
    Dim lngTotal As Long

    Set db = CurrentDb
    Set tdf = db.TableDefs(pTable)
    For Each fld In tdf.Fields
        'lngNulls = DCount("*", pTable, fld.Name & " Is Null")
        ' accommodate field names which need bracketing ...
        lngNulls = DCount("*", pTable, "[" & fld.Name & "] Is Null")
        lngTotal = lngTotal + lngNulls
        Debug.Print fld.Name, lngNulls
    Next fld
    Debug.Print "Grand total", lngTotal
    Set fld = Nothing
    Set tdf = Nothing
    Set db = Nothing
End Sub

これらの提案のいずれも満足のいくものではない場合は、質問を修正して、必要なものをよりよく理解できるようにしてください。

于 2012-05-11T17:42:30.160 に答える
1

事前に列名がわからない場合、テーブルの「すべての列」でこの種のカウントを実行する簡単な方法はありません。

そうする場合は、データベースの「メタデータ」を読み取り、そのデータから列とテーブルのリストを抽出し、列ごとに個別の SQL ステートメントを作成し、そのステートメントを実行して追加するプログラムを作成する必要があります。見つかった NULL 値の現在の合計数に戻ります。

これは、あなたが追求することを検討できるもののように聞こえますか? その場合は、MS Access データベースのテーブルのリストを取得する方法と Access データベースのテーブルの列のリストを取得する方法を検索し、その情報を NULL のカウントに関する質問から既に得ている情報と組み合わせる必要があります。列で。

于 2012-05-11T18:31:35.500 に答える
0

すべての列のテーブルで null 値をカウントするには:

select count(*) from(select a from tt where a is  null
              union all
            select b from tt   where b is  null
              union all
            select c from tt where c is  null)
于 2015-12-30T18:38:25.680 に答える