We help IT Professionals succeed at work.

Weird Microsoft Access Error

Theo Fitchner
on
118 Views
Last Modified: 2017-04-02
Hello everyone. I have a Microsoft Access form that is behaving in the strangest manner. I set up a macro as the Before_Update event of an unbound control so as to validate the quantity (of an item) being sold. One part of the validation is to ensure that the quantity being sold is not greater than the available quantity of the item. However I notice the strangest thing:

If the AvailableQty is say: 45  ,   I cannot enter '5' as the quantity sold. For some reason Access is evaluating only the first digit of the AvailableQty. So as 5 is greater than 4, I get a false negative error stating that the Qty Sold cannot be higher then the AvailableQty. However, if I enter any number of which its first digit is lower than 4, it accepts the number. In this light, it will accept the following numbers: 1 to 4, 10 to 45.

In other words, if the Available Qty is 500, it won't accept the numbers 60 to 99 because their first digit is greater than the 5 in 500.

I am running Office Professional Plus 2010 (Service Pack 2).  What is causing this? I have attached screenshots of both the form (and the error message) as well as a screenshot of the macro. Pls help. Thanks.
Qty-Problem.JPG
Qty-Problem---Macro---2.JPG
Comment
Watch Question

CERTIFIED EXPERT

Commented:
Can you upload a sample db displaying this behavior?
Infotrakker Software
CERTIFIED EXPERT
Most Valuable Expert 2012
Top Expert 2014
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION
CERTIFIED EXPERT
Most Valuable Expert 2015
Distinguished Expert 2018
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION

Author

Commented:
@Gustav & @Scott
------------------------------
I figured that Access was seeing the contents of the combo box as text. To counter this, I set its After_Update event to convert the content to an integer. Like this: CInt([cmbQtySoldDrinks])

I'll try the methods both of you suggested.

Author

Commented:
@Scott
---------

This is the full If statement. See the attached screenshot.
Qty-Problem---Macro.JPG
CERTIFIED EXPERT
Most Valuable Expert 2015
Distinguished Expert 2018

Commented:
Yes, but that won't influence on your macro which picks the value directly off the combobox.

Besides, CInt and CLng (and CByte for that matter) don't like empty strings, and large(r) values.
Val eats anything but Null.

/gustav

Author

Commented:
@MacroShadow
------------------------
It's a production db with live data. I'll need to create a 'neutral version' with just the relevant tables and forms. If the other suggestions don't work, I'll do that. I apologize for any inconveniences.

Author

Commented:
Converting both values to an integer before doing the comparison worked.  This is the conditional statement:

If CInt([Form].[cmbQtySoldDrinks])>CInt([Form].[txtQtyAvailableDrinks]), Then ...


Gustav's suggestion of using the Val function also worked but I think the Val function would be more appropriate when there are spaces in the value. For instance, a phone number. As regards, nulls, there's a conditional statement that ensures that nulls are not accepted. I didn't know about the Val function until Gustav suggested it.

Thanks both of you. God bless.

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions