Dynamic form field configuration in mvc - sql-server

I have multiple employee groups in my project. Based on the selection of different employee group,submission form fields will differ in the view. If the fields are static then it is easy to do the CRUD operations. I need to create the fields dynamic in nature. I must be able to configure the form fields in SQL server table.For employee Group 1, 5 fields, for Group 2, 6 fields etc. If i want to add new field to any of the group in future also it should work. How can i achieve this?
Thanks

Have you considered using many-to-many relationship between tables Employees and Fields. Something like this:
You'll have a table that holds the list of all possible fields (first name, last name and etc). Then to connect the Employees table and the Fields table with many-to-many relationship you'll need some kind of table (EmployeesFields). Table EmployeesFields holds the value for the each field that employee has.
For example:
EMPLOYEES
+----+------------------+
| Id | CreatedAt |
+----+------------------+
| 1 | 02.08.2017 11:21 |
+----+------------------+
FIELDS
+----+-----------+------------------+
| Id | Name | CreatedAt |
+----+-----------+------------------+
| 1 | FirstName | 02.08.2017 11:24 |
| 2 | LastName | 02.08.2017 11:26 |
+----+-----------+------------------+
EMPLOYEESFIELDS
+------------+---------+-------+------------------+
| EmployeeId | FieldId | Value | CreatedAt |
+------------+---------+-------+------------------+
| 1 | 1 | John | 02.08.2017 11:34 |
| 1 | 2 | Doe | 02.08.2017 11:39 |
+------------+---------+-------+------------------+
I think this is the most simple solution. It just shows the basic idea. Modify it to fit your needs.

Related

Using tables to categorise resources with

I'm trying to design a database that allows for filtering according to if a specific resource fills certain categories. I've gotten to the point where I can input data that seems to be how it should be filled out but I'm not sure how I should pull it out again.
The main resource table looks like this:
Table1 - resources
| resourceID | AutoNum |
| title | short text |
| author | short text |
| publish date | date |
| type | short text |
Table2 - Department Categories
| ID | AutoNum |
| 1 | Yes/No |
| 2 | Yes/No |
| fID| Number |
Table3 - Categories
| ID | AutoNum |
| cat | Yes/No |
| dog | Yes/No |
| bird | Yes/No |
| fID | Number |
I have built a form where you can fill in items to the resource ID, and at the same time check off the Yes/No boxes in tables 2 & 3.
I'm trying to use the primary key ID from table 1 and copy it into the table 2 & 3 with referential integrity to cascade deletes, updates. Which I think is the right way to do this.
Currently, I've learnt that I can implement a search function for the columns in table 1, this seems to work fine. However I am stuck with applying the relevant columns in table 2 and 3 as filters.
apply search>
[X] - Cats
Should only return records from table 1 where in table 3 the relevant column has a tick in the Yes/No box.
I hope I have explained this properly, very new to Access and databases so if you need clarity, don't mind offering.

Trigger whenever a value in a view has changed

I have a SQL view, which resolves some foreign key dependencies. The View looks like this:
id | title | plantName | customerName | lastUpdated
Where plantName and customerName are 2 resolved values of a foreign key.
There are 3 Tables in total:
Table 1
id | name | surname | idTable2 | idTable3 | lastUpdated
Table 2
id | plantName
Table 3
id | firstName | lastName
What i want to archieve is a trigger which updates the lastUpdated column in the View everytime a row shows another value.
The Problem here is, that lastUpdated inside the View should also be updated when a foreign key changes it's value.
Example view Output:
1 | hotel | mock | meier | 2020-02-26 10:03:03.817
2 | hotel | raddison | mueller | 2020-02-26 10:04:03.000
Let's say I'll update Table 2 and update "raddison" to "mercure hotel". The View will look like this afterwards:
1 | hotel | mock | meier | 2020-02-26 10:03:03.817
2 | hotel | mercure hotel | mueller | 2020-02-26 10:04:03.000
I now want that the lastUpdated Column in the View of row 2 representing the datetime where the foreign key has changed.
Desired output:
1 | hotel | mock | meier | 2020-02-26 10:03:03.817
2 | hotel | mercure hotel | mueller | 2020-02-26 13:44:03.000
Is there any way to archieve this?
Thanks in Advance
In the comments, you confirmed that you want the following:
you want to update the "last_updated" column in table 1 whenever a
value changes in tables 1, 2 or 3, and include that "last_updated"
value in your view
This question shows you how to create a trigger to update a column when a record is modified.
You will need to create that trigger on tables 1, 2 and 3, and the update statement should update table 1's lastUpdated column.
Alternatively, you could create a lastUpdated on all 3 tables, and select the highest value in your view.

How can I use a combo box that displays data from one table and add it to another using MS Access?

I am developing a database system. It is for a canoe club. The part of the database I am stuck on is assigning a member of the canoe club to a canoe qualification course when/if they undertake one.
Here is a stripped down view of my tables:
members
-------------------------------------
| memberID | first_name | last_name |
-------------------------------------
| 1 | John | Jacobs |
| 2 | Ellie | Graham |
| 3 | Paul | Abbot |
-------------------------------------
course_info
---------------------------------------
| courseID | course_name | Instructor |
---------------------------------------
| 1 | BCU Level 1 | Ryan Adams |
| 2 | BCU Level 2 | Ryan Adams |
| 3 | BCU Level 3 | Ryan Adams |
| 4 | BCU Level 4 | Ryan Adams |
| 5 | BCU Level 5 | Ryan Adams |
---------------------------------------
course_progress
-------------------------------
| memberID | courseID | grade |
-------------------------------
| 1 | 2 | 4 |
| 1 | 4 | 5 |
| 2 | 1 | 3 |
| 3 | 5 | 2 |
-------------------------------
So as you can see,course_progress displays the courses a member has undertaken as well as their grade by using memberID and courseID.
Firstly is that the correct (or a correct) way of doing this? If so, here is my problem...
Using Access I want to create a form that allows me to assign a member to a course. So I have a combo box that lists all of the members and another that lists all of the courses. As well as a box for inputting the grade.
When I fill in this form it only adds the grade to the course_progress table. I feel as though this is the case because I am using fields from different tables in the combo box. The other solution that while works is less than ideal is to have memberID and courseID in the combo box. I believe that works as I am using fields from the table I am trying to add to. However it is not user friendly as ID's are meaningless to a user.
So I want to be able to select the member name and course name from the combo box and add them to the course_progress table as well as the grade.
Any guidance would be great.
Thanks.
Firstly, is your form bound to the course_progress table., and are the two combo boxes bound to the memberID and courseID fields of the progress table.
Secondly, what have you used as the query for each combo box. You should be querying the members table. Assuming you do, you will have 3 columns, the first being the member ID and that should be the "bound column" in the combo box properties. in the format section you will need to give column widths, and I would give the memberID column a width of 0 so it doesn't show. But you should say you want to display 3 columns (so you get firstname and last name in the combo box.
Do the same for the course combo box.

Using category attribute of a cfindex tag

I'm trying to index a database table using a <cfindex>. I also want to categorize the index based on the values of a column of the same table. No documentation I have come across clearly mention what the "category" attribute takes. Is it a column name or just any desire value and if the later then how do the index determine which record belongs to what category?
Thanks a lot in Advance.
| ID | CATEGORY | NAME | DETAILS | DATE |
| 1 | people | John | John details | 01/23/1980 |
| 2 | animal | Dog | dogs details | 02/22/1990 |
| 3 | people | Ben | Ben's details | 10/10/2006 |
| 4 | animal | panda | panda's details | 07/17/2009 |
The docs didn't make it clear, but if you are indexing a database and there is a column that you want to use for the category, just pass the name of the db column to the category attribute.

databases design

for example i have table users, which have 3 fields:
id - login - password
---------------------
1 | john | *****
2 | jack | *****
3 | jane | *****
now i want that each user could have his own settings.
So, do i need to create three different tables, like
user_N_settings:
id | key | value
-------------------------
1 | save_data | True
or i should create one big table for all users instead?
users_settings:
id | key | value | user_id
---------------------------------------------
1 | save_data | True | 2
2 | some_opt | False | 3
One table for all users. A table per user would be very wrong.
One table. If all the setting values are of the same type then it may make sense to create one row per setting. If the attributes are all very different then create one column per setting.

Resources