Access 2003 report - masking a credit card number

I have an Access 2003 form, and a report. On the form I capture a credit card #, but when I print the report, to be in compliance with the law I have to fill in all XXXX for the credit card number, ONLY showing the last 4 digits. I do not know how to do this on the report..
thx experts...Bob
bobrossi56Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Connect With a Mentor Database ArchitectCommented:
Reason:
On the report ... the Name of the Control for this expression was the same as the Field Name (CreditNumer) ... which Access does by default.  Unfortunately in Reports especially, Access gets confused when the control name is the same as something in - this case - and expression.  I renamed the control to txtCreditNumer ... and now it works.  Keep this in mind for the future ... always give the control a different name than the Field name if you are going to use that field in a calculation on the report or refer to it in code.

A bigger issue:  Because in Tools>>Options>>General tab ... Track Name AutoCorrect Info was on (by Default) ... when I first renamed the control to txtCreditNumer ... Access rename CreditNumer in the expression to txtCreditNumer ... and it STILL didn't work!  What!!!  Of course, I immediately noticed that ... and knew what the problem was.

The moral to this:  *Always* ... in any new mdb you create or inherit ... immediately turn of Track name AutoCorrect info.  Unfortunately ... this feature was not implemented correctly and has been known case a LOAD of bugs ... as well as creating the little issue I had here.  Always turn this off.

Here is a reference on this:

http://allenbrowne.com/bug-09.html

Also ... read the remainder of that article on the other properties that cause issues.

mx
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
Example:

String(Len("1234-1234-1232-1234")-4,"X") & Right("1234-1234-1232-1234",4)

returns  XXXXXXXXXXXXXXX1234

So, in a text box on your report, put this as the Control Source:

=String(Len([YourCreditCardField])-4,"X") & Right([YourCreditCardField],4)

mx
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
Bob ... as a side note, there is no way I would probably store credit card numbers in an Access database - as the security just isn't there.  So, unless you can secure this database in some clever way - I would give that some thought.

mx
0
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

 
bobrossi56Author Commented:
I put this in the control source of the report for the field CreditNumer and it returns #Error. The field on the form is called creditnumer, the database field is called creditnumer, and the report field is called creditnumer.

=String(Len([CreditNumer])-4,"X") & Right([CreditNumer],4)
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
Try this:

= IIf(Not IsNull([CreditNumer]), String(Len([CreditNumer]) - 4, "X") & Right([CreditNumer], 4), Null)

mx
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
seems to work for any combination of numbers - ie any CC format.  Needed to take into account Null records.

mx
0
 
bobrossi56Author Commented:
Still getting the #error mx. Does it matter that type of field it is, text vs. number?
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
"Does it matter that type of field it is, text vs. number?"
No ... what I originally posted I tested.  Strange ...

Can you:

1) Compact & Repair (to shrink the size),
2) Zip up the MDB (to further shrink the size)
3) Attach the file for upload here (using the 'Attach File function below) ... removing any sensitive data of course.
4** And please give a clear explanation of exactly how to reproduce the problem or what you are trying to do.

mx
0
 
bobrossi56Author Commented:
OK, no data in here I care about.
Again, when I enter a credit card number on the form, and generate the report via the PDF button, I get #error on the report, instead of XXXXXXXXXXXX6471. Only 1 report and form is Contracts

I have another question if I could while you have the database in your hands, should I submit another question in hopes you get it?
Limo-Rental.mdb
Limo-Rental-be.mdb
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
ok standby ....
0
 
bobrossi56Author Commented:
Actually I just figured out my other problem, I now just have the credit card XXXX issue.
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
I found the problem - will upload standby.

mx
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
see attached mdb ...

mx
Limo-Rental-MX01.zip
0
 
bobrossi56Author Commented:
mx, I hate to be a kill-joy, but it still give me #error. here is what I did.
1. Turned off that rack Name AutoCorrect  in my database
2. Opened my report and chanhed the credit card field name to txtCreditNumer
3. Then I took the code from your database =IIf(Not IsNull([CreditNumer]),String(Len([CreditNumer])-4,"X") & Right([CreditNumer],4),Null) and put it into my report's credit card field.
4. Then I created a new record, made a PDF, opened said PDF and in the credit card field I get #errror
0
 
bobrossi56Author Commented:
However, if I replace my front end DB with yours, and relink the tables, it works fine. ARGHHH!!!
0
 
bobrossi56Author Commented:
I copied and pasted your report field onto my report and it works fine now. GO figure.
thanks for ALL your help mx.
0
 
bobrossi56Author Commented:
mx is the best, great help.
most asppreciative
0
 
DatabaseMX (Joe Anderson - Microsoft Access MVP)Database ArchitectCommented:
"Grade:  A - "mx is the best, great help.
most asppreciative"  "

Always a pleasure Bob ... thx.

mx
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.