Bruce Bruen
bbruen at bigpond.com
Fri Jul 25 08:29:43 CDT 2003
Here's a sliightly shorter way to do it directly in a parameterised query: PARAMETERS [Enter table name] Text ( 255 ); SELECT MSysObjects.Name, IIf(IsNull([Expression]),[Name1],[Name2] & "(" & [Expression] & ")") AS SourceTable FROM MSysObjects INNER JOIN MSysQueries ON MSysObjects.Id = MSysQueries.ObjectId WHERE (((IIf(IsNull([Expression]),[Name1],[Name2] & "(" & [Expression] & ")"))=[Enter table name]) AND ((MSysObjects.Type)=5) AND ((MSysQueries.Attribute)=5)); B -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Lonnie Johnson Sent: Friday, 25 July 2003 10:26 PM To: Access Developers discussion and problem solving Subject: [AccessD] (Tip) Locate a Table Name within Queries Here is some code that can be useful for letting you know which queries use a certain table. Cut and past this into a module. Option Compare Database Option Explicit Sub findtbls() FindAllQueriesThatContainASpecifiedTable ("MyTableNameHere") End Sub Public Function FindAllQueriesThatContainASpecifiedTable(tblName As String) Dim qd As QueryDef Dim DB As Database Dim tb As TableDef Dim rsQueries As Recordset, RS As Recordset Dim sqlStr As String Dim index As Integer Set DB = CurrentDb() Set tb = DB.CreateTableDef("tempTblDef") 'create temp table sqlStr = "SELECT QueryName FROM " & tb.name & " WHERE ((([QuerySQL]) LIKE '*" & tblName & "*'))" tb.Fields.Append tb.CreateField("QueryName", dbText) 'add fields we need tb.Fields.Append tb.CreateField("QuerySQL", dbMemo) DB.TableDefs.Append tb Set RS = tb.OpenRecordset() 'open the table! For Each qd In DB.QueryDefs 'get sql and name of each query, ignoring If (Left(qd.name, 1) <> "~") Then 'system and hidden queries RS.AddNew RS!QueryName = qd.name RS!QuerySQL = qd.SQL Debug.Print RS!QueryName RS.Update End If Next RS.close 'open up a recordset based on the temp table using a SQL query Set rsQueries = DB.OpenRecordset(sqlStr) rsQueries.MoveLast: rsQueries.MoveFirst 'print out the resuls of our query Debug.Print "------ Queries containing table '" & tblName & "' -------" Debug.Print "------ number of queries : " & rsQueries.RecordCount For index = 1 To rsQueries.RecordCount Step 1 Debug.Print rsQueries!QueryName rsQueries.MoveNext Next rsQueries.close 'get rid of it! DB.TableDefs.Delete tb.name 'delete temp. tabledef Set DB = Nothing End Function Lonnie Johnson ProDev, Professional Development of MS Access Databases Visit me at ==> http://www.prodev.us <http://www.prodev.us/> <http://www.galaxymall.com/software/PRODEV> _____ Do you Yahoo!? Yahoo! <http://us.rd.yahoo.com/evt=10469/*http://sitebuilder.yahoo.com> SiteBuilder - Free, easy-to-use web site design software -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://databaseadvisors.com/pipermail/accessd/attachments/20030725/8d40a434/attachment-0001.html>