You have Item_No as the join and it needs to be IDs. Also, no value list was attached to the itDescID field. I have modified your file and assigned the proper ids through all three tables (including the old History table) and I'll explain step by step since this needs to be done in sequence. I have also returned your file (LocatorMOD.fmp12) with these same changes and you can refer back to my original file showing the same things I will walk through now. These data modifications should be ran when Users are not in the system.
Establish new Ids in the parent table (idDesc) – back up first of course
Place itDescID field on your itDesc layout. Show all records (it will automatically unsort) and place your cursor in itDescID. Now Record > Replace Field Contents [ by serial, start at 1, increment by 1 and check 'update auto-enter options] then select 'Replace' button.
Pass these new itDescIDs from parent to its child tables (itLoca and itHist) – back up again first.
The idea is to use the old keys ( the existing highway where joined on Item_NO ) to pass through the newly created itDescID and that is easy to do because we use perspective. From a 'many' table, its parent is a single record. So standing in a child record, we can directly ask anything of the parent and get the right result so we just ask for the new ItDesc::itDescID.
Add new itDescID field to itLoca, result is number. Go to a Add New Item (itLoca table). Show all records, put cursor in the ItLoca::ItDescID field. Now we will do same as above except instead of replacing with serial, we will replace with a calculated result of the current records' parent idDescID. So again select Records > Replace Field Contents [ ItDesc::itDescID ], then the Replace button.
Next connect itHist to itDesc in your graph based upon Item_NO. Add itHist::itDescID to itHist tabl … Go to layout based upon ItHist … go through exactly like itLoca, show all records, place your cursor in itDescID and replace with ItDesc::itDescID.
Now go to your graph and double-click the = between ItDesc and ItLoca and change the keys from being based upon Item_NO to itDescID on both sides. Below check 'allow creation' on both sides (which answers your question #3). You can now remove Item_No from both ItLoca and itHist as they are redundant.
Now for your questions:
… the itemID popup does not appear to allow a user to begin typing in an item
If you have a smaller number of Items, it is good to use a pop-up menu since it deters from mistyping but you can also try out a drop-down list … type the first number of your Item_No. Try it out by typing apl7 quickly in LocatorMOD and watch it jump. Since I used a drop-down, it does not display the 'second field' value after leaving the field so I stacked a merge field of ItDesc::Item_No on top of the id which hides the underlying ItDescID field.
However, with over 20-30 items, even drop-down is lacking and usually a portal placed on popover or in small picker window is used instead. When the user selects an item in the portal, the itDescID is inserted into itLoca::itDescID. Picker portals can be further filtered by first character typed … there are many posts on the subject with various techniques. Search for 'picker' or 'portal filter' In your file, you had no value list attached to the itDescID field (see either of my files for the value list). I added a drop-down list and attached it to your itLoca::itDescID field.
Is it possible to have the items and the item location on the same screen. This way they can validate it and at the same time begin entering transactions for the item.
Currently when you select an itDescID any fields placed from itDesc table onto Add New Item (itLoca table) will fill in. You didn't have parent fields on your layout … remember those lower-right fields in my sample were from Items table and they show how you can simply place any parent (Items) fields onto child tables and they just display … no need to add them again to the child.
You appear not to have a location as an entity but rather a series of fields: Section, Row, Bin, Level and Multi. I am unsure how you wish to validate locations. On Rows, you can use a value list to display 'values from field and all values' for Row numbers but I suspect that is not what you need. I suggest you set aside the location validations since it can be added as a separate piece (and possibly another table) and should probably be fleshed out in its own thread (if I understand correctly; it is like SLOTS). You can search for SLOTS to find a good post by Comment on it.
Every table which holds data should have the critical 5 fields (unique meaningless ID, creation & modification timestamps, createdBy & modifiedBy or their equivalent staffID). You need them because, aside from telling you who created a record, you cannot retrieve, investigate or repair data in tables effectively without these five fields.
Feel free to provide more information or ask further questions.
added blue. File didn't attach the first time. Here it is. :-)