is it possible to use WHERE criteria stored in a table to make updates in another table in MS Access -
i figure it'll easier explain example. have 2 tables so.
+----+--------------------------------+---------+ | table 1 | +----+--------------------------------+---------+ | id | criteria | value | +----+--------------------------------+---------+ | 1 | [table 2].[name] "dingo*" | alpha | | 2 | [table 2].[location] = "here" | bravo | | 3 | [table 2].[active] = true | charlie | +----+--------------------------------+---------+ +----+-------------+----------+--------+-------+ | table 2 | +----+-------------+----------+--------+-------+ | id | name | location | active | value | +----+-------------+----------+--------+-------+ | 1 | dingo bingo | there | false | | | 2 | bob | here | false | | | 3 | bingo | there | true | | | 4 | bingo bob | here | false | | +----+-------------+----------+--------+-------+ table 1 has rows of matching "criteria" table 2 , value row in table 2. know can use vba iterate through each row in table 1, create sql update string can used update table 2.
for example, sql first row in table 1 is:
update [table 2] set [table 2].[value] = "alpha" [table 2].[name] "dingo*" and result is:
+----+-------------+----------+--------+-------+ | table 2 | +----+-------------+----------+--------+-------+ | id | name | location | active | value | +----+-------------+----------+--------+-------+ | 1 | dingo bingo | there | false | alpha | | 2 | bob | here | false | | | 3 | bingo | there | true | | | 4 | bingo bob | here | false | | +----+-------------+----------+--------+-------+ but i'm wondering if there way use single query instead of having loop through each row in table 1.
if matters, guaranteed criteria in table 1 have no overlaps. in other words, if id 1 of table 1 matches id 1 in table 2 no other rows in table 1 match id 1 in table 2.
no, impossible without vba.
allowing collapse space-time continuum or @ least result in lisp.
but possible without looping through every record manually.
write public function accepts sql fields parameters , uses them build , execute sql statement. i'm not sure it's advisable, it's unlikely collapse space-time continuum.
public function runtablesql(byval svalue string, byval scriteria string) long dim ssql string on error goto eh ssql = "update [table 2] set [table 2].[value] = "" & svalue & "" _ & "where " & scriteria currentdb.execute ssql runtablesql = 0 exit function eh: runtablesql = err.number err.clear end function and run every row creating query this:
select *,runtablesql([value],[criteria]) result [table 1]
Comments
Post a Comment