Re: Translation of SQL for VBA
- From: "Ken Snell \(MVP\)" <kthsneisllis9@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 5 Jan 2006 11:59:15 -0500
Not knowing what the criteria are in the SQL string, my first thought is
that you would modify the criteria similarly to how your posted code
modifies the tablename in the string.
--
Ken Snell
<MS ACCESS MVP>
"Kou Vang" <KouVang@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:C1E90443-CDA1-4164-B3EE-63B72942308B@xxxxxxxxxxxxxxxx
> Thanks for the help Ken! I think I'm almost there, this is getting closer
> to
> what I wanted. If I wanted to get into modifying the criteria of the
> query,
> would I then have to write out my SQL line and modify it in my string?
> I'm
> using a form with text and combo boxes as the values in the criteria of
> the
> Append Query. The code you have given me only changes the target table
> correct? How do I access the criteria of the query now?
>
> "Ken Snell (MVP)" wrote:
>
>> 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
- From: Ken Snell \(MVP\)
- Re: Translation of SQL for VBA
- From: Kou Vang
- Re: Translation of SQL for VBA
- Prev by Date: Re: event builder
- Next by Date: Re: Programmatically Referencing a Report
- Previous by thread: Re: Translation of SQL for VBA
- Next by thread: Re: Translation of SQL for VBA
- Index(es):
Relevant Pages
|