我认为这应该很简单,但我找不到正确的方法。我有一个带有ID号列的表,其后面有10行,标记为问题#1,问题#2,依此类推。
没有重复的ID号,但每个ID号可能有多行问题。
我想获取ID行,并在适用的每个不同问题中创建一个具有相同ID的新行。因此,如果ID号在问题#1和问题#2下列出了问题,我想为该ID号创建一个副本并且在一列下列出两个问题让我们称之为“总问题”,并按其分组身份证号码。这可以通过创建一个新表来完成。
示例:
来自:
+-------+---------------------------+---------------------------+
| ID | Question #1 | Question #2 |
+-------+---------------------------+---------------------------+
| 11111 | Was it notated correctly? | Was it completed on time? |
+-------+---------------------------+---------------------------+
要
+-------+-------------------------------------+
| ID | Total Questions |
+-------+-------------------------------------+
| 11111 | Was it notated correctly? |
| 11111 | Was it completed on time? |
+-------+-------------------------------------+
答案 0 :(得分:1)
使用DAO
sub SomeProcedure()
Dim db as DAO.Database, recIn as DAO.Recordset, recOut as DAO.Recordset
Set db = currentdb()
Set recIn = db.openRecordset("yourQuestionsInputTable", dbOpenDynaset, dbReadOnly)
Set recOut = db.openRecordset("yourQuestionsOutputTable", dbOpenDynaset, dbEditAdd)
with recIn
.moveFirst
do
for i = 1 to .Fields.count
if left(.Fields(i).Name, 8) = "Question" then
recOut.addNew
recOut.Fields("Id") = .fields("Id")
recOut.Fields("Total Questions") = .Fields(i)
recOut.update
end if
next i
.moveNext
loop until .EOF
end with
recIn.close
recOut.close
db.close
end sub
解释:
我正在做的是:
"Question"
开头的每一列,请在输出表中创建一条新记录,其中包含输入表的Id
和所选列的值。这只是一个草案。您需要调整代码以满足您的需求。
希望这有帮助。
<强>替代强>
在稍微思考之后,我可能会替换你在评论中提到的问题。
我认为你可以像这样改变循环:
' You'll need a variable of type Field
Dim f as DAO.Field ' Check if this is right
' Some code
with recIn
.moveFirst
do
for f in .Fields
if left(f.Name, 8) = "Question" then
recOut.addNew
recOut.Fields("Id") = .Fields("Id").Value
recOut.Fields("Total Questions") = .Fields(f.Name).Value
recOut.update
end if
next f
.moveNext
loop until .EOF
end with
' More code
不是使用索引在Fields
集合上进行迭代,而是使用其中的任何Field
成员进行迭代。这应该避免在集合中找不到&#34;项目#34;问题。
警告: 未经过测试
答案 1 :(得分:0)
尝试这样的几个查询:
SELECT ID, Question1 AS TotalQuestions
INTO NewTable
FROM OriginalTable;
SELECT ID, Question2 AS TotalQuestions
INTO NewTable
FROM OriginalTable;