Page 1 of 2 12 LastLast
Results 1 to 15 of 20
  1. #1
    hinchi1 is offline Competent Performer
    Windows 10 Access 2013 32bit
    Join Date
    Sep 2017
    Posts
    181

    Training Matrix Database

    Hello



    I've not been on here for a while but I am looking to create a database for work colleagues to show what training courses they have completed. I'm ok creating the tables and some level of queries (I will probably be coming back to the forum for further support on this topic). I was just looking for you thoughts on a few ways of inputting data to a form or forms, specifically the training courses attended:

    Tables needed(for now):

    tblTechnicians
    tblTrainingCourseList
    tblTSLevel
    tblBuilding
    tblRooms

    I know how to do cascading comboboxes, which is one approach i was thinking to do, but my thought is that anyone person will have done several courses. So, if I was going to enter a New Record of an individual i would select their name from a drop down box. I would do this for TSLevel, Building and Rooms, but for the training course list i was thinking that clicking a button for the training list, a listbox would display with all available training courses that we do. From the list I can then select the relevant courses for the technician. If, by mistake I select an incorrect course can I just deselect from the list and then press ok to commit the records. It has been a while since I did any database work so I am probably asking daft questions here. With regards to the tblTechnicians there will obviously need to be a field to store completed courses, what format would that need to be to store multiple lines of data. I know there is a form where you can select multiple choices from a left textbox and then move across to the right textbox but I cannot remember what you call that. Thanks for your time and patience.

  2. #2
    Join Date
    May 2018
    Location
    Living in Scotland UK
    Posts
    1,566
    Hi

    You need a basic MainForm / Subform Setup

    Main Form to select the Person

    Subform allows you to enter 1 or more courses to attend
    You can PM me if you need further help.
    Good Reading https://docs.microsoft.com/en-gb/off...on-description

  3. #3
    CJ_London is offline VIP
    Windows 10 Access 2010 32bit
    Join Date
    Mar 2015
    Posts
    11,430
    3 tables

    employees
    courses
    employee courses done - to contain employeeFK, courseFK, date completed, perhaps more

    main form based on employees table
    subform based on employee courses done table, using a combo control to select the courses

  4. #4
    hinchi1 is offline Competent Performer
    Windows 10 Access 2013 32bit
    Join Date
    Sep 2017
    Posts
    181
    What would be a good way to select additional courses my colleagues may do from a list, without showing the ones they have already done in the list? How would multiple courses be stored in a table against an individual? Thanks for the tips. I just need to refresh my memory on subforms. How do I do a table on courses done?

  5. #5
    Join Date
    May 2018
    Location
    Living in Scotland UK
    Posts
    1,566
    Hi
    Are you able to upload a zipped copy of your database without any confidential data?
    You can PM me if you need further help.
    Good Reading https://docs.microsoft.com/en-gb/off...on-description

  6. #6
    hinchi1 is offline Competent Performer
    Windows 10 Access 2013 32bit
    Join Date
    Sep 2017
    Posts
    181
    Hi
    I've not really started it yet. Just creating the tables and messing around with form layouts. I just wanted some ideas of the best way to approach the task. My last project I felt it could have been better, more streamlined if I had asked for support and advice much sooner in the design process. Sorry to be a little vague.

  7. #7
    CJ_London is offline VIP
    Windows 10 Access 2010 32bit
    Join Date
    Mar 2015
    Posts
    11,430
    What would be a good way to select additional courses my colleagues may do from a list, without showing the ones they have already done in the list?
    modify the combo rowsource to exclude them

  8. #8
    hinchi1 is offline Competent Performer
    Windows 10 Access 2013 32bit
    Join Date
    Sep 2017
    Posts
    181
    [QUOTE=CJ_London;516581]modify the combo rowsource to exclude them[/QUOTES

    Thanks for this, not sure how to do that to be honest. It's early days so I will look in these and other forums for options. Rather than use combo for selecting courses I may use the listbox option.

  9. #9
    Join Date
    Apr 2017
    Posts
    1,681
    On Fly! Probably you need at least some of tables below (your further design depends on which ones you'll have)
    tblEmployees: EmployeeID, ForeName, LastName, EmployedAt, LeavedAt;
    tblAssignments: AssignmentID, Assignment (you need this table and next one, when different assignments need different sets of courses);
    tblEmployeeAssignments: EmployeeAssignmentID, EmployeeID, AssignmentID, AssignmentAt;
    tblCourses: CourseID, Course;
    tblAssignmentCourses: AssignmentCourseID, AssignmentID (you need this table, when different assignments need different sets of courses);
    tblEmployeeCourses: EmployeeCourseID, EmployeeID, CourseID, CourseStartAt, CourseEndAt, ...;
    ...

    You'll have a single form to display employee info (e.g. fEmployee), with query from table tblEmployees as source. The query returns info for employees with date field LeavedAt empty;
    You'll have a continuous form to display employee's courses (e.g. fEmployeeCourses), with query from tblEmployeeCourses as source;
    You create a subform (e.g. sfEmployeeCourses) in fEmployee, with fEmployeeCourses as source, using EmployeeID to link the forms (LinkChieldFields and LinkMasterFields properties in subform);
    In form EmployeeCourses, in datarow you'll have a combo box to select the course (e.g. cbbCourse). By default, its rowsource may be simply a query, which returns all courses from tblCourses. You create an Current event for fEmployeeCourses, which updates the RowSource query of cbbCourse in this form, updating the query to limit the returned list with ones not having CourseID present in tblEmployeeCourses for this employee <...FROM tblCourses c WHERE CourseID NOT IN (SELECT CourseID FROM tblEmployeeCourses WHERE EmployeeID = [txtEmployeeID] AND CourseID <> c.Course)>. In case the available courses depend on employees assignment too, you also have add to rowsource query joins to tblEmployeeasignments and to tblAssignmentCourses, and use them to add a WHERE clause to limit the available courses to ones allowed for employees assignment.

  10. #10
    CJ_London is offline VIP
    Windows 10 Access 2010 32bit
    Join Date
    Mar 2015
    Posts
    11,430
    Thanks for this, not sure how to do that to be honest.
    I would adapt the 'cascading combo's' technique which you say you are familiar with - list all courses when the control does not have the focus, list all courses not taken by the employee when the control does have the focus

  11. #11
    hinchi1 is offline Competent Performer
    Windows 10 Access 2013 32bit
    Join Date
    Sep 2017
    Posts
    181
    Thanks for this, really useful

  12. #12
    hinchi1 is offline Competent Performer
    Windows 10 Access 2013 32bit
    Join Date
    Sep 2017
    Posts
    181
    Thanks for this. Not sure how to do the rowsource qry joins to the tbls but i will have a look, but i may be back to you on this one. Thanks again.

  13. #13
    hinchi1 is offline Competent Performer
    Windows 10 Access 2013 32bit
    Join Date
    Sep 2017
    Posts
    181
    Quote Originally Posted by ArviLaanemets View Post
    On Fly! Probably you need at least some of tables below (your further design depends on which ones you'll have)
    tblEmployees: EmployeeID, ForeName, LastName, EmployedAt, LeavedAt;
    tblAssignments: AssignmentID, Assignment (you need this table and next one, when different assignments need different sets of courses);
    tblEmployeeAssignments: EmployeeAssignmentID, EmployeeID, AssignmentID, AssignmentAt;
    tblCourses: CourseID, Course;
    tblAssignmentCourses: AssignmentCourseID, AssignmentID (you need this table, when different assignments need different sets of courses);
    tblEmployeeCourses: EmployeeCourseID, EmployeeID, CourseID, CourseStartAt, CourseEndAt, ...;
    ...

    You'll have a single form to display employee info (e.g. fEmployee), with query from table tblEmployees as source. The query returns info for employees with date field LeavedAt empty;
    You'll have a continuous form to display employee's courses (e.g. fEmployeeCourses), with query from tblEmployeeCourses as source;
    You create a subform (e.g. sfEmployeeCourses) in fEmployee, with fEmployeeCourses as source, using EmployeeID to link the forms (LinkChieldFields and LinkMasterFields properties in subform);
    In form EmployeeCourses, in datarow you'll have a combo box to select the course (e.g. cbbCourse). By default, its rowsource may be simply a query, which returns all courses from tblCourses. You create an Current event for fEmployeeCourses, which updates the RowSource query of cbbCourse in this form, updating the query to limit the returned list with ones not having CourseID present in tblEmployeeCourses for this employee <...FROM tblCourses c WHERE CourseID NOT IN (SELECT CourseID FROM tblEmployeeCourses WHERE EmployeeID = [txtEmployeeID] AND CourseID <> c.Course)>. In case the available courses depend on employees assignment too, you also have add to rowsource query joins to tblEmployeeasignments and to tblAssignmentCourses, and use them to add a WHERE clause to limit the available courses to ones allowed for employees assignment.
    Just read through this again and thanks for the thorough information. The database I am planning is just show training courses that people have attended, such as 1st aid or manual handling. There will be no assignments involved, so would I start with the following tables:
    tblEmployees
    tblCourses
    tblEmployeeCourses

    Obviously, I will want to be able to add new employee names and courses, and add courses to existing employees, but I am sure I can figure this bit out.
    Thanks again
    Last edited by hinchi1; 09-20-2023 at 01:06 PM. Reason: Missed something

  14. #14
    davegri's Avatar
    davegri is online now Excess Access
    Windows 11 Access 2019
    Join Date
    May 2012
    Location
    Denver
    Posts
    3,413
    Sounds basically like a many-to-many table setup.
    This link shows how the tables and forms can interact in that situation.
    Many-To-Many, two ways to update Junction table, includes Not In List handling (accessforums.net)

  15. #15
    hinchi1 is offline Competent Performer
    Windows 10 Access 2013 32bit
    Join Date
    Sep 2017
    Posts
    181
    Quote Originally Posted by davegri View Post
    Sounds basically like a many-to-many table setup.
    This link shows how the tables and forms can interact in that situation.
    Many-To-Many, two ways to update Junction table, includes Not In List handling (accessforums.net)
    Hi Davegri
    This is a great DB for what i need. Am I ok to change things around on this or is this just for viewing? Thought it best to ask first.

Page 1 of 2 12 LastLast
Please reply to this thread with any new information or opinions.

Similar Threads

  1. Replies: 4
    Last Post: 05-04-2017, 07:15 AM
  2. Training Database Bug - Please help!
    By Khermann in forum Misc
    Replies: 3
    Last Post: 06-23-2016, 10:32 AM
  3. Replies: 1
    Last Post: 06-18-2014, 12:19 AM
  4. Need help designing a simple Skills/Training Matrix
    By RoyLittle0 in forum Database Design
    Replies: 5
    Last Post: 02-06-2013, 05:19 PM
  5. Training Database
    By BISCUITPUMPER in forum Access
    Replies: 11
    Last Post: 08-20-2011, 10:15 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums