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