Attempting an inventory management database

J

Joe

I am attempting to create an inventory tracking database and having
some problems with creating the structure for it. There are 2 primary
issues that I am unsure how to resolve and wondering if anyone could
provide some input.

First, has to do with how to record an entry. I need to provide the
background of the form design to properly frame the question. The
database is meant to track as much as 500 inventory parts as they are
transferred from one job location to another job location. Each time
inventory is added or moved a ticket is created outlining the location
the inventory came from and where it went to and in what quantity.
Each ticket can contain multiple part transfers. New inventory is
also added via a ticket and always comes from one of 2 locations a
yard where it is stored or a lease company.

The input form for the Ticket entry has a main form and sub form. The
main form allows a user to record a ticket # (auto #) and date that
tracks the overall ticket transaction. The sub form provides a place
to select a part# to be transferred, quantity of transfer, "From job
#” and "To job #”. This entry needs to serve as the basis for 2
entries; what job # had a “Transfer From” (reduction in inventory) and
the other as what job number had “Transfer To” (increase in inventory)
and record the date.

This is where I am getting stuck:
- There are 500 part numbers. For every new job I would have to
update my inventory table to have 500 records matching the 1 new job #
with the 500 part #’s and the balance of each part would have to be
set to “0”. I am not sure; if this is a great way to configure my
table records as over time there will be too many records in this one
table, and if this is the right table structure how do I create a new
recordset for each new job.

- Inventory balances need to be increased and reduced via 1
transaction. Specifically, the ticket # form allows users one line on
the sub form per transfer where they enter the part # and the To Job#"
and "From job #". For example; Ticket # 1 has a transfer of 100 units
of part # abc, going to job 123, from job 456. This entry should
record 2 transactions in the inventory table; an increase in inventory
for job 123 and a decrease in inventory for job 456 for the same part
#.

- Of lesser importance and more difficulty; I also need a report that
can tell me whenever a Jobs inventory changes how many days was the
balance of inventory held before the change occurred? For example if
starting inventory on 7/1 is 100 units and is reduced by 20 units on
7/15, I need to know that for 14 days this location held 100 units.
This quantity will be used to generate a cost calculation. This is
tough (impossible?) to calculate for a report on the fly. So I am
assuming an entry needs to be in some table.

I am pretty sure that my data tables are not setup correctly; I have a
Parts, Ticket and Inventory Transfer table. I did not create an
inventory table as of yet. I was trying to store all the ticket
transactions in the Inventory Transfer table and then perform query
calculations to get the right balance but that did not work as there
is no starting inventory balance and access hates calculations that
resolve to null.

Any help or links to help would be much appreciated.

Thanks
 
G

Gina Whipp

Joe,

WOW, you have gotten a long way BUT maybe too far. The MOST important part
of the database is the tables, if they are not correct everything else will
be on shaky ground. Below are some samples of Inventory databases and a
Data Model. You mentioned that you have not created the Inventory table
yet... well, let's get on that as you can't do much without it. So let's go
back to the beginning and work on those tables. (As a side note, nothing
you mentioned is impossible, we just have a little work to do.)

http://www.databasedev.co.uk/customer_orders_data_model.html

http://office.microsoft.com/en-us/templates/TC010184581033.aspx?CategoryID=CT101426031033

http://office.microsoft.com/en-us/access/HA011230971033.aspx

Understanding Relational design and Normalization is also KEY. I would
actually prefer you do this first but up to you. The below contains some
links that will help you understand the before mentioned...

Jeff Conrad's resources page:
http://www.accessmvp.com/JConrad/accessjunkie/resources.html

The Access Web resources page:
http://www.mvps.org/access/resources/index.html

A free tutorial written by Crystal (MS Access MVP):
http://allenbrowne.com/casu-22.html

MVP Allen Browne's tutorials:
http://allenbrowne.com/links.html#Tutorials

In closing, after reviewing the above post your tables and their fields and
me or one of the other volunteers will be happy to
amend/change/edit/leave-as-is your design.

--
Gina Whipp

"I feel I have been denied critical, need to know, information!" - Tremors
II

http://www.regina-whipp.com/index_files/TipList.htm

I am attempting to create an inventory tracking database and having
some problems with creating the structure for it. There are 2 primary
issues that I am unsure how to resolve and wondering if anyone could
provide some input.

First, has to do with how to record an entry. I need to provide the
background of the form design to properly frame the question. The
database is meant to track as much as 500 inventory parts as they are
transferred from one job location to another job location. Each time
inventory is added or moved a ticket is created outlining the location
the inventory came from and where it went to and in what quantity.
Each ticket can contain multiple part transfers. New inventory is
also added via a ticket and always comes from one of 2 locations a
yard where it is stored or a lease company.

The input form for the Ticket entry has a main form and sub form. The
main form allows a user to record a ticket # (auto #) and date that
tracks the overall ticket transaction. The sub form provides a place
to select a part# to be transferred, quantity of transfer, "From job
#” and "To job #”. This entry needs to serve as the basis for 2
entries; what job # had a “Transfer From” (reduction in inventory) and
the other as what job number had “Transfer To” (increase in inventory)
and record the date.

This is where I am getting stuck:
- There are 500 part numbers. For every new job I would have to
update my inventory table to have 500 records matching the 1 new job #
with the 500 part #’s and the balance of each part would have to be
set to “0”. I am not sure; if this is a great way to configure my
table records as over time there will be too many records in this one
table, and if this is the right table structure how do I create a new
recordset for each new job.

- Inventory balances need to be increased and reduced via 1
transaction. Specifically, the ticket # form allows users one line on
the sub form per transfer where they enter the part # and the To Job#"
and "From job #". For example; Ticket # 1 has a transfer of 100 units
of part # abc, going to job 123, from job 456. This entry should
record 2 transactions in the inventory table; an increase in inventory
for job 123 and a decrease in inventory for job 456 for the same part
#.

- Of lesser importance and more difficulty; I also need a report that
can tell me whenever a Jobs inventory changes how many days was the
balance of inventory held before the change occurred? For example if
starting inventory on 7/1 is 100 units and is reduced by 20 units on
7/15, I need to know that for 14 days this location held 100 units.
This quantity will be used to generate a cost calculation. This is
tough (impossible?) to calculate for a report on the fly. So I am
assuming an entry needs to be in some table.

I am pretty sure that my data tables are not setup correctly; I have a
Parts, Ticket and Inventory Transfer table. I did not create an
inventory table as of yet. I was trying to store all the ticket
transactions in the Inventory Transfer table and then perform query
calculations to get the right balance but that did not work as there
is no starting inventory balance and access hates calculations that
resolve to null.

Any help or links to help would be much appreciated.

Thanks
 
J

Joe

Joe,

WOW, you have gotten a long way BUT maybe too far.  The MOST important part
of the database is the tables, if they are not correct everything else will
be on shaky ground.  Below are some samples of Inventory databases and a
Data Model.  You mentioned that you have not created the Inventory table
yet... well, let's get on that as you can't do much without it.  So let's go
back to the beginning and work on those tables.  (As a side note, nothing
you mentioned is impossible, we just have a little work to do.)

http://www.databasedev.co.uk/customer_orders_data_model.html

http://office.microsoft.com/en-us/templates/TC010184581033.aspx?Categ...

http://office.microsoft.com/en-us/access/HA011230971033.aspx

Understanding Relational design and Normalization is also KEY.  I would
actually prefer you do this first but up to you.  The below contains some
links that will help you understand the before mentioned...

Jeff Conrad's resources page:http://www.accessmvp.com/JConrad/accessjunkie/resources.html

The Access Web resources page:http://www.mvps.org/access/resources/index.html

A free tutorial written by Crystal (MS Access MVP):http://allenbrowne.com/casu-22.html

MVP Allen Browne's tutorials:http://allenbrowne.com/links.html#Tutorials

In closing, after reviewing the above post your tables and their fields and
me or one of the other volunteers will be happy to
amend/change/edit/leave-as-is your design.

--
Gina Whipp

"I feel I have been denied critical, need to know, information!" - Tremors
II

http://www.regina-whipp.com/index_files/TipList.htm


I am attempting to create an inventory tracking database and having
some problems with creating the structure for it.  There are 2 primary
issues that I am unsure how to resolve and wondering if anyone could
provide some input.

First, has to do with how to record an entry.  I need to provide the
background of the form design to properly frame the question.  The
database is meant to track as much as 500 inventory parts as they are
transferred from one job location to another job location.  Each time
inventory is added or moved a ticket is created outlining the location
the inventory came from and where it went to and in what quantity.
Each ticket can contain multiple part transfers.  New inventory is
also added via a ticket and always comes from one of 2 locations a
yard where it is stored or a lease company.

The input form for the Ticket entry has a main form and sub form.  The
main form allows a user to record a ticket # (auto #) and date that
tracks the overall ticket transaction.  The sub form provides a place
to select a part# to be transferred, quantity of transfer, "From job
#” and "To job #”.  This entry needs to serve as the basis for 2
entries; what job # had a “Transfer From” (reduction in inventory) and
the other as what job number had “Transfer To” (increase in inventory)
and record the date.

This is where I am getting stuck:
- There are 500 part numbers.  For every new job I would have to
update my inventory table to have 500 records matching the 1 new job #
with the 500 part #’s and the balance of each part would have to be
set to “0”.  I am not sure; if this is a great way to configure my
table records as over time there will be too many records in this one
table, and if this is the right table structure how do I create a new
recordset for each new job.

- Inventory balances need to be increased and reduced via 1
transaction.  Specifically, the ticket # form allows users one line on
the sub form per transfer where they enter the part # and the To Job#"
and "From job #".  For example; Ticket # 1 has a transfer of 100 units
of part # abc, going to job 123, from job 456.  This entry should
record 2 transactions in the inventory table; an increase in inventory
for job 123 and a decrease in inventory for job 456 for the same part
#.

- Of lesser importance and more difficulty; I also need a report that
can tell me whenever a Jobs inventory changes how many days was the
balance of inventory held before the change occurred?  For example if
starting inventory on 7/1 is 100 units and is reduced by 20 units on
7/15, I need to know that for 14 days this location held 100 units.
This quantity will be used to generate a cost calculation.  This is
tough (impossible?) to calculate for a report on the fly.  So I am
assuming an entry needs to be in some table.

I am pretty sure that my data tables are not setup correctly; I have a
Parts, Ticket and Inventory Transfer table.  I did not create an
inventory table as of yet.  I was trying to store all the ticket
transactions in the Inventory Transfer table and then perform query
calculations to get the right balance but that did not work as there
is no starting inventory balance and access hates calculations that
resolve to null.

Any help or links to help would be much appreciated.

Thanks

Gina,

Thanks for the Sunday post.

I am not sure that what I am asking is clear. I can create a simple
inventory system. What I am attempting to do is create a user input
form that captures a transfer of inventory from store 1 to store 2 and
then allows me to see how much store 1 has and then store 2. The MS
template is keyed on product. I need to have a database that is keyed
on Ticket transactions that represent inventory transfer from one
location to another. The database's input form should have one row
that captures Part #, Quantity, Store Location#1, Store location #2.
Then I need to know the new inventory amounts for Store #1 and Store
#2; not necessarily (although still needed) the total amount of
inventory on hand (this is the easier part of the problem).

It would be very similar to a banking ledger system whereby each entry
is 2 entries showing money from one account going to another account.
Ideally, my system, will allow one entry to make multiple 2-sided
transactions from one input form.

Hopefully this reply does not dissuade other posts.

Thanks again.
 
G

Gina Whipp

Joe,

Dissuade?? In this forum??? Nope, just takes a little longer to read...

I misinterpeted your post your looking for a premade template? Sorry, I do
not know of any. I THOUGHT you were looking to build one on your own. In
the famous words of Gilda Radner... Nervermind!!!"

--
Gina Whipp

"I feel I have been denied critical, need to know, information!" - Tremors
II

http://www.regina-whipp.com/index_files/TipList.htm

Joe,

WOW, you have gotten a long way BUT maybe too far. The MOST important part
of the database is the tables, if they are not correct everything else
will
be on shaky ground. Below are some samples of Inventory databases and a
Data Model. You mentioned that you have not created the Inventory table
yet... well, let's get on that as you can't do much without it. So let's
go
back to the beginning and work on those tables. (As a side note, nothing
you mentioned is impossible, we just have a little work to do.)

http://www.databasedev.co.uk/customer_orders_data_model.html

http://office.microsoft.com/en-us/templates/TC010184581033.aspx?Categ...

http://office.microsoft.com/en-us/access/HA011230971033.aspx

Understanding Relational design and Normalization is also KEY. I would
actually prefer you do this first but up to you. The below contains some
links that will help you understand the before mentioned...

Jeff Conrad's resources
page:http://www.accessmvp.com/JConrad/accessjunkie/resources.html

The Access Web resources
page:http://www.mvps.org/access/resources/index.html

A free tutorial written by Crystal (MS Access
MVP):http://allenbrowne.com/casu-22.html

MVP Allen Browne's tutorials:http://allenbrowne.com/links.html#Tutorials

In closing, after reviewing the above post your tables and their fields
and
me or one of the other volunteers will be happy to
amend/change/edit/leave-as-is your design.

--
Gina Whipp

"I feel I have been denied critical, need to know, information!" - Tremors
II

http://www.regina-whipp.com/index_files/TipList.htm


I am attempting to create an inventory tracking database and having
some problems with creating the structure for it. There are 2 primary
issues that I am unsure how to resolve and wondering if anyone could
provide some input.

First, has to do with how to record an entry. I need to provide the
background of the form design to properly frame the question. The
database is meant to track as much as 500 inventory parts as they are
transferred from one job location to another job location. Each time
inventory is added or moved a ticket is created outlining the location
the inventory came from and where it went to and in what quantity.
Each ticket can contain multiple part transfers. New inventory is
also added via a ticket and always comes from one of 2 locations a
yard where it is stored or a lease company.

The input form for the Ticket entry has a main form and sub form. The
main form allows a user to record a ticket # (auto #) and date that
tracks the overall ticket transaction. The sub form provides a place
to select a part# to be transferred, quantity of transfer, "From job
#” and "To job #”. This entry needs to serve as the basis for 2
entries; what job # had a “Transfer From” (reduction in inventory) and
the other as what job number had “Transfer To” (increase in inventory)
and record the date.

This is where I am getting stuck:
- There are 500 part numbers. For every new job I would have to
update my inventory table to have 500 records matching the 1 new job #
with the 500 part #’s and the balance of each part would have to be
set to “0”. I am not sure; if this is a great way to configure my
table records as over time there will be too many records in this one
table, and if this is the right table structure how do I create a new
recordset for each new job.

- Inventory balances need to be increased and reduced via 1
transaction. Specifically, the ticket # form allows users one line on
the sub form per transfer where they enter the part # and the To Job#"
and "From job #". For example; Ticket # 1 has a transfer of 100 units
of part # abc, going to job 123, from job 456. This entry should
record 2 transactions in the inventory table; an increase in inventory
for job 123 and a decrease in inventory for job 456 for the same part
#.

- Of lesser importance and more difficulty; I also need a report that
can tell me whenever a Jobs inventory changes how many days was the
balance of inventory held before the change occurred? For example if
starting inventory on 7/1 is 100 units and is reduced by 20 units on
7/15, I need to know that for 14 days this location held 100 units.
This quantity will be used to generate a cost calculation. This is
tough (impossible?) to calculate for a report on the fly. So I am
assuming an entry needs to be in some table.

I am pretty sure that my data tables are not setup correctly; I have a
Parts, Ticket and Inventory Transfer table. I did not create an
inventory table as of yet. I was trying to store all the ticket
transactions in the Inventory Transfer table and then perform query
calculations to get the right balance but that did not work as there
is no starting inventory balance and access hates calculations that
resolve to null.

Any help or links to help would be much appreciated.

Thanks

Gina,

Thanks for the Sunday post.

I am not sure that what I am asking is clear. I can create a simple
inventory system. What I am attempting to do is create a user input
form that captures a transfer of inventory from store 1 to store 2 and
then allows me to see how much store 1 has and then store 2. The MS
template is keyed on product. I need to have a database that is keyed
on Ticket transactions that represent inventory transfer from one
location to another. The database's input form should have one row
that captures Part #, Quantity, Store Location#1, Store location #2.
Then I need to know the new inventory amounts for Store #1 and Store
#2; not necessarily (although still needed) the total amount of
inventory on hand (this is the easier part of the problem).

It would be very similar to a banking ledger system whereby each entry
is 2 entries showing money from one account going to another account.
Ideally, my system, will allow one entry to make multiple 2-sided
transactions from one input form.

Hopefully this reply does not dissuade other posts.

Thanks again.
 
F

Fred

Joe,

My day job is running companies and I can tell you that what you are
tackling is much bigger than you think it is. And 3/4 of the job will
outside of the database, which is making and enforcing operational procedures
to make it work.

If you will permit one lighthearted comment on your "just like a banking
ledger system", it's just like a bankng ledger system except:

-Multiply by 500 because your have 500 different items vs just one item ($)
in a banking ledger system.

-Then multiply by 10 because you have lots of undisciplined, non expert
people making entries, vs. just one or 2 disciplined accountants in the
ledger system.

-Finally multiply by 10 because everybody has freedom to make the
transactions, (e.g. just moving a part between locations) and they are not
automatically recorded, and so you have to do a lot of work (or a lot of
chasing for data after the fact) to get the transaction recorded.

So, it's as simple as setting up a double entry accounting ledger except
multiply by 50,000.

- - - -

So your answer will be a book rather than a post.

Here's the first page of the first chapter

Review your definition/decision of exactly what you want to do. Including
any possible simplifications / compromises. Then thoroughly /rigorously
write it down. If it stayed the same as your original post:

These tables (plus other ancilary ones) will create a foundation for doing
all of that stuff:

(shorten my long explanatory field names)

- An "ItemMaster" table which lists your 500 items PK = ItemNumber
- A "SourceDestination" table listing all of your locations plus other
"places" (e.g. purchases) that inventory could come from or go to.
- A table of instances of (total) inventory at a location. PK =
LocationInventory_ID.
- A table of instances of inventory transactions. Transfers, sales,
purchases, consumption, creation, destruction, adjustments (to match
physical counting) etc. On way would be to use your double entry GL
concept that you described. In that case, a transfer would be a single
record, with a "from and to" and you would have to set up codes for the above
described actions where the "from" or "to" is not a location. PK =
Transaction_ID. Or you could enter the individual "halves" of the
transaction each as a record. If so, make an Entry_ID field as the PK, and
still keep Transaction_ID, but not as the PK, as Transaction_ID would be
repeated for the pair of entries to tie them together.

Well, there's the first page of the "book". Good luck!

Fred
 
F

Fred

Correction, that one table should have read:

- A table of instances of (total) inventory of a particular ItemNumber at a
location. PK = LocationInventory_ID.
 
J

Joe

Correction, that one table should have read:

- A table of instances of (total)inventoryof a particular ItemNumber at a
location. PK = LocationInventory_ID.

Fred,

That reply made me laugh, which is a good thing given that your
assessment is the same as mine.

I like your idea of trying to simplify the business process to make it
easier to work on. Perhaps I will have them structure the database by
job rather than by Ticket #, that way it is easy to track current
inventory.

Thanks again for a humorous post!!
 
F

Fred

Joe,

Happy to have the opportunity to lighten the day a little.

Of course lots of companies and facilities keep real time transaction based
inventory. Generally they have processes which automatically capture the
transaction information form the processes that affect inventory. It's a
little simpler if you are not in the manufacturing business, because the act
of making something usually consumes some items and creates others.

The other side is the Access application development side. In all of the
forums etc. I've not even heard talk of a template / example / solution which
emulates what a typical enterprise software does (essentially a current
inventory record which is modified by transaction records). I think that
the closest I've seen is one from Allen Browne which, as I remember, has a
table of all transactions (including posting initializations and adjustments
as transactions) and then which derives inventory by totaling all of them
(for each part number) e.g. in a report.

Either way I would suggest starting with a realistic assement of what is
possible on your operations side (I.E. what can you get people to reliably
record) and also decide what inventory related functionality your business
absolutely needs to obtain.


Hope that helps a little.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top