Solved

Microsoft Access Multi-User Application questions

Posted on 2014-09-16
6
287 Views
Last Modified: 2014-09-16
I have been considering writing an application for collecting labor from our plant floor.
I would like to write this application using MS Access 2010.  It would be deployed to about 25 workstations as an .accdr file along with MS Access 2010 runtime.
I would like to store the data tables in an SQL Server database, linking to them using ODBC.
Basically it would collect 4 types of transactions:

   1)  Clock IN time for the day.
   2) Clock ON time for jobs.
   3) Clock OFF time for jobs
   4)  Clock OUT time for the day

Each worker has a unique badge ID and would be entering their own data.  They will all be appending to and updating the same tables but no two workers will ever be updating the same record in these tables because of the unique badge ID.
My concern is at the end of the day when everyone clocks OFF of jobs and OUT for the day on these multiple workstations simultaneously.  Is there going to be problems caused by multiple users appending and updating these tables at the same time?
Any thoughts or suggestions would be appreciated.
0
Comment
Question by:dsoderstrom
  • 2
  • 2
  • 2
6 Comments
 
LVL 57

Accepted Solution

by:
Jim Dettman (Microsoft MVP/ EE MVE) earned 500 total points
ID: 40326010
Short answer: even with linked tables using ODBC and Access "as is" (binding forms to tables), no.

Jim.
0
 

Author Closing Comment

by:dsoderstrom
ID: 40326109
Wow, that was a short answer!  But it was also the one I was hoping for.
Actually I will not be binding any forms to these linked tables either.  All of the updates and appends will be done using the "Docmd.Runsql"  method in vba.
Thanks for your input Jim.
0
 
LVL 75
ID: 40326330
""Docmd.Runsql"  method in vba."

Let me suggest you use this:

CurrentDB.Execute "YourActionQueryNameOrSQL", dbFailOnError

With, you can trap error you would want to know about, and no DoCmd.SetWarnings True/False is necessary.

Example:

Function mCurrentDbExecuteSeveralQueries()

Dim X1 As Long, X2 As Long, X3 As Long
On Error GoTo mCurrentDbExecuteSeveralQueries_Error

With CurrentDb
      .Execute "YourActionQuery1", dbFailOnError
       X1 = .RecordsAffected ' tells you how many records were processed - This is optional
      .Execute "YourActionQuery2", dbFailOnError
       X2 = .RecordsAffected ' tells you how many records were processed
      .Execute "YourActionQuery3", dbFailOnError
       X3 = .RecordsAffected ' tells you how many records were processed
    ' and so on ....
End With

mCurrentDbExecuteSeveralQueries_Exit:
    Exit Function

mCurrentDbExecuteSeveralQueries_Error:
   ' Your error handling code here
Resume mCurrentDbExecuteSeveralQueries_Exit

End Function
0
Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

 
LVL 57
ID: 40326667
Please follow Joe's advice on the CurrentDB().execute.

Also, as with any BE other than JET, you are better to push as much as possible server side no matter how many users.

Now with ODBC and linked tables, JET will look at the SQL being executed and if possible, push it server side for you.   But it can't do that if you join to local tables, use VBA expressions, or JET specific SQL.

So keep that in mind when working with your queries.  Also, if you can make a query pass through, then do so.  Also don't forget you can use views in SQL as "tables" in your app.   Again, that leaves a lot of work server side.

With 20-25 users, you can use Access "as is" without issue really, but all I'm saying is "you can do better than that" and if at all possible, you should.

Jim.
0
 

Author Comment

by:dsoderstrom
ID: 40326721
Great advice which I will follow.  Thank you both.
One thing caught my eye though.  Jim, you referred to JET.  I was under the impression that MS Access no longer used the JET engine starting with version 2007.  Apparently I was misinformed.
0
 
LVL 75
ID: 40326854
JET became ACE (Access Connectivity Engine) which became ... humm, not sure now (some similar name). But ... at the end of the day ... it's still JET .
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

When you are entering numbers in a speadsheet, and don't remember what 6×7 is, you just type “=6*7" instead. It works in every cell! This is not so in Access. To enter the elusive 42 in a text box, you have to find a calculator, and then copy the re…
Overview: This article:       (a) explains one principle method to cross-reference invoice items in Quickbooks®       (b) explores the reasons one might need to cross-reference invoice items       (c) provides a sample process for creating a M…
With Microsoft Access, learn how to start a database in different ways and produce different start-up actions allowing you to use a single database to perform multiple tasks. Specify a start-up form through options: Specify an Autoexec macro: Us…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

840 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question