How to access an Access Database online from a desktop/server? - database

Preface
I created an Information System using Visual Basic for our office in our school. It uses OleDb Engine for an Access Database. The database is stored inside the directory or locally inside the application thus making the connection string:
"PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source = DATA\Base\database.accdb;Jet OLEDB:Database Password =cca"
The Information System makes the job done on printing, reporting, adding, deleting and editing records.
What I'm Trying To Achieve
Now I need to make the database accessible ONLINE or REMOTELY by making an unused PC be a server instead. This is the overview of what I'm trying to achieve:
and the connection string will be like (or SOMETHING LIKE)
"PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source = (address of the server, something like) 10.212.19.3:1234\CCA-SERVER\My Documents\database.accdb;Jet OLEDB:Database Password =cca"
telling the system that it will access the database in an address online and on a specific server. Or something like, I will just put the database inside the server and through the internet it will be easily be accessed by the system like a Shared Location inside a network. If so, How can I do it? Where do I begin?
Question Conclusion
I'm trying to make a database server. We have a desktop server ready to run. I'm currently digging Google for information and guides how to make it but all I see for now is bumped threads and searching alone won't fill me enough so I decided to ask you guys if you know any
Guides.
Links to any resources.
Tips on where should I start.
Links to Tutorials.
Tools I'll be needing for the process.
NOTE: I'll update this if ever somewhere in the internet provides a
good guide/tutorial for what I'm trying to achieve and I'll put a link
to it incase someone in the future will ask the same question as I
did. For now, I'm asking for your help and brief me what I should do step by step.
Thank you.

Related

Delphi, Microsoft Access 2007 Connection String

I've been trying to create a program that creates a database, creates tables, stores information in these tables, and reads off these tables. I am using delphi and microsoft access (although I am open to using another database program if one is easier to learn). Anyway, I cam across this question and answer: Delphi 7: ADO, need basic coding example
However I am confused about what my connection string would be or how to know what is is. I want the database saved in the same file area as where my program is so would it just be the file directory to that area such as:
FILE NAME=E:\project\Debug\Win32\Studentdb.accdb
Also the user uses +database. If my database name is Studentdb would I just put 'Brill1' in that space or not?
Also do I need to use ODBC connector if I am not using MYSQL? I am guessing not but do I need to use something else. Also, while saving files from microsoft access they save as .accdb however when I created a ADOConnection component on my form and pressed into the connection string property it was asking for a .udl and I haven't run across this anywhere before so I am wondering if I need to convert or do something with that.
I am a real beginner with this so I am sorry if my questions are obvious but I would really appreciate some help or pointed to a beginner's friendly resource on the subject. Thank you.
All possible connection strings from Access 2007 are here:
https://www.connectionstrings.com/access-2007/
...which one to choose depends on which driver you have and/or want to use.
(ACE, OLE, ODBC ...)

How can I protect our client database in either Windows or Access?

I started working for a company in the field service industry. We have a program and client database build in Access. As of right now, they are scheduling their service calls in a notebook. I am trying to get this company into this era by having a web-based scheduling software.
I have basic schooling networking but I am not a programmer nor do I know Access. I have learned how to split the database and create a multi-user environment and converted it to accdb from mdb to work with Access 2013 instead of 2003 in which it was written. These steps have greatly helped but I am not sure where to go from here.
My next step is the scheduling software but the company's greatest concern is the protection of their client database. Not from outside hackers but there is always a concern of employees selling our client list to our competitors. Also, at this time, employees do not have web access for this reason, which they will need.
Is there any way to keep the accdb file from being sent via email etc. or copied to external media? If I set up permissions through the OS, won't that make the client files uneditable (for lack of a better word) in Access? Like address/tele # changes or notes? I'm not even sure what to even search for help.
Thank in advance for your time
I understand that Access 2013 can be installed on a Server 2008 R2 or 2012 server. Put a password on the database. That should keep hackers out, and as far as keeping employees out of the data that they shoudn't be in, I know the navigation bar can be hidden, but it is unfortunately able to be viewed again by the F11 key. It would've been nice if MS could have made the navigation bar ability an easy option (yes or no), and make it modifyable in VBA....They may have. Keeping users out of raw data is something I have yet to figure out too....
I'm a novice at this stuff, but I was able to write code, and a login screen of my own so that users can have their own login ID, and a password (or phrase), and enable them to change their own password if they forget it, or if they just just to change it. You can make the navigation bar disappear by the VBA code: DoCmd.LockNavigationPane True...but unfortunately F11 can re-enable it.
Hope this helps....

MS Access 2003 - Help understanding the structure of mdb, mde and be

I was just wanting some explanation as to what is going on once you have split your tables out into a back end file, and set an mde out for use.
When a user accesses the mde, is the mdb still required to get to the tabes (or in order to make it work)? Let say I put these access apps on a shared drive for folks to use. If I split the be end on to the shared drive, and placed the mde on the shared drive, would I the mdb have to exist for that version mde to work (communicate with the tables)? Or does the mde sort of speak to the mdb which speaks to the tables?
Hope this question makes sense.
Thanks
EDIT:
One additional question: I have an MDE set up on a network share drive, but I was not certain as to whether or not I had to have the mdb present on the same share drive as my mde and back end (tables)....if not then I would prefer to not have it there because user insist on getting into it, and making copies of it and such.....
But my question is, as I said I put A MDE out on a shared drive, which means there is one that about 10-12 people max, share, and the likelihood that even half these folks would be in there at the same time is very very unrealistic. But I recently read that I should have an MDE for each person? Is that true? What is a good example of distributing one to each person? I have only ever gone with the one on a shared appraoch before, and was unaware that this was, if in fact it is, a bad approach?
Thanks for your help!
No the MDE version does not maintain any communication with its original MDB source version. However you want to keep the MDB in a safe place so you can make design changes there, and then create a new version of the MDE from the updated MDB.
The stronger case for an MDE is for the front end application you distribute to your users --- assuming you don't want them changing the design of any database objects. The back end database traditionally contains only tables, relationships, and indexes. You may decide the back end can remain in MDB format.
Edit: Do not allow your users to open the same front end application database, regardless of whether the front end is in MDE or MDB format. Sharing the same front end increases the risk of corruption. They can all still share the same back end with links from the front end to the back end tables.
Tony Toews has made the challenge of giving each user their own local copy of the front end fairly easy. See his useful and free! utility at Auto FE Updater.
#HansUp has done a fine job of answering your actual questions, but I'm posting an answer here just to try to explain what seems to have confused you.
Step back for a moment and consider how Microsoft Word is deployed and programmed.
When you install Word 2007 on your
computer, you don't share it with
other users -- each of you installs
it on your own PCs.
When you install it, you're
installing the compiled application,
not the source code.
Microsoft keeps and maintains the
source code, which you don't need to
run Word on your PC.
The source code for Word is like the
front-end MDB.
The compiled Word EXE and all of its
supporting files is like the
front-end MDE.
Just as with the Word application
files, you don't share it, but give
each user an individual copy of it.
As with Word, your users don't need
the source code to run the compiled
application, so all your users need
is the MDE.
Just like Microsoft, you need to take
care of your source code MDB so that
it doesn't get corrupted or lost, in
order that you can continue to update
it and produce new compiled versions
for your users.
It's not complicated when you understand the function and role of the different parts. It is confusing because of the fact that MS's documentation for Access tends not to promote or explain best practices. I can't quite understand why this is the case after all this time, but it still is.
You're well on the way to doing things properly, though.

Decrypt (only) connection string section in Winforms app.config

Ok, I know this has been asked a thousand times before, but no conclusive solution has been derived...so here is another really silly question!
I have a Winforms 3.5 app and using LINQ to SQL, hence the Connection string is ALWAYS stored in "app.config" by default (and VS2008 will not accept any other way of storing this - Ive even tried overwriting this in the IDE-generated code). That being said, any person with a bit of computer know-how needs to just browse to the install directory of the app, look for the [appname].exe.config file, and open it to reveal the supposed secure username/password for accessing the database. Even if you opt to encrypt/decrypt this section, it is only done when the app is running - so Im assuming that when the app is closed, the connString section reverts to plain text....that can be once again read. (....how do you win?!?!)
Keeping in mind that Im using LINQ and generating a LinqDataContext, what I would like to know is this:
Can the connstring not be stored elsewhere besides the app.config? (perhaps like in a user setting file that can be modified after installation)
If the above is possible, can I not store a pre-encrypted connstring into the config file (that certainly wont be able to be read) and in my application, opt only to decrypt the connstring whenever the connection is opened?
If none of this is possible, I may have to revert to using traditional ADO.NET (seeing that I already have hundreds of stored procs for all CRUD operations) - at least that way I can have control over how and where the connstring is stored.
BTW - sorry if this is a juvenile/confusing question to ask, and if you feel that Im wrong with anything Im explaining please let me know.
Much thanks!
You can store a pre-encrypted conn-string in the app.config, but i guess it will be useless since, your application sooner or later will decrypt the conn-string (And the plain text will be availiable to anyone interested!)
So you should obtain an SSL cerificate too... (Not a self signed one)

Fogbugz database schema management

This is a very simple question, and maybe the man himself can provide insight on this :)
Does anyone know the pseudocode behind how Fog Creek does database schema management?
I'm running into an issue and I'm trying to figure out if I'm handling it right... I have a module that runs each time someone spins up their site and examines their database to make sure that they have the right changes in place. if they are missing changes, then the script makes the required changes.
My issue is that I was trying to tie it to the session_start portion of the Global.asax, but it seems to be rather flaky at times, and I'm trying to come up with a better scenario.
For reference, I'm trying to run 1 x web application that can respond to any number of hosts, where the host maps via a metabase to find out what database it belongs to and then makes the necessary connections.
You might have more luck asking this on http://fogbugz.stackexchange.com/

Resources