Forum Discussion
Transitioning From Access To Web Sites
Sorry for the delay,
It was discussed in length, try searching moving-away-from-ms-access
- Access is RAD. Hence, better to stick with RAD product(s).
- Using some other product is just that. We all spent time learning Access in 1999.
- Modern products are absolutely the same on mobile devices, IF we want to present it in an exact manner.
- The complete development with modern products is happening within the browser.
- Security can be anything. The World is your oyster. Normally, it is about 20-30 lines of code to auth against SAML, using provided libraries. After auth, the roles take over.
- One does not need to be a Web developer. This is the biggest misassumption of all. They are all RAD tools. One does not need to be a C# developer, or assembler dev to use Access. It might help, but unlikely.
- The Forms are almost always automatically created by the RAD product, just like with Access.
- Accessing Forms or any other part of a Web application is the same as Access using roles, privs, etc.
- The RAD products almost always support using free libraries.
- Any RAD product is shipped with the source code. The power of the Web is exactly that, the source code. Sometimes, it takes minutes to find the issue in the source and fix it.
- There is no deployment on the Client machines, that's obvious. What is not so obvious is that in a large environment, ie 2000 machines plus, the installation on Client machines takes time and significant expense. The Web eliminates this, plus the safety of data.
- the databases are irrelevant with the Web RAD products. Almost all are supporting standard databases. The switch from one DB vendor to another is almost always transparent for the Web App. The Web app does not care what the Stored Procedure/T-SQL is.
Finally, the effort in learning any Web RAD product will almost always require JavaScript or TypeScript, which is used everywhere. It is a fantastic investment for the future knowing some JS.Any Access App can be "migrated", or whatever semantics to use, to the Web in a very short time. Any.
However, I have found that people are not ready for that even if "short" learning time is needed.
Imo, this is due to the expectation of who will support the App after the hand over.
Well, this is where JS kicks in. It is way easier to find the JS developer than the C# or VBA.
>Since I'm not a web developer, I have to learn from scratch (just like I did with
>Access MANY years ago). Starting with the forms would be a great place to start.
Absolutely start with the Forms. Because there is already an underlying database with all tables and relations.
The misconception is that this is a difficult task. It is not the Form one needs to worry about. It is the User expectation, as you say. Luckily, it can be almost identical.
>And, there is VBA code behind some of the fields that will update or fire
>something off based on what is entered. I'm sure that's all possible, but I don't >know where the best place is to start.
The VBA executing similar on the Web is called the Event. The Event on the browser is executed by JS.The JS can then use any technology, ie Python backhand to "crunch" the data passed to it by the browser.
That is the Server side executing btw. The VBA is not executing on the server, but the desktop.
All RAD supports a number of Events and a bit of JS/backhand language knowledge is needed. Not a rocket surgery. So you are basically looking for an Event driven product/framework.
>I know there are many options out there, but I need something that is not
>going to break my brain trying to make this conversion.
The fastest are specialised RAD products. Django for example is not specialised. It is a general framework. Also, you are looking for a Full Stack framework. MS Access is, let's say, a full stack product, because it's got all "batteries" to drive the development. PHP is a language, not a RAD tool. Hence, it is not providing a full stack framework. However, the products developed by the PHP are providing it.
Re. that anyone can get your data, or updating a website is different from updating Access FE:
- upgrading everything, so the complete application, with the database schema, is normally by click on "Upgrade". That is the modern approach. Not a single page, not a single table, but one click for everything.
- accessing data can be protected. Not only that the data can be protected but the single "row" of data, or even a single "field" can be password protected. Yes, viewing a single piece of information can be allowed only to Users with the password for that particular field in a row.
If we go deeper, MS Access might have hardcoded outgoing email server with the password in it. Imagine someone stealing it. It does not need to open the Access FE. It can be done by Wireshark, inspecting the traffic from Access. So, having 2000 Access FE spread around the country might be a concern.
>But, my question is...what language is the easiest to learn/maintain from ?someone who is used to working with VBA?
Difficult to advise on this. It is not the language where the problem is. It is the paradigm. This is exactly why Access devs are still with Access imo.
It is understanding that data does not live on your Desktop any more. So opening the Explorer and fetching the files as before is not the same as on Desktop.
JavaScript is needed. There is no around this I'm afraid. This is a Front End language the browsers understand. Not anything else. Now, the BE, the backhand easiest language is Python.
How to start? Easy. Install Python. Then do "pip install ..." of your chosen framework.
I'll repeat, nothing else is needed.
The chosen framework has all batteries included. However, if you absolutely have no knowledge of how to include JS libraries and how to use them, like Pivot.js which completely eliminates Access reports, well then don't expect a flat learning curve.
The rampup is measured in hours depending on Access FE complexity.
A skilled dev can create a POC in minutes. We are discussing creating Forms from the existing database, that's done automatically by the RAD framework as mentioned, just like Access does it. But sure, it is a browser, not a desktop, it is impossible to expect pixel perfect layout.
Hope that helped.
- DeanBabicSep 05, 2024Brass Contributor
Regarding the presentation,
here is what including pivot.js library does to for example NorthWind Traders application:https://www.youtube.com/watch?v=2Vg399Ewb20&lc=Ugxnoy4d6g4XfrWae5J4AaABAg
It is not about learning the specific technologies in depth. It is about investing as little time as possible to gain maximum results.
For example, to use this library for the Web project, this is what needs to be added to index.html providing the project is jquery based:
<!-- jquery ui for drag and drop--> <script type="text/javascript" src="js/jquery-ui.min.js"></script> <!-- pivottable.js --> <script type="text/javascript" src="js/pivot.js"></script>
The js is a folder for a specific framework, where these two files were downloaded from the Net.
The rest is related to the specific framework. Usually, it is a copy/paste from some other project, like in here only the table/column name was changed.It literally took 5 mins to get this running.
- DeanBabicSep 05, 2024Brass ContributorThe challenge is not to create the tables, the OP has it all. The challenge is to present them on the Web with "no" coding.
Sure you can. That's the whole point of the frameworks. - Sep 04, 2024
You'll have to explain to me how you "It takes a few secs to create 500 tables with 500-1000 random rows.", "With no code at all"?
As for your challenge, I can do the same with a PHP framework in a few minutes.It all comes down to your project specifications/needs that determines what solution and technologies to invest in. They all have PROs and CONs!
- DeanBabicSep 04, 2024Brass Contributor
Hi,
if I may, here is the script to create 500 random tables with 5-10 random columns:
import random import string import sqlite3 conn = sqlite3.connect('northwind.sqlite3') conn.execute("PRAGMA synchronous = OFF") conn.execute("PRAGMA journal_mode = MEMORY") c = conn.cursor() # Predefined SQL data types data_types = ['INT', 'VARCHAR(100)', 'TEXT', 'DATE', 'FLOAT', 'BOOLEAN'] def random_table_name(): # Generates a random table name return 'table_' + ''.join(random.choices(string.ascii_lowercase, k=5)) def random_column_name(): # Generates a random column name return 'col_' + ''.join(random.choices(string.ascii_lowercase, k=5)) def create_random_table(): # Choose a random number of columns (between 5 and 10) num_columns = random.randint(5, 10) # Generate the column definitions columns = [] for _ in range(num_columns): col_name = random_column_name() col_type = random.choice(data_types) columns.append(f"{col_name} {col_type}") # Generate the CREATE TABLE statement table_name = random_table_name() columns_definition = ', '.join(columns) create_statement = f"CREATE TABLE {table_name} (`ID` INTEGER PRIMARY KEY AUTOINCREMENT, {columns_definition});" return create_statement # Generate 500 random table creation statements for i in range(500): #print(create_random_table()) sql = "" sql = (create_random_table()) c = conn.cursor() c.execute(sql)
One does not need almost any Python knowledge. Politely ask ChatGPT and off u go.We can also ask to insert some random data. Even more, this is what it says:
Let me know if you'd like to customize this further or add more complex data generation!
It takes a few secs to create 500 tables with 500-1000 random rows. The file is 27Mb in size.
Here is a challenge, how long does it take to create a CRUD Web app POC with this 500 tables?
CRUD means create/update/delete option. With a Menu to select the table, and sort/search any data.
With no code at all 😀