A record in our stock item database had a product code that was something like 'ABCD+E'. The + (plus) sign in that product code was ASCI character 43.
For some reason, some records written in other related databases contained the same product code except the + (plus) sign was ASCII character 197, which in the old OEM DOS character set is a box character, the one that has the same basic shape as the normal + (plus) sign. And if you viewed the records in index order, the records were shown grouped together as if all the product codes were identical.
What this did was defeat a simple set of code that did:
causing it to stop at a record with a product code containing the 'fake' + (plus) sign.
Code: Select all
seek cProductCode do while Alias->Code == cProductCode .and. Alias->(!eof() // other code here Alias->(dbskip(1)) enddo
Once I found this and replaced those 'fake' characters with the real ones, all was ok. But it was a difficult one to pin down at the time.
And the only way I can think of to find these types of issues would be to manually skip through every record in every database we have looking for ASCII characters outside the 33 to 127 range so that they can be replaced.
I don't know where the data came from that allowed this dodgy ascii character into the product code field, but I am guessing it was some sort of data import from some other system.