Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 6 of 6 total
Thread Getting data from DBISAM3 into EWB?
Tue, Mar 20 2018 12:30 AMPermanent Link

Stephen Barker

I'm just starting a new project: EWB for the client, EWBServer with Delphi module as the server.
The database(s) however are located on various customer sites and still use a legacy system written in Delphi 5 and DBISAM3 in C/S mode.
Initially I was hoping for the Delphi Web Module to connect remotely to each database (5) to grab a small set of data to then send to EWB as JSON in the usual dataset fashion. The problem is I think EWBServer web modules only support DBISAM4.

Is this still doable this way somehow?
Can I still access the DBISAM3 servers remotely (from within the module) and perhaps manually construct the JSON if the EWB Server framework can't?

Rewriting the legacy app in a later Delphi and with DBISAM4 is beyond the scope of this project for now.

I could write a separate Delphi API program to run at each site, just to provide the small datasets I want, but I'd rather not at this stage.

Security is also important as the data is medical records, although I'm only needing to access patient appointments at this stage for this project. I assume I can set up a user on each remote database that only has certain table access rights. The web server can use these accounts for fetching the data. And further, it would be good to restrict remote access to the single IP address of the web server.

Any ideas on how to structure this are welcome.

Thanks,
Steve
Tue, Mar 20 2018 6:29 AMPermanent Link

Matthew Jones

I think the separate Delphi application is going to be your answer. Having done something similar for migrating data, another thing to watch for is DBISAM versions. My code opened the tables and exported, and put the data as JSON in a zipped file. But then the original application, being an older version, complained that the files were incompatible, because they had been upgraded by my utility. So now I take a full copy, export from that, and then delete it all.

Your utility could of course upload the encrypted zip directly, and then delete it too.

Good luck!
Tue, Mar 20 2018 5:16 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Stephen,

<< I'm just starting a new project: EWB for the client, EWBServer with Delphi module as the server.
The database(s) however are located on various customer sites and still use a legacy system written in Delphi 5 and DBISAM3 in C/S mode.
Initially I was hoping for the Delphi Web Module to connect remotely to each database (5) to grab a small set of data to then send to EWB as JSON in the usual dataset fashion. The problem is I think EWBServer web modules only support DBISAM4.>>

No, you can still use the EWB Web Server Modules to access data that isn't in one of the provided database engines (DBISAM 4.x, EDB 2.x, and ODBC/ADO).  You just need to use the TEWBDatabaseAdapter and TEWBDataSetAdapter components to hook the DBISAM 3 datasets (TDBISAMTable or TDBISAMQuery) up so that you can create/consume JSON:

https://www.elevatesoft.com/manual?action=viewtopic&id=ewb2mod&product=rsdelphiwin32&version=10T&topic=Database_Modules

Tim Young
Elevate Software
www.elevatesoft.com
Tue, Mar 20 2018 9:40 PMPermanent Link

Stephen Barker

Thanks Tim. It's good to know that I can still use DBISAM3 in this project for stage 1.

Thanks Matthew. Yes I think I will be trying to convince the client to have an API developed and installed on each remote server so we don't have to keep their DBISAM3 servers open to the world. It will also mean that the web server and EWB client apps won't need to change in the future when we finally get them to upgrade their legacy desktop app to DBISAM4 or EDB. I'll only need to upgrade the API from DBISAM3 to whatever DB they go with.

Steve.
Thu, Mar 22 2018 5:54 PMPermanent Link

Stephen Barker

I'm back onto this after a couple of days on other stuff. I'm still undecided as to how to proceed.

I have done a lot of searching through these forums (DBISAM) to find out how to modify DBISAM3 source to compile in a modern Delphi e.g. Delphi 10.2 Tokyo. I've found nothing definitive although there are posts from some who have succeeded with an earlier Unicode Delphi. Rolf did it long ago and took around 80 hours to do it.

My Delphi 10.2.2 just kept crashing during editing the source code after a compile error. I did get past the first couple of compile errors by using Notepad. I blamed 10.2.2 so upgraded to the just released 10.2.3, which is worse: it just crashes as soon as I click into the edit window after double clicking on a compile error.

I do have XE2 still installed so could try that...but wondering if I am getting into a really deep hole here.

That's it for me as far as being able to compile the DBISAM3 source under a compiler compatible with EWB Server Modules.

I know and fully understand that Tim does not support DBISAM3 and has no resources to be able to help with this, but I was hoping someone has been through this before and can help.

Failing that, I think I will either have to:

1. Make a new server in a really old version of Delphi (5 or 7) that can still talk to DBISAM3. I may have issues with old components for stuff like HTTP and JSON, and I really don't want to go back this far on a new project and have to support old IDEs as well as reinvent the wheel with a new server based on Indy or RealThin etc. when EWBServer has worked well for me in other projects.

2. Make a new API app in a really old version of Delphi (5 or 7) that can still talk to DBISAM3, that emits JSON from each site so the server doesn't need to worry about DBISAM at all, or even have the client EWB app call the various APIs directly. Problems much the same as 1. though.

3. Convince the client to pay for the upgrade of the existing desktop app to DBISAM4. This presents many issues in that it is a huge legacy app used by several other customers. I may have to maintain 2 versions of this app which I hate to do, plus it is a large legacy app with not a lot of following any more.

Any advice?
Thu, Mar 22 2018 6:25 PMPermanent Link

Raul

Team Elevate Team Elevate

On 3/22/2018 5:54 PM, Stephen Barker wrote:
> 3. Convince the client to pay for the upgrade of the existing desktop app to DBISAM4. This presents many issues in that it is a huge legacy app used by several other customers. I may have to maintain 2 versions of this app which I hate to do, plus it is a large legacy app with not a lot of following any more.

You're using components that are almost 15 years old and IMHO time you
will be spending on this will be better served moving to v4.

We went thru it some 7-8 years ago and found it not that bad - docs have
pretty good info on this and most changes are straightforward. You will
need to rewrite some of the SQL if you use that but again nothing too bad.


> Any advice?

There was DBISAM v3 ODBC driver - would that work  ? (i.e. using ODBC
connection instead of native DBISAMv3 connection).

i tyhink if you buy v4 ODBC license and then you also get access to v3
(though check with sales)

Raul

Image