Ms access 如何计算Access 2010表中所有列中的所有空值?

Ms access 如何计算Access 2010表中所有列中的所有空值?,ms-access,ms-access-2010,Ms Access,Ms Access 2010,我需要能够计算Access 2010表中所有列中的所有空值。我的具体意思是,在30列字段中,有大量包含部分数据的记录 我想在整张桌子上数一数有多少是空的 我在这个网站上读了一篇题为“如何计算表中的所有空值”的文章,但这篇文章提到了SQL,而且,很抱歉,我承认这对我来说太复杂了 有人有进一步的线索吗 :对于单个字段,可以使用简单的查询 选择Count*作为CountOfNulls 从MyTable 其中某个_字段为空; 如果要在单个查询中分别计算多个字段的空值,可以执行以下操作: 选择 SumII

我需要能够计算Access 2010表中所有列中的所有空值。我的具体意思是,在30列字段中,有大量包含部分数据的记录

我想在整张桌子上数一数有多少是空的

我在这个网站上读了一篇题为“如何计算表中的所有空值”的文章,但这篇文章提到了SQL,而且,很抱歉,我承认这对我来说太复杂了

有人有进一步的线索吗


对于单个字段,可以使用简单的查询

选择Count*作为CountOfNulls 从MyTable 其中某个_字段为空; 如果要在单个查询中分别计算多个字段的空值,可以执行以下操作:

选择 SumIIfsome_字段为Null,1,0为Null在某个_字段中, SumIIfanother_字段为Null,1,0为Null在另一个_字段中 从MyTable; 如果需要所有空值的总计,而不是每列的计数,可以将上一个查询用作子查询,并将各个列的计数相加

选择base.NullsIn_某些_字段+base.NullsIn_另一个_字段作为总计_空值 从…起 选择 SumIIfsome_字段为Null,1,0为Null在某个_字段中, SumIIfanother_字段为Null,1,0为Null在另一个_字段中 从MyTable 作为基础; 另外,如果您希望完全避免使用SQL,或者只是觉得这些语句太复杂,那么就不需要使用SQL。可以在VBA过程中使用DCount函数

在即时窗口中以数据库中的表名运行以下过程:

你的桌子有多少 您可以使用CTRL+g键盘快捷键转到即时窗口

Public Sub HowManyNullsByVal pTable作为字符串 Dim数据库作为DAO.Database 模糊fld为刀场 将tdf调暗为DAO.TableDef 暗淡的lngNulls一样长 总长度等于 Set db=CurrentDb 设置tdf=db.TableDefspTable 对于tdf.字段中的每个fld 'lngNulls=DCount*,pTable,fld.Name&为空 '容纳需要括号的字段名。。。 lngNulls=DCount*,pTable,[&fld.Name&]为空 lngTotal=lngTotal+lngNulls Debug.Print fld.Name,lngNulls 下一个fld 调试。打印总计,lngTotal 设置fld=无 设置tdf=无 Set db=Nothing 端接头
如果这些建议都不令人满意,请修改您的问题以帮助我们更好地了解您的需求。

对于单个字段,您可以使用简单的查询

选择Count*作为CountOfNulls 从MyTable 其中某个_字段为空; 如果要在单个查询中分别计算多个字段的空值,可以执行以下操作:

选择 SumIIfsome_字段为Null,1,0为Null在某个_字段中, SumIIfanother_字段为Null,1,0为Null在另一个_字段中 从MyTable; 如果需要所有空值的总计,而不是每列的计数,可以将上一个查询用作子查询,并将各个列的计数相加

选择base.NullsIn_某些_字段+base.NullsIn_另一个_字段作为总计_空值 从…起 选择 SumIIfsome_字段为Null,1,0为Null在某个_字段中, SumIIfanother_字段为Null,1,0为Null在另一个_字段中 从MyTable 作为基础; 另外,如果您希望完全避免使用SQL,或者只是觉得这些语句太复杂,那么就不需要使用SQL。可以在VBA过程中使用DCount函数

在即时窗口中以数据库中的表名运行以下过程:

你的桌子有多少 您可以使用CTRL+g键盘快捷键转到即时窗口

Public Sub HowManyNullsByVal pTable作为字符串 Dim数据库作为DAO.Database 模糊fld为刀场 将tdf调暗为DAO.TableDef 暗淡的lngNulls一样长 总长度等于 Set db=CurrentDb 设置tdf=db.TableDefspTable 对于tdf.字段中的每个fld 'lngNulls=DCount*,pTable,fld.Name&为空 '容纳需要括号的字段名。。。 lngNulls=DCount*,pTable,[&fld.Name&]为空 lngTotal=lngTotal+lngNulls Debug.Print fld.Name,lngNulls 下一个fld 调试。打印总计,lngTotal 设置fld=无 设置tdf=无 Set db=Nothing 端接头
如果这些建议都不令人满意,请修改您的问题,以帮助我们更好地了解您的需要。

如果您事先不知道列名称,则无法在表的所有列中执行此类计数

如果您想这样做,您必须编写一个程序来读取数据库的元数据,从该数据中提取列和表的列表,为每个列构建一个单独的SQL语句,然后执行该语句,并将返回的数量添加到找到的空值的运行总数中

这听起来像是你可能会考虑的事情吗?如果是这样的话,你应该
研究获取MS Access数据库中的表列表和Access数据库中的表列列表的解决方案,然后将这些信息与列中的空值计数问题中已有的信息结合起来。

当您事先不知道列名称时,没有简单的方法可以跨表的所有列执行此类计数

如果您想这样做,您必须编写一个程序来读取数据库的元数据,从该数据中提取列和表的列表,为每个列构建一个单独的SQL语句,然后执行该语句,并将返回的数量添加到找到的空值的运行总数中


这听起来像是你可能会考虑的事情吗?如果是这样,您应该搜索有关在MS Access数据库中获取表列表和在Access数据库中获取表的列列表的解决方案,然后将该信息与有关在列中计算空值的问题中已有的信息结合起来。

要在包含所有列的表中计算空值,请执行以下操作:

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)

要在包含所有列的表中计算空值,请执行以下操作:

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)

对不起,我没有。因为我也没有从你的帖子中得到任何线索。所以你要问的是。。。如果一行有2个空列,而下一行有3个空列,那么总共会有5个空列,对吗?对不起,我没有。因为我也没有从你的帖子中得到任何线索。所以你要问的是。。。如果一行有2个空列,下一行有3个空列,那么您总共有5个对吗?