How can I distribute a MS Access application (database) in a professional way?
I will be using NSIS to create an installation package.
I will be using a C# Application I created as a launcher for the access database file.
But when I open the access file, I am presented with the yellow security bar at the top, which warns about active content. That is not professional.
Please help!
Ms Access allows you to disable macros security just for that databae.
How?
Click the Microsoft Office Button and then click Access Options.
Click Trust Center, click Trust Center Settings, and then click Macro Settings.
There will be several options. You should click this one:
Enable all macros (not recommended, potentially dangerous code can run) Click this option to allow all macros to run.
After that you have to restart you ms access database.
The only con. about that is that you have to execute this process in every client computer. Because that setting depends on ms access instalation of the computer.
Hope it helps
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.
We normally use Microsoft.ACE.OLEDB.12.0 to read and write from MS Access Databases. On a normal Server you can just install office or the AccessDatabaseEngine_x64.exe and this works fine.
Now we want to move our app to Azure (Preferably the Azure Websites and not WebRole or full VM). But there we obviously can't install the Access Drivers.
Is there another way to use Access on Azure? Maybe a 3rd party driver or something that can be run/installed with user privileges.
We looked at dotConnect, but as far as I understand, this still needs OLE DB.
Switching to Azure SQL is not an option, as Access is used as a "FileType" for a 3rd Party system that we use.
Specifically for a cloud service, you can do the following:
Create a cloud service that wraps your core project/site.
Include the MDB in the project that is wrapped from (1). Many ways to do that.
Include any executables or scripts you want to be deployed as well. You can add them to a Visual Studio project and set their Build Action to Content.
In the project that is wrapped, include a WebRole.cs file and implement RoleEntryPoint and specifically implement public override bool OnStart(). This will allow you to run scripts, move files on the file system etc.
The nice thing about using WebRole.cs to run your initialization code is that when Azure reimages your cloud service, the code will always run and get the machine back to a known state.
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.
If I have an MS Access frontend that connects to an MS Access backend, is there a way to hide/permission block the pathway to the backend's folder such that they cannot access the backend database without severing the frontend/backend connection?
Right now I can't dedicate a server to a more "secure" form of DB or anything like that so I'm stuck with MS Access for now. I just don't want someone looking at, say, a link table path and then navigating to that folder and getting access to backend information. What might be some solutions to this?
With MS Access 2003 you can get some protection from user-level security Be very careful, the forums are full of people who have permanently lost access to their files. You should also create your own menus and compile. It is possible to disable the shiftkey open and all built-in menus, once again, this can lock you out of your file.
I know you have mentioned it, but I highly recommend that you migrate the backend to SQLExpress. The security model is much better and safer to use. SQL Express does not require a dedicated server and performs well on the desktop.
I think you can password protect your backend file.