Access VB to Delphi switch
December 12, 2005 6:40 AM   Subscribe

How difficult is it to switch from MS Access programming to Delphi?

Part of our (small team of engineers) work consists of developing customised MS Access databases for clients. Access has been a very efficient tool for us: we are not professional programmers, and while the databases themselves are highly specialised and quite complex, the interfaces required are relatively simple, mostly forms and reports with added VB code for data handling. However, maintaining databases built with the different Access versions used by our customers is becoming difficult, and there are other issues like the evolution of VB itself and runtime management for users without an Access license. For those reasons, we have been thinking about switching to a development tool that would still be relatively simple to use without the kind of dependency problems we have with MS products.

Would Borland Delphi (that one of our customers told us was a good potential replacement) fit the bill? Is such a switch reasonable (for instance, learning "difficult" languages like C/C++ or Java seems out of the question)? Are there some important caveats to consider? Any advice/experience to share?
posted by elgilito to Computers & Internet (17 answers total)
 
Having programmed extensively in Delphi I can tell you that it's quite elegant, and Object Pascal is a really nice language to work with. It's great for rapid development and the GUI builder in the IDE is well-designed. I picked it up in a couple of months when a big legacy application written in Delphi got dropped into my lap.

That said, it's completely object-oriented and just as complex to work with as any similar environment if you want to do good, robust work. I don't think it would be any more difficult for you and your team to master the fundamentals of Java, for example, and that is a lot less of a niche technology these days.

Maybe other people with more experience have a different perspective, but that's my two cents.
posted by killdevil at 6:54 AM on December 12, 2005


Check out Omnis.
posted by mkultra at 7:30 AM on December 12, 2005


I agree with killdevil. I was a long time Delphi guy, and I still make some money on the side doing odd jobs for clients who are still using Delphi. I really am a huge admirer of what Anders accomplished with Delphi.

It was way ahead of its time, and deserved to be much, much more popular than it was. For database work there really was nothing even close to it for several years. The language was great, the IDE was just about the best windows IDE going, unless you wanted vi or emacs type functionality.

So if this was 1995, I'd recommend it wholeheartedly. But in 2005, no way. The only reason I do Delphi work anymore is that I can get great rates from my clients because there are so few Delphi people around here. You'd be locking yourself into a dead-end technology and some day your boss will have to pay people like me way too much money to maintain your obsolete codebase.

I would go with Java or C#.
posted by mragreeable at 7:54 AM on December 12, 2005


You may want to check out Lotus Notes. Like Access, it is a database driven development platform. The native scripting language is very similar to Visual Basic, which means you'd feel at home quickly. It also supports Javascript so you can try that when you are ready to try on a different language.
The latest version of Notes also lets you create your database on IBM's DB2 platform. That means you have access to all the relational database goodies that the normal Notes flat-file can't give you.

The Notes object store has been backward compatible through the last 4 versions at least. On a practical level that means that the application you wrote 10 years ago will run perfectly in the latest version. Oh, and it's a single command to migrate your old app to DB2.

Notes isn't popular for some reason. And, my advice will likely be shouted down. But it really is worth your time to check it out. Oh, and Gartner says Notes has about 45% of the corporate market share, so there is a market for good developers.
posted by Eddie Mars at 8:00 AM on December 12, 2005


Ugh, Notes. Notes fought the Web harder than Microsoft, as Notes apps were traditionally the first on the chopping block when people started building web apps. They came way late to the game, and paid in spades in the market. I'm sure it's a perfectly decent IDE, and you can carry a legacy Notes base forward for a while, but you'll wind up spending your time hanging out with guys reminiscing about that sweet document routing app they built in 1992. DB2? Man, they should start an "also-rans" club together.

OK, on reading that, it's a bit harsh, but I think the biggest mistake you can make is trading one closed technology for another. You'll gain a lot... A LOT... by learning the basics of RDBMS and SQL. Coming from Access, it'll be like a million little light bulbs going off, when you realize that the basics are the same (here are some tables, here's how they fit together), but you can suddenly do so much more.

I begrudgingly admit that M$ makes it very easy to put a basic forms interface on SQL Server with their .NET tools, and the Access -> SQL Server migration is usually fairly painless. You can then either stick with that, or figure out that you maybe want to replace .NET with PHP/Java/Omnis, or swap out SQL Server for Oracle or mySQL.
posted by mkultra at 8:40 AM on December 12, 2005


Sweet Fancy Moses! Stay away from Delphi! A few years ago it was the greatest thing since sliced bread, but the newest versions are not worth the bits they're programmed on. Since Borland became Inprise (and then came back) it's like they're actively trying to kill the product and force people off it. They've removed the help files, they ignore bugs in the IDE, and continue to release new versions bloated with useless modeling tools all the while ignoring the core problems.

Go with C# or VB.NET, atleast you'll have the possibility of long-term support and upgrades.
posted by blue_beetle at 8:53 AM on December 12, 2005


Response by poster: Thanks for the answers so far. It clarifies (unfortunately) a couple of things regarding Delphi.

To explain things better, our basic need is to be able to develop without too much programming overhead relatively complex, stand-alone databases that will run on a customer's PC or laptop (it's not supposed to be enterprise-wide databases running on network, and using SQL Server or DB2 seems overkill). Access was (and still is) perfect for this, as deploying the database usually meant just sending the (link to the) mdb file to the customer by email. Users without Access receive the database packaged with the Access runtime (free from MS). That's extremely easy and fast and has been a near perfect solution for almost 10 years, but now we're stuck with the coming nightmare of mismatched Access versions and libraries. Right now, we're scared of VB.NET because of the dependencies issues (we can't always force our customers to update libraries) and C-like languages seem to be a little bit out of our league as nobody here has experience with a language more difficult than the Access flavour of VB and PHP (the OO stuff there being barely used as usually not necessary). Ideally, we'd like to have a good IDE able to create (royalty-free) executables containing the whole package, if possible from a company that won't file bankrupcy in a couple of years...
posted by elgilito at 9:32 AM on December 12, 2005


I'm a sysadmin and I just tinker at programming, so take these comments accordingly. However, I was very, very good with Access 2.0. I did an app in that system that outside consultants said was 'impossible'.... and the app stayed in use for about ten years before being retired. I haven't used it much since, but Access 95 (the last version I looked it) was fundamentally the same thing.

Many years ago, I looked pretty closely at Delphi as a replacement for the Access system, which I hated. (2.0 was very buggy.) It was amazing, probably the single best programming tool ever released for Windows. Working in Delphi felt like writing poetry... it was just that elegant and powerful. Reading the (lengthy) manuals they included in the first edition was like being taken on a tour of what programming should be like, by five or ten of the smartest people in the world. It was incredibly good. It didn't do one thing I needed, though... I had designed 8.5x14" contract forms that printed out on the printer. In Access, I did the form design and just put the fields where I wanted them... there wasn't anything like that in Delphi at the time, and it ended up being a deal-breaker for me.

The language was extremely fast and compiled like lightning. It was suitable for nearly any kind of development short of a device driver. And the resultant executables had NO dependencies, you just copied the EXE to the target system and everything just worked.

Unfortunately, Microsoft paid the lead designer, Anders Hejlsberg, millions to leave Borland and come work for them, correctly determining that it was his brilliance driving the product. Borland failed to correctly value his worth, and didn't match the offer.

After he left, the subsequent iterations of Delphi were pretty much what you'd expect.... still solid, but not profoundly impressive. And they gave up on the hobbyist-programmer market, instead focusing solely on databases... ignoring 75% of the greatness of the language to focus it on one small subset of what it was capable of.

That market wasn't big enough to really support it, and over time, the code has stagnated. I wouldn't waste any time with it at this point. It was once impossibly brilliant, but without Anders, it became rather mediocre.

If I were in your shoes, I'd probably start tinkering with some of the open source stuff, to see if it will do what you need instead. You say the databases are complex, but the presentation layer is simple, meaning you don't need that much of a GUI. You're used to thinking that you need a RAD system, but you might not actually need one. You might be able to do a very good job with a combination of Java and a SQL engine, like MySQL or PostgreSQL. If Java is too closed-source for you, or you just don't like it, Python is also quite powerful, and tends to be very readable.

I'm not saying that this IS the answer, but I think it would be worth spending a week or two fiddling around to see.

The big advantage to open source is that you don't have to worry about licensing. You may still have the multiple-version problems that you do now, but if you need to update a customer to a newer version of your software, you can do it for free. As soon as it makes sense for you to drop support for older software, you can do it, without impacting your customers' pocketbooks overmuch. Alternately, if you like a particular version of the software, you can just keep using it. You're no longer at anyone's beck and call but your own.

The major downside, from your point of view, will be that you'll have to become better programmers than you are now, and layout and design will take more effort than it does at the moment. The second part is probably a permanent net negative, but improving your programming skill is never a bad idea.

Sticking in your little Access niche may work okay for you, but there's a much bigger world out there to see. In all seriousness, and I don't mean this as an insult, if all you know is Access, you shouldn't call your team 'engineers'. It's like knowing how to dog-paddle and calling yourself a lifeguard. Access can teach you decent relational database design if you pay attention to the manuals, but that's about all it offers over the long term.
posted by Malor at 10:06 AM on December 12, 2005


Add me to the list of former Delphi users who thought it WAS the greatest thing ever. I couldn't tell you about anything in the versions past 5 but it's a dead tool no matter how you slice it. You don't want to have a bunch of smart people spend time on the learning curve for something with a short lifespan.

Unfortunately I'm not sure there's a good tool that meets your needs other than Access. If it wasn't for the easy IDE issue I'd suggest Perl as an alternative with some strengths. Being database independent you could access your existing MDBs, use Berkeley DBs and on up through any RDBMS. ActiveState's development tool is cheap and makes a Windoes excecutable.

However you're stuck with Tk/Tcl for UI and I have never used any of the GUI tools for making them. My limited experience with them leads me to one conclusion: HARD. However this is a position informed by never having done UIs in apps other than VB or Delphi which make it easy. I imagine old-school WinAPI or XWindows people are thinking "pussy" when they read that.

Maybe there's some UI development tools for Perl I am unaware of; my press from customers now is web-related so I have had no reason to look into it. Anyone?
posted by phearlez at 10:11 AM on December 12, 2005


I agree with the other posters. Five years ago Delphi would absolutely be the way to go. I went the Word-Access-VBA-Delphi route myself, it was ridiculously easy to build stand alone database applications with Delphi. However, I have also heard that the latest versions suck, and I wouldn't start with Delphi now.

I also do not think you need a full blown language like Java or C#, that sounds like much overkill for your needs. There are many companies that sell products like Access. Filemaker Pro is a popular one, there's also Alpha Five. Maybe those names give you a starting point, maybe other mefites have experience with those or other products.
posted by davar at 10:16 AM on December 12, 2005


Stay away from Omnis (well, maybe it has improved - but I was burned badly by it a few years back).

I see the crux of your problem. You want a single-file solution.

Well - actually, you could probably do that in Delphi (which I loved, but as someone else mentioned - recent versions stink), actually FreePascal is syntax compatible with Delphi and open-source. Then, you would use an 'embedded database' of some sort, FireBird is a good candidate. With that, you might actually get away with a 2-file deployment (one for the EXE, one for the database).

The nice thing that FreePascal and FireBird would buy you is cross-platform potential (Windows, Linux and MacOS at the bery least). However, the only IDE for FreePascal (Lazarus) needs a fair amount of work under Windows.

A new alternative, might be the SQL Server 2005 MSDE (embedded equivalent), as it can host .NET code. I don't know if it can popup user interface components though. And of course, the .NET 2.0 runtime would have to be installed.

Ultimately for long-term control, platform independence and complete control over packaging and deployment you may be best off learning C++ (ugh).
posted by jkaczor at 10:19 AM on December 12, 2005


Response by poster: Damn, it looks like I'm SOL there :(

We're using OSS for web development and in fact one of our Access databases has a Apache/MySQL/PHP version for our customers. I like OSS, but I don't want OSS tools for deployment on our customers' machines as we need really rugged, well-tested, commercially-supported ones with a large user base. We're in no position to tinker with the tool's code and do our own compiling if something goes wrong. In any case, even to create our simple interfaces, we do need IDE/RAD tools as my colleagues are not coders at all (and won't have time to learn serious coding). I call ourselves "engineers" because we are agricultural engineers, working on modelling farm economics and providing technical/economical data and expertise to our customers. Software development is very important to us and we've had a lot of success with it but it is not our main job.

I'll definitely have a look at Java and FireBird though.

Thanks again for the help!
posted by elgilito at 11:31 AM on December 12, 2005


Would realbasic be an option? They have a demo you can try out and I know they cater to VB coders in general. They have cross-platform support and embedded SQLite-based db. I do some Access work myself, so I'm going to check out the demo. I'll report back if it looks decent for someone looking to migrate from Access.
posted by wheat at 12:51 PM on December 12, 2005


I'm sorry, elgilito, it never occurred to me that you'd be engineers in a different field. Duh!

Ok.... you're expert in your field. You want to develop the absolutely minimum amount of expertise necessary in database development to get useful tools to your customers. Got it.

You might want to look at Visual FoxPro. At one time it had a very good reputation. It might do what you need. It'll probably be a step up from Access, and should offer more features, but should still be learnable by relative novices. It was bought up by Microsoft years ago, and semi-buried... it's still in active development, but they don't push it at all. I had a boss, many bosses ago, who swore by FoxPro... he said it was the best damn database development environment ever. Of course, that WAS ten years ago, when DOS was still a going concern, so take that with much salt. :)

I have never used the tool myself, but with your requirement list, it's just about the first thing I'd evaluate.
posted by Malor at 8:01 PM on December 12, 2005


FoxPro is an interesting suggestion. It's a great in-between environment - way more powerful than Access, and less developer-oriented than just going with Java or C# or whatever.

But, much like Delphi, I'd be scared about the product's future. Microsoft tried to kill FoxPro once or twice but only changed their mind after a huge uproar from their installed base. That doesn't exactly bode well. I would try to talk to some current Visual FoxPro users and get a feel for whether or not it's a dead-end product. My guess, honestly, is that it probably is, but it still might buy you two or three good years. In that time maybe you guys can hire an intern or something to do some real-life coding for you and write a more traditional front end for your data. Or maybe a better tool will come along.

Best of luck to you.
posted by mragreeable at 9:24 PM on December 12, 2005


Just one more voice of caution about choosing Delphi. It is at the end of its life these days. I would also second the Filemaker Pro recommendation. I am not using it so much these days, but I built several successful Filemaker Pro applications back in the day. Based on your stated requirements, it would be a good fit.
posted by rglasmann at 5:29 AM on December 13, 2005


I've been keeping an eye out for an open source competitor for Access for a while now, and hadn't found one - until I installed the current Ubuntu Linux and found that OpenOffice.org 2.0 (which runs on Windows as well) has a component called Base.

From the features page:
OpenOffice.org always had database front end tools, but in past versions they were very hidden. OpenOffice.org 2.0 starts to handle databases like any other application, i.e. a new database can be created via the "File - New" menu. For novice users OpenOffice.org provides a new Table Wizard that allows creating database tables without any knowledge of databases or SQL. The new embedded HSQLDB database engine, based on Java technology, allows creating "database documents". These simple database files don't require a back end database server like MySQL or Adabas D. All information (table definitions, data, queries, forms, reports) is stored in one XML file.
I haven't had more than a very quick squizz at it yet, but perhaps it might be worth your while to look it over. I don't think OOo is going to fizzle out any time soon, and it will certainly ease your licence management burden.
posted by flabdablet at 8:14 AM on December 13, 2005


« Older Retail/Consumer Price Index Comparison   |   What to gift? Newer »
This thread is closed to new comments.