mp,
You have users that make keying errors??? I can hardly believe it
Let's start with the assumption that you were able to create the global variables blnLetter and blnNumber, and are setting them to false in the GotFocus event of txtBatch_Num.
Your rule 2 simplifies this logic quite a bit, because any letter (blnLetter = true) means that the location is 1/New York.
BTW, the answer about the combo box is no. If you are only going to display one piece of data, a textbox is fine.
So, in the LostFocus event of txtBatch_Num, you need some logic like:
Private sub ??????(the LostFocus event of txtBatch_Num)
Dim strLoc_Id as String
Select case blnLetter
Case True 'at least one letter in textbox
txtLocation_Name.SetFocus
txtLocation_Name.Text = "New York"
txtLocation_Id.SetFocus
txtLocation_Id.Text = 1
Case False 'no letters present
Select case val(txtBatch_Num.Text
Case 0 to 19999
strLoc_Id = 2
txtLocation_Id.SetFocus
txtLocation_Id.Text = 2
GetLocName(strLoc_Id) 'Go get the location name
Case 20000 to 29999
txtLocation_Id.SetFocus
txtLocation_Id.Text = 3
strLoc_Id = 3
GetLocName(strLoc_Id)
Case 30000 to 39999
strLoc_Id = 4
txtLocation_Id.SetFocus
txtLocation_Id.Text = 4
GetLocName(strLoc_Id)
.
.
Case Else
msgBox "Error-Bad Location",vbokonly
txtLocation_Id.SetFocus
End Select
End Select
End Sub
Then you need another subroutine:
Private Sub GetLocName(Loc as String)
dim rs as recordset
Set rs = CurrentDB.OpenRecordset("Select Location_Name from Location where Location_ID = '" & Loc & "';"
Select case rs.EOF
Case True
MsgBox "Location " & Loc & " Not in Location Table"
case False
txtLocation_Name.SetFocus
txtLocation_Name.Text = rs.Fields("Location_Name"

End Select
rs.Close
Set rs = Nothing
End Sub
This should start you on your way to a solution. I assumed Access 97. If not, you will need some different recordset code in the GetLocName sub.
Feel free to write back if you have problems with this (or if you are not using Access 97) and I will try to make a little database and form to replicate what you are doing. It is a little bit hard to make sure that you are remembering all of the things you need to do without being able to run the code and see what happens...
By the way, I understand what you mean about understanding the code when you see it, but having trouble writing it from scratch. Lots of people suffer the same problem.
Also the exponential growth of a "little" project. They can sometimes get a life of their own.
Good Luck. Let me know if this doesn't work and I'll try to straighten it out.
Tranman (Paul)