我如何获得以下
项目|代码1 |代码2 |代码3
1 | a | b | ç
2 | a | d
转换为按项目在线级获取代码?
项目|代码
1 |一个
1 | B'/ P>
1 | ç
2 |一个
2 | d
我目前正在手动执行此操作,但问题是我有30个代码。我当前的进程是执行选择查询,然后为所有30个代码执行联合。有人可以帮我解决这个问题吗?我知道vba脚本可以完成这项工作,但不知道如何做到这一点。谢谢!
答案 0 :(得分:1)
使用此功能,您可以从包含名为(code1,code2,...,codeN)的N个代码字段的表中读取数据,并将它们写入只包含两个字段的表中:
Function Verticalize(numberofcodes As Integer)
Dim sql As String
Dim rst As New ADBDb.Recordset
sql = "SELECT * FROM tname"
rst.Open sql, CurrentProject.AccessConnection
While Not rst.EOF
For i = 1 To numberofcodes
DoCmd.RunSQL "insert into tdest values (" & rst(0) & "," & rst("code") & Str(i) & ")"
Next i
rst.MoveNext
Wend
End Function
答案 1 :(得分:1)
您可以通过创建新表来支持任意数量的项目代码,我们称之为ProjectCode
。
所以你有Projects
的一个表,它与代码没有任何关系。
如果代码附加了额外数据,您可以创建Code
表并添加该信息。
ProjectCode
通过使用JOIN帮助数据库查看它们的相关性。结构将是
ProjectID | CodeID
我为此类案例所做的是使用项目的主表单,并在数据表视图中以连续形式作为子表单,链接到ProjectCode
- 表,并链接ID从项目到子窗体的ProjectID。 (子窗体对象的Link Master Fields
& Link Child Fields
属性),请注意您要在子窗体上隐藏ProjectID。
要获取代码列表,您只需使用项目ID查询ProjectCode
即可。如果您需要项目中的其他信息,请使用联接:
SELECT * FROM Projects INNER JOIN ProjectCode ON ProjectCode . ProjectID = Projects.ID
WHERE ID = 'some id'
请注意,每个代码都会重复来自Projects的信息。