Is it possible to create a recursive query in Access?

前端 未结 7 1959
有刺的猬
有刺的猬 2020-11-27 19:12

I have a job table

Id
ParentID
jobName
jobStatus

The root ParentID is 0.

Is it possible in Access to create a query to

相关标签:
7条回答
  • 2020-11-27 19:56

    It is possible in Access to create a query to find the root of your given job. Don't forget the power of VBA functions. You can create a recursive function in a VBA module and use its result as an output field in your query.

    Example:

    Public Function JobRoot(Id As Long, ParentId As Long) As Long
       If ParentId = 0 Then
          JobRoot = Id
          Exit Function
       End If
    
       Dim Rst As New ADODB.Recordset
       Dim sql As String
       sql = "SELECT Id, ParentID FROM JobTable WHERE Id = " & ParentId & ";"
       Rst.Open sql, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
    
       If Rst.Fields("ParentID") = 0 Then
          JobRoot = Rst.Fields("Id")
       Else
          JobRoot = JobRoot(Id, Rst.Fields("ParentID"))    ' Recursive.
       End If
    
       Rst.Close
       Set Rst = Nothing
    End Function
    

    You can call this recursive function from your query by using the query builder or by just typing in the function name with arguments in a query field.

    It will yield the root.

    (I recognize the OP is a year old now, but I'm compelled to answer when everyone says what's impossible is possible).

    0 讨论(0)
提交回复
热议问题