我在Microsoft Access数据库中被要求帮助。但是,自从我使用Access数据库以来已有十多年了,我不确定自己是否可以按照他们的要求行事。
数据库有几个与此类似的变量:
“过去一周你有多少次打喷嚏”
决不
一到两次
两次到五次
超过五个
他们希望分析数据并将响应分别转换为1,2,3和4。但是,我不确定如何使用Access。他们还需要保留文本,因为协作者仍在上传数据,并希望查看对他们提出的问题的回复
1 - 从不
2 - 一到两次
3 - 两次到五次
4 - 超过五个
我的问题是:有没有办法在Access中执行此操作?而不会弄乱数据。我可以使用任何编程语言轻松转换这些变量,但希望确保Access中没有选项。
感谢您的帮助!任何建议表示赞赏。
答案 0 :(得分:1)
我建议创建一个Reponses表。实际上,这个表可能已经存在于数据库中了吗?
只需创建一个包含ID和ResponseText的表。
RID ResponseText
1 Never
2 One to twice
Etc.
现在,在任何报告或查询中,只需将上表作为左连接加入并包含ID号。此时,您的查询包含ResponseText和RID编号。
以上的优点是不需要代码,您可以随着时间的推移向列表中添加新值(同样无需更改应用程序)。
然后将表中的数据放入查询构建器,然后放入上表。现在从主表中的文本列到上面的文本列绘制连接线。您现在有一个“id”列,它将显示一个数字。
因此不需要代码,使用查询会将这些文本值转换为数字。
答案 1 :(得分:0)
您可以使用查询中的计算字段和IIF语句来执行此操作。
类似
iif([sneezes]="Never",1, iif([sneezes]="One to Twice",2, iif([sneezes]="Twice to 5",3, iif([sneezes]="More than five",4,"ERROR"))))
将[sneezes]替换为您的数据的字段名称。您可能需要将“ERROR”替换为数字或任何适当的值。
新查询可以包含您需要的所有字段以及此额外计算的字段。该表根本没有变化。然后导出查询,如果您需要访问外部或只是在表单或报表上引用它。导出查询与导出表格相同。
答案 2 :(得分:0)
您也可以使用 Switch ,这可能比长 IIf 构造更容易处理:
ResponseCode; Switch([Response]="Never",1,[Response]="One to Twice",2,[Response]="Twice to Five",3,[Response]="More than Five",4)