Hale, Jim
Jim.Hale at FleetPride.com
Thu Jun 8 08:34:55 CDT 2006
Rocky, This function has been in my toolkit so long I forget where I got it. Probably from this list! Jim Hale Function ahtDoesObjExist(strObj As String, intType As Integer) As Boolean 'This function returns True if an object exists, false if it doesn't '------------------------------------------------------------------- Dim strName As String Dim db As Database Dim strCon As String On Error GoTo ahtDoesObjExist_Err Set db = CurrentDb() Select Case intType Case acTable strName = db.TableDefs(strObj).Name Case acQuery strName = db.QueryDefs(strObj).Name Case acForm, acReport, acMacro, acModule Select Case intType Case acForm strCon = "Forms" Case acReport strCon = "Reports" Case acMacro strCon = "Scripts" Case acModule strCon = "Modules" End Select strName = db.Containers(strCon).Documents(strObj).Name End Select ahtDoesObjExist = True ahtDoesObjExist_Exit: Exit Function ahtDoesObjExist_Err: ahtDoesObjExist = False Resume ahtDoesObjExist_Exit End Function -----Original Message----- From: Rocky Smolin - Beach Access Software [mailto:bchacc at san.rr.com] Sent: Wednesday, June 07, 2006 5:47 PM To: Access Developers discussion and problem solving Subject: Re: [AccessD] Modifying a query Jim: I think you're right. Delete and re-create was where I was heading if I want to keep this query in the string of queries the user wants to execute through a macro that they set up. "ahtDoesObjExist " whuzzat? Regards, Rocky Hale, Jim wrote: > I may have missed this suggestion from earlier in the thread, but why not > delete the old query and recreate it with the new criteria? I do it a lot > with passthrough queries but it can be done with regular Access queries as > well. Something like these code snippets (this ex creates a passthrough > query) > > Dim qdfPassthrough As QueryDef, rstPassthrough As Recordset > 'delete old version of query > if ahtDoesObjExist("qryDownload", acQuery) Then DoCmd.DeleteObject > acQuery, "qryDownload" > strPassthrough = "SELECT * from GLTLIB.GLMSL" > ' Create pass-through query > Set qdfPassthrough = db.CreateQueryDef("qryDownload") > qdfPassthrough.Connect = "ODBC;DSN=AS400Prod;" > qdfPassthrough.SQL = strPassthrough > ' Tell Access to wait as long as the query takes > qdfPassthrough.ODBCTimeout = 0 > Set rstPassthrough = qdfPassthrough.OpenRecordset() > qdfPassthrough.ReturnsRecords = True > > query qryDownload will show up in the Database container > > Jim Hale > *********************************************************************** The information transmitted is intended solely for the individual or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of or taking action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you have received this email in error please contact the sender and delete the material from any computer. As a recipient of this email, you are responsible for screening its contents and the contents of any attachments for the presence of viruses. No liability is accepted for any damages caused by any virus transmitted by this email.