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