conditional update query

I have 2 ms access 2003 tables with the following sample data

table a
id      Floater
1      
2    
3
4


table b
id      Floater
1      N
3      Y

Note: there is only one entry for a given id on both tables
          there may be id entries on table a that are not on table b

I am trying to write an update query that will  update the value of floater on table a

 if there is an matching id entry on table b I would like the value of floater on table a to be set to that on table b


If there is no matching id entry on table b I would like the floater value on table a to be set to N

using the example data I would like table a to have the following values after the update query is run


table a
id      Floater
1      N
2      N
3      Y
4      N
johnnyg123Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
JezWaltersConnect With a Mentor Commented:
If you don't like the fact that you have to double each quotation mark when it's inside quotation marks, you could always use apostrophes instead.

Whichever delimiter you use, but bear in mind that you'll also have to double any ocuurences of it in your id values too!
UPDATE tablea
SET floater = Nz(DLookup("floater","tableb","id = '" & id & "'"),"N")

Open in new window

0
 
peter57rCommented:
update tableA set floater = nz(Dlookup("Floater", "TableB","Id = " & tableA.Id) , "N")
0
 
johnnyg123Author Commented:
I have the access query prompts on

when I run the query I get a message saying it is going to update 4 records but then when I click ok
I get an error message that says

Microsoft Office Access can't update all the records in the update query

Microsoft office access didn't update 4 field(s) due to a type conversion failure

0
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

 
johnnyg123Author Commented:
I have attached a sample database
test.mdb
0
 
JezWaltersCommented:
You'll need the following, because the id fields are text:

    UPDATE tablea
    SET floater = Nz(DLookup("floater", "tableb", "id = """ & id & """"), "N")

0
 
Nick67Commented:
@JezWalters is right
String variables need to be surrounded by quotes
But, gazillions of quotes drive me mad and are VERY hard to debug
Chr(34) is a quote mark
Works in VBA and the query editor

This works and is easier to digest
UPDATE tableA
SET tableA.floater = nz(DLookUp("Floater","TableB","Id = " & Chr(34) & tableA.Id & Chr(34)),"N");

Chr(34) & tableA.Id & Chr(34) is your text field id surrounded by quotes
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.