Hi TinyTom. This is a very helpful expansion of your previous post - many thanks.
OK, so you took over a single-table mess that was I would bet originally developed in Excel (which lends itself to such single-table non-database solutions) then imported into Access. However, as the quote below tells me, if you have 50 checkboxes for software you have yourself not created a relational table for software - you appear to have specified the possible software products column by column as yes/no columns in your table (hence you are referring in post 1 to things like Adobe Elements and so on). This means your table is not yet in first normal form (no repeated groups), never mind normalised to third normal (3NF) or Boyce-Codd Normal Form (BCNF).
Quote:
Originally Posted by TinyTom
From there, I did my best to transfer the software into a new Software table that I related back to the master table with the serial number. In this table I have made around 50 possible checkboxes for software.
3NF is essential if you are to use the database's relationships to assist you. The following howto article introduces
database normalisation and table structures.
As an aside, relational designs are typically quite narrow in terms of number of columns (table attributes), but deeper in terms of number of rows (individual records). Substituting records as table attributes will hamper you to the point of making your project impossible, and hide the other relationships which exist between the tables.
In my opinion, the likely attributes of your software table would include Product ID (Primary Key (PK), potentially alpha), Supplier Code (Foreign Key (FK), alpha), Product name (alpha), licence renewal date (date/time), Date of Purchase (date time), number of licences (integer) and so on.
This relates 1-m to an Installation table which would list the PCs on which that software was installed: Product ID (FK, from Software), PC Serial No (FK, alpha) (Both FKs forming compound PK of the Installation table), Date Installed (date/time), Date Removed (date/time).
There is also an m-1 relationship from Software to a simple supplier table: Supplier Code (PK, alpha), Supplier Name (alpha)
Spending just a few minutes on this problem identifies three tables apart from your PC table: Supplier, Software, Installation, and PC.
It is usually possible to convert data from an apparently unstructured single table into relational data. I do this using Excel as an intermediate means of working with tabular data and for its ability to replicate values down columns quickly.
If you export the data from Access to Excel you can use Autofilter to find groups of specific values (such as Adobe Elements). You first add a new column to the table called Software ID that eventually will form part of the Installation key of your new installation table. This is done simply by assigning to all rows which contain Photoshop Elements the new Elements software code from the (properly defined) software table. You just need to filter for the word Elements, type in the new product code once, and copy it down all other occurrences.
You go on adding new columns as necessary to reflect parts of the new design. This leads to a big non-relational table in which you have identified new columns which, when extracted, will form the many-side elements of the new 1-m tables you have identified. Then you separate these into individual worksheets which will form the Installation, Supplier and other tables, copy these to Access, and begin the work of defining the relationships between the tables properly.
I am not having you on when I say that this will pay dividends - I can see no prospect of doing anything useful with Access unless you resolve the fundamental design problems that are apparent.
As colleagues on this forum would no doubt confirm, you really, really cannot work with non-relational data as you are doing - you will not find you can get meaningful results from a relational database unless you have relational data to work on.
-Stewart