Sub GetDataSources_Forms()

    Const MyTable = "MyDataSources_Forms"

    Dim db As DAO.Database

    Dim rs As DAO.Recordset

    Dim tdf As DAO.TableDef

    Dim qdf As DAO.QueryDef

    Dim fld As DAO.field

    Dim doc As Document

    Dim frm As Form

    Dim ds As String

    '

    On Error Resume Next

    DoCmd.DeleteObject acTable, MyTable

    '

    Set db = CurrentDb

    ' create table to store the results

    Set tdf = db.CreateTableDef(MyTable)

    With tdf

        Set fld = tdf.CreateField("FormName", dbText, 64)

        tdf.Fields.Append fld

        Set fld = tdf.CreateField("SourceType", dbText, 1)

        tdf.Fields.Append fld

        Set fld = tdf.CreateField("SourceName", dbText, 64)

        tdf.Fields.Append fld

        Set fld = tdf.CreateField("SourceSQL", dbMemo)

        tdf.Fields.Append fld

    End With

    db.TableDefs.Append tdf

    Set fld = Nothing

    Set tdf = Nothing

    '

    Set rs = db.OpenRecordset(MyTable)

    On Error Resume Next

    For Each doc In db.Containers("Forms").Documents

        rs.AddNew

        rs!FormName = doc.Name

        DoCmd.OpenForm doc.Name, acDesign

        Set frm = Forms(doc.Name)

        ds = frm.RecordSource

        If ds <> "" Then

            rs!SourceName = ds

            Set tdf = CurrentDb.TableDefs(ds)

            If Err.Number = 0 Then

                rs!SourceType = "T"

            Else

                rs!SourceType = "Q"

                Err.Clear

                Set qdf = db.QueryDefs(ds)

                If Err.Number = 0 Then

                    rs!SourceSQL = qdf.sql

                Else

                    rs!SourceSQL = ds

                    Err.Clear

                End If

            End If

        End If

        '

        Set tdf = Nothing

        Set qdf = Nothing

        DoCmd.Close acForm, doc.Name, acSaveNo

        rs.Update

    Next doc

    Set db = Nothing

    '

End Sub