Access中统计等于特定值的字段个数

七胖儿 2012-10-24 01:31:44
表的设计如图所示:


id01 id02 .......id07 为7个表字段,而且每个字段的值只能等于1或2或3

想用后面的字段 C1 C2 C3 来统计当前这条记录里等于1 等于2 等于3的字段个数

用vba怎么实现或者说数据库能直接实现更好
...全文
602 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 11 楼 的回复:

引用 7 楼 的回复:

引用 5 楼 的回复:

update detail
set c1 = -((d01=1) + (d02=1) + (d03=1)+ (d04=1)+ (d05=1)+ (d06=1)+ (d07=1)),
c2=-((d01=2) + (d02=2) + (d03=2)+ (d04=2)+ (d05=2)+ (d06=……
[/Quote]你的窗体可以选择查询为数据源,窗体的数据源不一定必须是表。


建议找个ACCESS的群,以了解ACCESS的基础问题。
WWWWA 2012-10-25
  • 打赏
  • 举报
回复
建议看看ACCESS、ADO之类的HELP,再动手做一下

Dim cnSJK As New ADODB.Connection
dim asql as string
asql="上述SQL语句“

cnSJK.Open "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=r:\temp\123.mdb"
cnSJK.execute(asql)
七胖儿 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用 7 楼 的回复:

引用 5 楼 的回复:

update detail
set c1 = -((d01=1) + (d02=1) + (d03=1)+ (d04=1)+ (d05=1)+ (d06=1)+ (d07=1)),
c2=-((d01=2) + (d02=2) + (d03=2)+ (d04=2)+ (d05=2)+ (d06=2)+ (d07=2) ),
c……
[/Quote]
是不是就是将将查询结果再次写入表中
因为我之前做的都是绑定控件来更新数据,如果我要只做一个按钮,点击按钮将查询的结果写入表中,这该怎么写?没有些过只用vba更新查询表,能给个完整的示例么,包括连接数据库。
ACMAIN_CHM 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 5 楼 的回复:

update detail
set c1 = -((d01=1) + (d02=1) + (d03=1)+ (d04=1)+ (d05=1)+ (d06=1)+ (d07=1)),
c2=-((d01=2) + (d02=2) + (d03=2)+ (d04=2)+ (d05=2)+ (d06=2)+ (d07=2) ),
c3=-((d01=3) + (d……
[/Quote]ACCESS与EXCEL不同,不存在计算字段。 你可以通过查询实现。

select *,
-((d01=1) + (d02=1) + (d03=1)+ (d04=1)+ (d05=1)+ (d06=1)+ (d07=1)) as c1,
-((d01=2) + (d02=2) + (d03=2)+ (d04=2)+ (d05=2)+ (d06=2)+ (d07=2) ) as c2,
-((d01=3) + (d02=3) + (d03=3)+ (d04=3)+ (d05=3)+ (d06=3)+ (d07=3)) as c3
from detail
wwwwb 2012-10-24
  • 打赏
  • 举报
回复
6楼替换
查询:
select iif(id01=1,1,0)+iif(id02=1,1,0)+iif(id03=1,1,0)+...+iif(id07=1,1,0) as c1,
iif(id01=2,1,0)+iif(id02=2,1,0)+iif(id03=2,1,0)+...+iif(id07=2,1,0) as c2,
iif(id01=3,1,0)+iif(id02=3,1,0)+iif(id03=3,1,0)+...+iif(id07=3,1,0) as c3,* from tt

...:自行修改ID04-ID06:
iif(id01=1,1,0)+iif(id02=1,1,0)+iif(id03=1,1,0)+iif(id04=1,1,0)+iif(id04=1,1,0)+iif(id03=6,1,0)+iif(id07=1,1,0)
七胖儿 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

可以替换字段,也可以用查询解决
[/Quote]

替换字段怎么来实现,查询又怎么解决,我现在不方便上传access
wwwwb 2012-10-24
  • 打赏
  • 举报
回复
可以替换字段,也可以用查询解决
七胖儿 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

update detail
set c1 = -((d01=1) + (d02=1) + (d03=1)+ (d04=1)+ (d05=1)+ (d06=1)+ (d07=1)),
c2=-((d01=2) + (d02=2) + (d03=2)+ (d04=2)+ (d05=2)+ (d06=2)+ (d07=2) ),
c3=-((d01=3) + (d02=3) + (d03=3)+……
[/Quote]

这个是在vba中用记录集更新么?可不可以用access本身的字段计算来实现?
wwwwb 2012-10-24
  • 打赏
  • 举报
回复



update t1a a set a.c1=iif(id01=1,1,0)+iif(id02=1,1,0)+iif(id03=1,1,0)+...+iif(id07=1,1,0),
a.c2=iif(id01=2,1,0)+iif(id02=2,1,0)+iif(id03=2,1,0)+...+iif(id07=2,1,0),
a.c3=iif(id01=3,1,0)+iif(id02=3,1,0)+iif(id03=3,1,0)+...+iif(id07=3,1,0)

ACMAIN_CHM 2012-10-24
  • 打赏
  • 举报
回复
update detail
set c1 = -((d01=1) + (d02=1) + (d03=1)+ (d04=1)+ (d05=1)+ (d06=1)+ (d07=1)),
c2=-((d01=2) + (d02=2) + (d03=2)+ (d04=2)+ (d05=2)+ (d06=2)+ (d07=2) ),
c3=-((d01=3) + (d02=3) + (d03=3)+ (d04=3)+ (d05=3)+ (d06=3)+ (d07=3))
wwwwb 2012-10-24
  • 打赏
  • 举报
回复
上传你的MDB(2000格式)到www.access911.net/csdn
只要有问题的表、查询,用WINRAR压缩
我来测试一下
七胖儿 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
or
select id,sum(iif(bz=1,1,0)) as c1,sum(iif(bz=2,1,0)) as c2,sum(iif(bz=3,1,0)) as c3
from
(
select id,d01 as bz from tt
union all
select id,d02 from tt
union all
select id,d03 from tt
uni……
[/Quote]

我想把它写入对应表最后的字段里,是不是只能通过vba来实现
wwwwb 2012-10-24
  • 打赏
  • 举报
回复
or
select id,sum(iif(bz=1,1,0)) as c1,sum(iif(bz=2,1,0)) as c2,sum(iif(bz=3,1,0)) as c3
from
(
select id,d01 as bz from tt
union all
select id,d02 from tt
union all
select id,d03 from tt
union all
select id,d04 from tt
union all
select id,d05 from tt
union all
select id,d06 from tt
union all
select id,d07 from tt ) group by id
wwwwb 2012-10-24
  • 打赏
  • 举报
回复
select id,sum(iif(id01=1,1,0))+sum(iif(id02=1,1,0))+...+sum(iif(id07=1,1,0)) as c1,
sum(iif(id01=2,1,0))+sum(iif(id02=2,1,0))+...+sum(iif(id07=2,1,0)) as c2,
sum(iif(id01=3,1,0))+sum(iif(id02=3,1,0))+...+sum(iif(id07=3,1,0)) as c3
from tt group by id

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧