Advertisement

02.21.2008 at 10:08AM PST, ID: 23182014
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

Database Structure for Workflow Management System

Tags: Microsoft, Access, '97, Database Structure
I am building a database that will serve as a workflow management system for 50-75 simultaneous users (150-250 unique users altogether).  In short, my question is: Is there a better way to organize and display the data that I have in a way that multiple users can grab their work items from certain queues, and route/complete them as necessary?  I apologize for length, the rest is a description of what is contained in the database:

The entire database front-end is built around one form, very similar to what I have attached.  The 'Action Queues' section (subform: frmWorkQueueAction) is a continuous form that lists outstanding queues for a specific user based on their production team's ID, that is linked to a table housing queues for each team.  This pulls all "queue" records from that table with a status of "Action".  The 'Follow-Up Queues' is the same as Action queues, with a status of "Follow-up".  This allows me to display two different types of queues; queues that should have action taken on them now, and queues that should have action taken on them if not completed after xx Days (completed by other individuals).

Work Items: [Queue Name] is the header for the "frm_WorkQueue" subform.  That is a continuous form that lists all data from the work items table (tbl_pended_master), and is filtered when "Queues" from the Action/Follow-up section to the left are clicked (code sample below).  This section shows summarized information for each item.  If a Work Item is double-clicked, a popup form comes up with that item's detailed information.  This is where the employee would type comments on the item, and route/complete the file via a combo box.

To give you a quick idea of my table setup, here are the tables used:
tblEmployees; Major Fields Used: EmployeeID, EmployeeName, TeamID
tbl_pended_master: Major Fields Used: UniqueID, DateReceived, EmployeeID, DestinationCode, FileStatus, DateCompleted
**DestinationCode is the system identifier for the "queue" used.  Each code is a different item type, and should have it's own queue.
tblQueues: QueueID, TeamID, DestinationCode, QueueName, QueueType (Action or Follow-Up), ItemStatus, ItemID, FollowUpDays

As stated before, tbl_pended_master is the main table in the database.  This houses most of the information for these files.  Items are identified by DestinationCode and EmployeeID (What they are and who they belong to).  tblQueues runs the two subforms on the left of the image.  TeamID links to the tblEmployee table.  This table allows me to bounce the employee's TeamID up against it to determine which queues they should be able to see.  By clicking these queues, a filter (shown below) is placed on the main subform to show that queue's data.


I'm sure that there's a better way to do this, but I'm not sure where to start.  Anyone have any suggestions?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
'When a Queue is clicked...
Private Sub TotalFiles_Click()
Dim rs As Recordset
Dim TotalItems As Double
Dim strCriteria As String
Dim strStatus As String
strStatus = ""
If Not IsNull(Me.q_Item_Status.Value) Then strStatus = Me.q_Item_Status.Value
 
strCriteria = "[pddt_destination_cd] = '" & Me.DestinationCode & "'"
If strStatus <> "" Then strCriteria = strCriteria & " AND [pddt_status] = '" & Me.q_Item_Status.Value & "'"
 
Forms![frmWorkflowMain]![fsubWorkItems].Form.FilterOn = True
Forms!frmWorkflowMain!fsubWorkItems.Form.Filter = strCriteria
                                                  
Set rs = Forms![frmWorkflowMain]![fsubWorkItems].Form.RecordsetClone
If Not rs.EOF Then
rs.MoveLast
TotalItems = rs.RecordCount
rs.MoveFirst
End If
rs.Close
Set rs = Nothing
 
Forms!frmWorkflowMain!lblWorkItems.Caption = " Work Items:  Destination " & Forms![frmWorkflowMain]![fsubWorkQueues].Form![DestinationCode] & ", " & TotalItems & " total items"
End Sub
Attachments:
 
Queue Examples
Queue Examples
 
Start your free trial to view this solution
Question Stats
Zone: Microsoft
Question Asked By: SeanStrickland
Solution Provided By: jefftwilley
Participating Experts: 1
Solution Grade: A
Views: 4
Translate:
Loading Advertisement...
02.24.2008 at 05:50AM PST, ID: 20969843

Rank: Wizard

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.24.2008 at 06:25AM PST, ID: 20969951

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.24.2008 at 06:55AM PST, ID: 20970054

Rank: Wizard

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.24.2008 at 10:29AM PST, ID: 20970744

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
Microsoft
  • Internet Protocols
  • Applications
  • Development
  • OS
  • Hardware
  • Windows Security
Apple
  • Operating Systems
  • Hardware
  • Programming
  • Networking
  • Software
Internet
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Spy / Ad Blockers
  • Web Browsers
  • New Net Users
  • Web Development
  • Chat / IM
  • Anti Spam
  • Web Servers
  • Anti-Virus
  • Email Clients
Gamers
  • Tips
  • Online / MMORPG
  • Puzzle
  • Emulators
  • Action / Adventure
  • Role Playing
  • Consoles
  • Game Programming
  • Strategy
  • Sports
  • Misc
  • Computer Games
Digital Living
  • Hardware
  • New Net Users
  • New Users
  • Software
  • Digital Music
  • Gaming World
  • Home Security
  • Apple
  • Networking Hardware
Virus & Spyware
  • Vulnerabilities
  • IDS
  • Encryption
  • Anti-Virus
  • Operating Systems Security
  • Software Firewalls
  • WebApplications
  • Cell Phones
  • Operating Systems
  • Internet
  • Hardware Firewalls
Hardware
  • Handhelds / PDAs
  • Displays / Monitors
  • Components
  • Networking Hardware
  • Peripherals
  • Laptops/Notebooks
  • Storage
  • Servers
  • Desktops
  • New Users
  • Misc
  • Apple
Software
  • System Utilities
  • Industry Specific
  • Network Management
  • Photos / Graphics
  • Page Layout
  • VMWare
  • Misc
  • Web Development
  • OS
  • CYGWIN
  • Voice Recognition
  • Message Queue
  • Quality Assurance
  • Security
  • Firewalls
  • MultiMedia Applications
  • Development
  • Database
  • Office / Productivity
  • Business Management
  • OS/2 Apps
  • Server Software
  • Internet / Email
ITPro
  • OS
  • Storage
  • Encryption
  • Operating Systems Security
  • Apple Hardware
  • Laptops & Notebooks
  • Servers
  • Networking Hardware
  • Peripherals
  • Devices
  • Displays / Monitors
  • WebTrends / Stats
  • Search Engines
  • Firewalls
  • WebApplications
  • IDS
  • Vulnerabilities
  • Email Clients
  • File Sharing
  • Spy / Ad Blockers
  • Web Browsers
  • Web Servers
  • Networking
  • Anti-Virus
  • Chat / IM
  • Anti Spam
Developer
  • Web Servers
  • Web Browsers
  • Game Programming
  • Dev Tools
  • Industry Specific
  • Office / Productivity
  • Database
  • CYGWIN
  • Web Development
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Programming
  • Content Management
  • Application Servers
  • Protocols
Storage
  • Removable Backup Media
  • Storage Technology
  • Servers
  • Grid
  • Remote Access
  • Backup / Restore
  • Misc
  • Hard Drives
OS
  • Miscellaneous
  • Security
  • Development
  • Linux
  • VMWare
  • MainFrame OS
  • Unix
  • Apple
  • OS / 2
  • AS / 400
  • BeOS
  • Microsoft
  • VMS / OpenVMS
Database
  • Oracle
  • Miscellaneous
  • MySQL
  • Software
  • Sybase
  • Contact Management
  • PostgreSQL
  • Data Manipulation
  • Clarion
  • InterSystems Cache
  • Siebel
  • MUMPS
  • OLAP
  • SQLBase
  • SAS
  • GIS & GPS
  • 4GL
  • Berkeley DB
  • DB2
  • Informix
  • Interbase / Firebird
  • FoxPro
  • Reporting
  • LDAP
  • Filemaker Pro
  • MS SQL Server
  • dBase
  • MS Access
Security
  • Misc
  • Web Browsers
  • Software Firewalls
  • Operating Systems Security
  • File Sharing
  • Spy / Ad Blockers
  • Vulnerabilities
  • WebApplications
  • IDS
  • Anti-Virus
  • Encryption
  • Anti Spam
  • Email Clients
  • VPN
  • Chat / IM
Programming
  • Editors IDEs
  • Installation
  • Handhelds / PDAs
  • Multimedia Programming
  • System / Kernel
  • Algorithms
  • Game
  • Signal Processing
  • Project Management
  • Open Source
  • Database
  • Misc
  • Languages
  • Processor Platforms
  • Theory
Web Development
  • Scripting
  • Blogs
  • Web Servers
  • Software
  • Search Engines
  • Web Graphics
  • Images
  • Internet Marketing
  • Images and Photos
  • Components
  • Document Imaging
  • Web Languages/Standards
  • Illustration
  • WebApplications
  • Fonts
  • WebTrends / Stats
  • Authoring
  • Digital Camera Software
  • Miscellaneous
Networking
  • Protocols
  • Apple Networking
  • Network Management
  • Message Queue
  • Application Servers
  • Content Management
  • File Servers
  • Email Servers
  • Misc
  • Java Editors & IDEs
  • Wireless
  • Networking Hardware
  • Backup / Restore
  • System Utilities
  • ISPs & Hosting
  • Web Servers
  • Storage Technology
  • Removable Backup Media
  • Servers
  • Broadband
  • Grid
  • OS / 2
  • Novell Netware
  • Unix Networking
  • Windows Networking
  • Security
  • Telecommunications
  • Operating Systems
  • Linux Networking
Other
  • Community Advisor
  • Lounge
  • Community Support
  • New Net Users
  • Philosophy / Religion
  • Math / Science
  • Miscellaneous
  • URLs
  • Expert Lounge
  • Politics
  • Puzzles / Riddles
Community Support
  • Suggestions
  • New to EE
  • New Topics
  • Community Advisor
  • CleanUp
  • Announcements
  • General
  • Feedback
  • Input
  • EE Bugs
 
02.24.2008 at 05:50AM PST, ID: 20969843

Rank: Wizard

Greetings,
I've read this over a few times, and I'm not certain how to answer. Seems I'm not alone in that seeing as how no one else has replied up till now. So let's see.

First of all, graduate to a newer version of Access. While A97 was a very robust version, it has limitations and less functionality than its latter counterparts.

That been said, you have not mentioned a few things. Who for example will be introducing work elements into this system? Will he/she use the same interface?

The approach you've taken using recordsets was certainly a smart one. With that many users sharing the same data, there's bound to be issues at one time or another with recordlocking.

Hopefully you already understand that you should split this database into a Front end and Back end. Each user would then get their own copy of the front end with all sharing the back end data.

Although a continuous form provides a nice appearance when presenting data, it may not be your best bet as it leads to issues if you are trying to select multiple records to perform a single action. We don't yet know what those actions are as they weren't really described, however, if you need to perform an action from a command button that may update multiple lines at once, you would have to code that based on the recordset clone, and provide some mechanism for the user to select in this manner.

If the form is a simple as clicking in two places (your outside subforms) to filter records in the detail section, then the design is fine. You might also consider a tree view in this case though so that the user simply has to "drill" down to his elements, and not have to refresh the data each time he selects a new category. You could use the "click" event of your tree view then to populate your detail section. Not unlike a directory browser in that respect and users are familiar with that interface.

You should consider the Update/Append approach to changing data in your backend. I wasn't clear upon reading your setup if that's what you're planning to do anyway, but what I mean is use Update and Insert statements based on the current record to update records in the back end. This will preclude a lot of issues that could occur if you based your form directly on a query or table. You might even consider temp tables for this, as you'll have a lot of users banging against that back end. So each user would have his/her own front end, and the data they are viewing could/would be populated in their front end. Once they change data, use the update/insert method to write to the main table. This also gives you (the administrator) a better opportunity to validate any data being changes.

There's not a lot more I can add at this time, The approach seems simple enough, but the issues you're going to be facing is managing versions and distribution of the application. Using a single front end and telling your users to log in all at the same time will not work in your case.

Hope this helps.
J
Accepted Solution
 
02.24.2008 at 06:25AM PST, ID: 20969951
I understand that splitting the database is very important, and that is in my plans.

I'm limited to A97 as the company has several databases and does not wish to upgrade them all at this time.  I believe we are looking to move away from Access in the next few years, and this is a database that should hold us over until then.

Work elements are being introduced from a temporary SQL server that is populated from a mainframe procedure.  The mainframe overwrites the data on the SQL server every 2 hours.  The SQL server was meant for minimal reporting purposes, and we are forced to work with that.

You've given me a lot of valuable information, the only other questions I would ask are:
1) Does the filter approach shown in the code above look like the best idea?  The record source of the subform on the right pulls all items from the master table (up to 80k-100k records at any given time) where the employeeID matches their ID, then is filtered based on the subforms to the left.

2) The user-base for this project will be a total of 155 users where 20-70 could be using the system simultaneously.  Would it be very beneficial to switch over to SQL before starting this.  I've seen plenty of reports where that many simultaneous users did not hurt an access database as long as it was split, but I know how flaky they can be.

Thank you for your response. :)
Sean
 
02.24.2008 at 06:55AM PST, ID: 20970054

Rank: Wizard

Access is going to transfer every record from every table that is involved with a SQL statement. Whether that's when you're building a recordset for a form, or populating a temp table with all of those records. It just makes sense to consider a temp table as a viable option in your circumstance. Regardless of where you're pulling data from when using an access front end you are pulling a lot of data every time you "refilter" your data.

Given that, if your user opens his front end, and you populate a temp table in his front end with all of HIS data, then let the form work off of that for filtering and selection, then you reduce the amount of traffic passing back and forth on your network exponentially. Using the Insert/Update method when your user saves his changes, you would be able to write back only the data that is changed, and once again, you've reduced your traffic and the TIME it takes to update a recordset that large.

As far as the number of users goes, there are limits, but I do not believe that given the simplicity of your front end, it will even be a factor. Now, if they all shared THE form, without each having their own copy of the front end, then I'd say can the whole project and go with another solution all together.

You can be smart about this and save yourself a lot of future issues when you think in terms of traffic reduction across your network. An initial load of data to a local database is a lot more efficient than continuous loads based on one user's click.

Hope this helps.
J
 
02.24.2008 at 10:29AM PST, ID: 20970744
Fantastic.  Thank you for the advice. :)
 
 
20080236-EE-VQP-29 / EE_QW_2_20070628