MS Access 2007行到记录集中的列

时间:2011-06-09 19:06:37

标签: ms-access

我有一张类似于问卷类型的表格。 我的原始表包含 450列和212行。 Slno是回答问卷的人。

SlNo Q1a    Q1b Q2a Q2b Q2c Q2d Q2e Q2f .... Q37c  <450 columns>
1             1
2                    1                       1         
3     1
4     1                  1
5     1

我必须对这些数据进行分析,例如男性人数(Q1a)和谁拥有船只(Q2b)即(选择*来自问卷调查,其中Q1a = 1且Q2b = 1 )..等..还有更多的组合...... 我已经设计了MS访问所有设计完美的工作,除了一个主要问题(表列数限制为255)。 为了能够将此输入到访问表中,我已插入 450行和212列(现在可以将其输入到访问数据库中)。现在,在获取记录时,我希望记录集将结果转换为我想要的形式,以便我不必更改我的算法或逻辑....如何通过最小的更改实现此目的?这是我第一次使用Access数据库

2 个答案:

答案 0 :(得分:0)

您可以使用交叉表查询来生成您期望的内容。您还可以构建transpose function

无论哪种方式,我认为你将进入255列限制,MS Access正在使用临时表等。

但是,如果您更改表格的结构,我认为您的工作量会少得多,效果会更好。

我认为这就像一个填充泡沫的问卷,而且它主要是多项选择。在这种情况下,我会记录问题的答案

,而不是记录结果
SlNo Q1     Q2
1     B
2            B                                
3     A
4     A      C
5     A

然后你可以使用更少的列。并且您查询Q1 ='A'而不是Q1a = 1。

另一种方法是将表格分成几个部分(个人,职业等),然后进行连接,只显示您需要的列(以便不超过255列限制)。

处理更多问题的方法是为人提供一个表格,问题表格和回复表格

Person
SlNo PostalCode
1    90210
2    H0H 0H0
3


Questions
QID, QTitle, QDesc
1    Q1a     Gender Male
2    Q1b     Gender Female
3    Q2a     Boat
4    Q2b     Car


Answers
SlNo   QID   Result
1      2     True
1      3     True
1      4     True
2      1     True
2      3     False
2      4     True

然后,您可以通过从答案列表中选择人员

来查找问题者
select * from Person
where SlNo in (
    select SlNo from Answers, Questions
    where 
        questions.qid = answers=qid
        and 
        qtitle = 'Q1a'
        and 
        answers.result='True')
and SlNo in (
    select SlNo from Answers, Questions
    where 
        questions.qid = answers=qid
        and 
        qtitle = 'Q2a'
        and 
        answers.result='True')

答案 1 :(得分:0)

我终于得到了解决方案

  1. 我创建了两个包含225列的表,另一个包含225列  (共450列)
  2. 我创建了一个SQL语句

     select count(*) from T1,T2 WHERE T1.SlNo=T2.SlNo
    

    并添加了我想要的条件

  3. 此后它正确......

    数据库在开始时由其他工作人员错误地输入,但只是为了丢掉一周的工作并不好,所以不得不坚持这个设计......下周致命的......现在它正在工作: ):)