Re: Translation of SQL for VBA
- From: "Ken Snell \(MVP\)" <kthsneisllis9@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 5 Jan 2006 09:32:17 -0500
Ahhhhhh... ok, what I gave you isn't going to work directly. Instead, you'll
need to create a new query, evaluate the parameters in the "new" query, and
then execute it.
Let's change your code to this (I've also corrected the code, as TableDefs
do not contain queries):
Dim strSQL as String
Dim dbf as Database
Dim par as DAO.Parameter
Dim qdf As DAO.QueryDef
'Set up object variables
Set dbf = CurrentDb
'Get the SQL string for the query
strSQL = dbf.QueryDefs("MyQueryName").SQL
'Replace the old name with the new name in the SQL
strSQL = Replace(strSQL, "OldTableName", "NewTableName")
'Create temporary query
Set qdf = dbf.CreateQueryDef("", strSQL)
'Evaluate the parameters in the new query
For Each par in qdf.Parameters
par.Value = Eval(par.Name)
Next par
'Runs the append query with the selected table name
qdf.Execute
'Clear object variables
qdf.Close
Set qdf = Nothing
dbf.Close
Set dbf = Nothing
--
Ken Snell
<MS ACCESS MVP>
"Kou Vang" <KouVang@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:5C13B9B1-F1FA-4928-B183-D6F1A7B0FD3D@xxxxxxxxxxxxxxxx
> I'm trying to do it in VBA, so I can change the target table in my append
> query, and not have to make 4 or 5 different queries. Instead, I just
> want
> one query, while modifying the criteria and the target table of the Append
> Query. Someone gave me a start with:
>
> Dim strSQL as String
> Dim dbf as Database
> Dim tdfs as TableDefs
> Dim tdf as TableDef
>
> 'Set up object variables
> Set dbf = CurrentDb
> Set tdfs = dbf.TableDefs
> Set tdf = tdfs("MyQueryName")
>
> 'Get the SQL string for the query
> strSQL = tdf.SQL
> 'Replace the old name with the new name in the SQL
> strSQL = Replace(strSQL, "OldTableName", "NewTableName")
>
> 'Runs the append query with the selected table name
> dbf.Execute(strSQL)
>
> 'Note, we don't change the name in the original saved query so we don't
> know
> what it is next time we need it. The Execute method above is the same as
> running the query any other way and is about 5 times faster than then
> RunSql
> method.
>
> 'Destroy object variables
> Set tdf = Nothing
> Set tdfs = Nothing
> Set dbf = Nothing
>
> So I was just trying to put my SQL string together and was having
> problems.
>
> "Ken Snell (MVP)" wrote:
>
>> What are you doing with the SQL string when it's built? That can affect
>> how
>> you would handle this.
>>
>> In general, you would concatenate the actual value from the parameter
>> into
>> the string:
>>
>> MyString = "WHERE VcValue.Site=" & [forms]![VcValueSubform]![site] & _
>> " AND VcValue.Year=" & [forms]![VcValueSubform]![txtSubyear]
>>
>> (above assumes that both fields are numeric).
>>
>> --
>>
>> Ken Snell
>> <MS ACCESS MVP>
>>
>> "Kou Vang" <KouVang@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
>> news:AAA8A202-0E7F-4CE1-864D-ACFAB3317B8F@xxxxxxxxxxxxxxxx
>> >I have not been able to find a translation of 2 conditions of a query to
>> >be
>> > properly coded in VBA. I know this is pretty basic, but I'm
>> > struggling.
>> > How
>> > do I say this in my strSQL string in VBA? Thanks.
>> >
>> > WHERE (((VcValue.Site)=[forms]![VcValueSubform]![site]) AND
>> > ((VcValue.Year)=[forms]![VcValueSubform]![txtSubyear]));
>> >
>>
>>
>>
.
- Follow-Ups:
- Re: Translation of SQL for VBA
- From: Kou Vang
- Re: Translation of SQL for VBA
- References:
- Re: Translation of SQL for VBA
- From: Ken Snell \(MVP\)
- Re: Translation of SQL for VBA
- From: Kou Vang
- Re: Translation of SQL for VBA
- Prev by Date: Re: Search Across unrelated forms.
- Next by Date: RE: Incrementing a number and avoiding duplicates
- Previous by thread: Re: Translation of SQL for VBA
- Next by thread: Re: Translation of SQL for VBA
- Index(es):
Relevant Pages
|