[AccessD] Records Affected 0

jwcolby jwcolby at colbyconsulting.com
Wed May 27 10:25:53 CDT 2009


I have an interesting situation.  I am working on a database where numeric data is scanned into a 
table from paper.  The original author had developed queries to replace all I with 1, all l with 1 
etc (characters replaced with numbers).  There is a whole series of these queries, replacing 
anything that looks like a zero but is actually alpha with a zero and anything that looks like a 1 
but is actually alpha with a number one.

If I try to perform a db.execute and set dbFailOnError a hand full of these queries fail.  If I take 
off the dbFailOnError the queries execute but the Records Affected property reports a zero.  Now I 
have intentionally seeded a specific column with alpha characters, and the queries do in fact fix 
the alpha (replaces with number) but the Records Affected still reports a zero.

Shouldn't the RecordsAffected report the actual number of records updated?  And what's up with the 
failure if I use dbFailOnError.  The error reported is "data type mismatch in criteria".

At first when I tried this I would get a failure of the query even when run manually.  I narrowed it 
down to the last three columns which were empty (maybe literally).  I modified the table to place a 
default empty string "" as data was appended into the table and now the query runs manually but will 
still fail when dbFailOnError is applied.

The code:

     db.Execute "qryFix6_Correct_O", dbFailOnError
     Debug.Print "Correct 0 - Records Affected: " & db.RecordsAffected

The query:

UPDATE Import SET Import.Field1 = Replace([Field1],"O","0"), Import.Field3 = 
Replace([Field3],"O","0"), Import.Field4 = Replace([Field4],"O","0"), Import.Field5 = 
Replace([Field5],"O","0"), Import.Field6 = Replace([Field6],"O","0"), Import.Field7 = 
Replace([Field7],"O","0"), Import.Field8 = Replace([Field8],"O","0"), Import.Field9 = 
Replace([Field9],"O","0"), Import.Field10 = Replace([Field10],"O","0"), Import.Field11 = 
Replace([Field11],"O","0"), Import.Field12 = Replace([Field12],"O","0");

Again, the queries do run if I remove the dbFailOnError and they do "fix up" the data correctly, but 
they incorrectly report zero records affected after fixing up the data.

I do so love Access.

-- 
John W. Colby
www.ColbyConsulting.com



More information about the AccessD mailing list