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.