我有一个Access数据库,包含两个表,Individuals&对。个人包括两列; 'Bird_ID'和'Parents_Pair_number'和Pairs由三列组成; 'Pair','Female_ID'和'Male_ID'。 'parents_Pair_number'和'Pair'具有多对一的关系。通过这种关系,人们可以检查一个人的父母。
但现在我正在考虑使用表格制作自动化的家谱。我的计划是创建一个字段(Bird_ID_Field),您可以在其中找到某个人,并且其他字段(如父亲,母亲,父亲父亲等等)将根据该条目自动填充。
我尝试使用以下VBA代码自动填充Father_ID(字段):
Dim strSQL As String
Dim strBird_ID As String
If Bird_ID_Field <> "" Then
strBird_ID = Bird_ID_Field
strSQL = "SELECT Pairs.[Male_ID] " & _
"FROM Pairs " & _
"WHERE PAIR = (SELECT Individuals.[Parents_Pair_number] FROM Individuals WHERE Individuals.[Bird_ID]= '" & strBird_ID & "');"
DoCmd.OpenQuery strSQL
Father_ID = strSQL
End If
但是在更新了Bird_ID_Field后,我收到以下错误:Microsoft Access无法找到对象''。
你知道什么是错的吗?
向前谢谢! 的Jeroen
答案 0 :(得分:0)
您应该使用记录集:
Dim rst As Recordset
Dim strSQL As String
If Nz(Bird_ID_Field,"") <> "" Then
strBird_ID = Nz(Bird_ID_Field, "")
strSQL = "SELECT Pairs.[Male_ID] " & _
"FROM Pairs " & _
"WHERE PAIR = (SELECT Individuals.[Parents_Pair_number] FROM Individuals WHERE Individuals.[Bird_ID]= '" & strBird_ID & "');"
Set rst = CurrentDb.OpenRecordset(strSQL)
If rst.RecordCount > 0 Then
Father_ID = rst![Male_ID]
End If
End If
rst.Close
Set rst = Nothing
我还建议使用JOIN
来加入表而不是子查询。