I've written an application in Access 2013 (64-bit) that I'd like to split into front-end and back-end databases, storing the back-end on a file server where multiple machines can access the data via local instances of the front-end. None of the computers have Access installed, so I'm using Access Runtime 2013 on them.
The application runs fine when it is not split, on a single computer. As soon as I split the app into front-end/back-end files, the program opens and immediately closes on startup, with no error messages. I'm assuming that this is due to invalid links to the external data file on the first startup of the app (i.e. existing links are to folder locations on my development machine).
Has anyone experienced this problem? If so, is it due to invalid links? And, what can I do to allow the program to stay open, allowing the user to navigate to a form that I've provided in the main menu form for setting the path to the back-end file for re-linking tables?
In the load event for the menu form check if you can access the data by trying to open a recordset. If you can't, close the menu form and open your form for setting the database location. Make that there's nothing on you location setting form that is bound to the database.
Related
I have created quite a large Access 2016 db. It is now ready to share with the business and needs to be put onto SharePoint. I've tried just uploading the file to a SharePoint document library, however users cannot edit the database (there is a lot of VBA code that runs SQL commands that write data input by users into the database).
Is there a way to share the database that allows users to open it from SharePoint and let the VBA write to the database/tables?
That is not possible as SharePoint isn't an SMB fileshare, neither is OneDrive, DropBox, etc.
The SMB fileshare is offered by a Windows Server or a Linux box with Samba installed.
Have a client that upgraded all of their machines to Access 2016. Before, they had a mixture of older Access versions. The access databases they use have an ODBC connection to a Pervasive database. I don't know anything more about Pervasive. I know in the past when they've had a single machine go to Access 2016 or from older versions of Windows to Windows 2010 and I've had to re-link tables.
Right now, they're getting this error:
ODBC-call failed
[Pervasive][ODBC Client Interface][LNA][Pervasive][ODBC Engine Interface]Invalid date, time or timestamp value. (#0)
I need some suggestions on how to fix this for all machines and all Access applications.
** UPDATE **
The problem was a missing Active X calendar control. I changed all the date controls on the form to be text boxes to take advantage of the new Access calendar pop-up. The problem now is that the client has dozens of Access database. As far as I know, I'd have to open each file and each form in the file and change the controls one at a time. Anyone know of a way to update multiple Access file without having to touch them all?
The calendar control will still work with Access2016. If you've got loads of databases it's probably quicker to re-install the calendar control.
You will need the MSCAL.OCX file which you can download. Copy the MSCAL.OCX file to c:\windows\sysWOW64 not c:\windows\system32. Register it by running from the command prompt or run in the start menu
regsvr32 c:\windows\sysWOW64\MSCAL.ocx
and it should register OK but make sure that you run regsvr32 with administrator privileges.
I have created a folder that all users have full control over. In this folder is my backend, while the frontend resides on the local hard drive. I can open the database on my development computer, even over the network. On all other computers, the system simply loads the access welcome screen, or access opens and closes automatically.
Can there be virus protection or a firewall blocking this? I have enabled network connections, and allowed all vba projects, etc.
Can there be a reference issue? If I have a reference for an Outlook library, and have compiled the file into accde format, would this prevent any error messages and simply cause the database to fail? I can open the backend tables on all computers, it is just the frontend that will not open.
Any suggestions will be helpful. I am not at the site, so I will take all suggestions and try them when I return.
A few things come to mind:
Have a look in the Windows Event Log.
Another issue could be happening if the locations where the front-end is located has not been added to the list of Trusted Locations in MS Access.
If you put the accdb front-end on the user's machine, can it be opened? Do you get any error?
As you mentioned, there could be a reference issue. Try to remove the reference and convert your early-binding with late binding instead (use CreateObject).
Add some sort of logging to your application and log as much as possible to a text file from the startup sequence of your application. This may let you know if there is some of your startup code that fails.
I have an Access front-end database connected to various back-ends (Access, mySQL, dBase) which runs as a separate instance on each users computer. All users have Access 2007, and there are a total of 5 users for this system. Each user runs the database from their local hard-drive.
On one computer I am unable to open any of the linked tables and receive error message 'Unexpected error from external database driver (8458)'. Also, I notice that the Linked Table Manager is disabled (grayed out) when right-clicking on the table link definitions.
Oddly, if I create a blank Access database on this computer, I can create and open linked tables with no problem.
Please try the following "fix" from Microsoft if you have not yet.
Start Windows Explorer, and then browse to the Borland folder.
If you cannot locate the folder, follow these steps. NOTE: Because there are several versions of Microsoft Windows, the following steps may be different on your computer. If they are, see your product documentation to complete these steps.
Click Start, and then click Search.
Click All files and folders.
In the All or part of the file name box, type Borland.
In the Look in list, click My Computer.
Click Search.
Rename the Borland folder as BorlandOld. (For example, rename C:\Borland as C:\BorlandOld.)
I have IIS7.5 with two websites, and I have an Access database on a server on our network.
The first website has anonymous auth on, using a specific network account (lets say 'jim.smith').
The second website has windows auth on.
I've written some ASP to use a DSN-Less connection to the Access database, and I'm using the same code in both websites.
When logged on to a computer with the same network account as is in use with the first website anonymous setting ('jim.smith') - when viewing in a browser, the first website has access to the database, the second website does not.
The error message is: 80004005 The Microsoft Jet database engine cannot open the file '...'. It is already opened exclusively by another user, or you need permission to view its data.
It is definitely not opened by another user.
So the first website is being accessed by network user 'jim.smith' via the anonymous setting.
The second website is being accessed by network user 'jim.smith' via windows auth.
Why would access to the database work from website one, and not website two..?
Does anyone know how to make windows auth work the same as the anonymous setting so I have access to the database from website two..?
Cheers!
Steve
Edit: Everyone has full rights to the folder where the database sits.
Seems to me that you need to enable impersonation so that the incoming user is used to acces the database. Otherwise the user of the application pool is used and this usually doesn't even have right on the server itself ( Application Pool Identity)
When using 'Integrated Pipeline' on IIS on the server, and if your application does not rely on impersonating the requesting user in the 'BeginRequest' and 'AuthenticateRequest' stages (the only stages where impersonation is not possible in Integrated mode), but still requires Impersonation in other areas of the application, ignore this error (500 - Internal Server Error) by adding the following to your application’s web.config
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
See:
http://allen-conway-dotnet.blogspot.com/2010/11/how-to-use-impersonation-in-aspnet.html