The issue with the 94 error is that if you attempt to call the function with an invalid/non existent ClothID, it results in invalid use of Null.
We'll go with your tables for the moment, but, as I said earlier, your database design (tables and relationships) must support your business requirements.
You know your business better than I do, so we'll continue on with your tables.
Do you ever need reports/data by LotNo, JobNo, BatchNo?
I recommend you remove the TotalUsed from thblUseage --NEVER store calculated values.
Did you look at the immediate window to see how the starting amount is adjusted for each useage of cloth?
When you add new Cloth, you should be working with tblCloth. It is NOT a Useage at that point in time. All you are really doing is identifying this new cloth and its attributes - including InitialRollAmount. You work with the tblUseage when you are setting up/doing a Job. As I mentioned in previous post, the query does not properly deal with the InitialRollAmount, so should be removed (unless you know how to adjust it). You should use the function.
On frmCloth, you are also using the query to calculate cloth remaining. (and as mentioned the query is an issue) When you add a new Cloth to the database, using frmCloth, the Cloth Remaining is equal to InitialRollAmount since it is a brand new roll.
To me, it does not make sense to record the amount remaining.
Separate the functionality -- you have a useage form and a frmCloth and both seem to have mechanism to do useages???? I recommend separating these -- use FrmCloth to Add a new cloth; and frmUseages to deal with Jobs and Useages.
I added a new Cloth via your frmCloth ---you can see where the errors are if you look at the design view on record 3 of 3.
As before I am returning the zip (same name) but database has changed a little.
Have to go out for a while, but will be back online later.