Access Limitations Vs SQL Server, Oracle

My only real contact with the big data bases are the insurance companies I deal with. I often have other insurance blokes say me things like...why can't the insurance company do what you do. Is Access better than what they use:).....Obvioulsy the way of thinking by the people making the big DBs is very different.

Sometimes a client will require a letter outlining policy details and it will need to come from the insurance company. What always amazes me if the person has different policy numbers and perhaps his wife owns a policy on his life etc the insurance company can't seen to manage that in one letter. Yet it is so simple to do with a Word doc having linked queries in it.
 
Banana

but want to clarify that if Access is a front-end client, then the size of data no longer matters; you could link to a data source that had 1 TB of data using Access.

Are we talking all version of Access or Access 2007?

Have yet to stick my toe in to the oceans of Access 2007. Have it on my home laptop but as I monitor the number of issues raised on this forum I am waiting for the tsumani of quesions to turn tide.

David
 
Mike,

I'd want to find out what they are using. It is possible that they have legacy system to support, and thus hampering their ability to introduce new functionality without breaking the system. But yes, that is definitely where Access shine; the ease of data presentation in contrast to low-level language at expense of reduced control and power. Even so, if there was just one or two requirements that was beyond Access's grasp, we could just use a COM library to complete the requirement and still take advantage of Access's built-in functionality without having to write pages after pages of code as one would have to if it was to be written in C or Java.

DCrake,

AFAIK, all versions will work, provided that the data is in an ODBC data source that support data storage greater than 2 GB. Of course, if we were using Jet, we're limited to only 2 GB. Another great thing about Access is its data access technology is not found anywhere else, even in ADO.NET, OLE, or whatever it is they're using those days. You see, in those environments, it is more common for programmers to request a disconnected dataset and perform a bulk update. That strategy certainly has its place, but only with Access, can you have a persistent connection and intelligence over the data retrieval; that is Access/Jet will retrieve only enough rows to paint the screen even if you linked to a 1 billion rows table, and will either lazily fill the recordset in background or get the requested rows when users move around and no more than that. This can't be done in other data access technology, as far as I know.

Furthermore the fact that Access comes with Jet provides us with extra flexibility in developing a client that can perform local processing where it is appropriate, without having to do it in programming language what would be easy to do in SQL. In such scenarios, Access could even help reduce the burden on the server and thus allowing for more concurrency than if we just used a C front-end client without local database engine (or have extra work in setting it up and providing the same functionality).

All of this comes at a cost of increased network traffic, chatter as some would call it, but to me, that cost is far more preferable than bulk requests and updates for most scenarios, and even where bulk requests or updates are appropriate, this can be done with ADO and/or using snapshot recordset.

As for 2007, I can't help but feel that it was a 'meh' update, being more eye candy than actual functionality so I don't believe we're missing that much.
 
Well I really got behind on this thread as I meant to comment again quickly some time ago.
Just some brief thoughts.

I have to agree with Gemma's recommendation of the Chipman & Baron book.
FWIW ADP's haven't been deprecated as such. Sure they're more effort to get to if you're using Access 2007 - but then some would argue that everything is. lol ;-)
I agree that they're not MS' recommended connection strategy anymore - that's certainly the case. But they exist and AFAIK intend to stay until they are deprecated some stage in the future (which I would agree will happen).
But that book has much more to offer than ADP advice. Yes they mention them plenty due to their prevelence at the time of writing (quite a few things have changed since then in 2000 - in SQL Server and in Access' support of it and techniques they describe).
They data access is focussed though ADO that's inevitable given the time frame.
(Though for direct server access that's not inconsistent with the current state of affairs again - given that Access 2007 has removed ODBCDirect support from DAO and MS theselves still advocate ADO as the replacement for that when direct server access is required).

But the overall axiom and methodology of data access that they convey is the key point. (And offer some good ideas on how to go about that - ADP or not).
Alas, as I understand it, there's no plan for an updated version (it'd have happened by now).
Maybe if Access gets some cool new Client Server tools in a couple of versions time it'll be merited. (So let's make sure we all champion that as an idiology to MS! ;-)


On to individual items

>> 1) My queries are always made in query design, so nothing fancy. I use a few functions in queries that I make and these invariably relate to extracting character, strings from text. A lot of IIFs, Left, Right, Mid, Len, InStr.
Right. Not necessarily ideal - though if you're a linked table myster then Jet and the ODBC provider will be able to interpret some of what you ask into T-SQL requests - but once you move to UDFs then obviousy that's guaranteed to not be parsed.
Just make sure you don't filter on those calculated fields. Then you're into a world of performance hurt.


>> 2) Lots of Access to Word bookmarks, saving the files as date/time, reopening then based on the file name being in Access texboxes.
That's presumably all local FE code manipulation. It's about how you use Access to acquire that data before insertion into the Word document that's key (that you use Bookmarks implies this is done in code rather than datasourced by Word - in which case temporary tables / databases would be an asset).


>> 3) I have a lot of VBA that relates to general file management but that would probably stay as it is usually a stand alone DB.
Yep - as above.


>> 4) Pretty much whatever you can do from Access to OutLook and Access to SMTP
Same ol' same ol'


>> 5) I have a lot of VBA on forms, but apart from Access to Word and Access/Email it is all simple stuff that can be done with macros. In fact it is only done as VBA because the MDE does not block out macros.
Depends slightly on what you're doing (for example if that VBA in your forms was calling an unnecessary amount of requeries - it could be a problem once pushed into Client Server scenario.)
The general advice to always be data aware - think about every request you make applies in each case.


Other snippets to comment on...

>> unable to create crosstab queries in SQL Server.
Indeed - isn't it wonderfully gratifying how comparatively slow off the mark everyone was compared to little old Jet? ;-)
SQL Server 2005 did introduce some Pivot functionality - though it's relatively limited (well - certainly less fluid) by comparison.


>> I incoorporate custom functions within select queries, this again is not acheivable in SQL server.
Indeed - though as stated earlier those functions can be maintained if you're using an Access FE - and as long as you don't ever filter on them.
Of course since SQL 2000 we've had UDFs on the server. Naturally T-SQL doesn't offer the huge diversity that VBA gives in making these UDFs (and there are various things not supported in SQL UDFs - not least of which is dynamic SQL) but they can offer Server side processing for some functions that can be interpreted in T-SQL successfully.


>> I have used SQL server to hold the data but used OBDC linked to the SQL server to use it. Although Access still uses Jet to interrogate the data. If someone can offer solutions to the above I would be interested in hearing them
That Jet wraps the calls isn't necessarily a problem.
As mentioned (in the case of continuing to use VBA UDF's etc) it can be a true blessing. And the parsing that goes on prior to request can result in some perfectly reaonsable server requests on the server (alas surrounded by some Jet/ODBC wrapping calls too).

Linked tables offer a great entry into Client Server development.
Naysayers often cite them as a reason for not liking Access for the purpose. But they're probably being mis-used in the scare stories thrown around, but in fact have offered a quick conversion method with the existing FE in place. Improvements could then be made when required - we have passthroughs to replace appropriate requests, and then moving out into code when we need to.
It astounds me that folks don't acknowledge Access as a viable CS development environment. It's just easier to build a bad application using it. That's not the application's fault - but the developer's. It would be pretty easy to make a C# SQL Server application perform terribly with appropriately poorly formed data requests.


>> I tend to use VB 6 alot and using ADODB, by setting up a mdb and linking in OBDC SQL Server tables then referring to the Access mdb container seems illogical when you should be referring to SQL server direct.
But surely it's all about options.
Linked tables, when used well, can afford very acceptable performance with minimal redevelopment. As I've been mentioning, Access offers various functionalities that other environments don't offer. Direct code data access (as from VB) is equally possible from Access - and FWIW I would personally lean towards doing so myself in application development - but there are choices of various levels of development effort against runtime return and functionality offerings. Having the choice is what gives Access power.

>> When using Access to build an app it is dependant on the client needs and sizing issues.
Isn't every solution created dependant upon client needs and sizing in some way? :-)
We should design well from the outset so that sizing (scaling) doesn't become an issue.
If local client side data filtering is occuring instead of Server side then something has fundamentally gone wrong. And the blame should likely lie at the feet of the developer.


To give some specific links as Banana began...
http://support.microsoft.com/kb/128808
http://msdn.microsoft.com/en-us/library/bb188204.aspx
The former general advice but important to read. The latter much more specific - but very much geared towards linked tables.
(There are many forum posts, articles and books out there for more on code data access and so on).

Must dash.
Cheers all!
 
^

A venerable foundation of knowledge, Leigh is! :)
 
I have an application that my client is selling. It's not "boxed" software so you'll never see it at a computer store but the clients have varying needs. At the moment, the application can be swapped between Jet and SQL Server 2005 at the press of a button. The code deletes the existing links and creates links to the new back end. All the DAO code in the app uses the dbSeeChanges argument because SQL 2005 requires it when your tables have identity (autonumber) columns and Jet isn't bothered by the extra argument. Just think about how amazing this is!! What other development tool lets you swap databases with a couple of lines of code? We just got a new client that doesn't have SQL server in house. Their prefered RDBMS is Oracle. So, guess what? The Oracle DBA and I are going to load the SQL Server database into Oracle and the app will simply swap between Jet and Oracle and we'll do it in less than two hours. Probably less than one! Talk about power.

Access can't develop a bang, bang, shoot-em up game but it will run rings around anything else for developing business applications.

I would like to reiterate one of Leigh's points - data is everything. I/O is expensive, computing is cheap. Do not read any unnecessary data and get rid of those costly DLookup()s.
 
Mike,

I'd want to find out what they are using. It is possible that they have legacy system to support, and thus hampering their ability to introduce new functionality without breaking the system.

Actually I think it is just a case of perceived client value. For the insurance agent an individual client is obviously of much higher value than the same policy holder is to the insurance company. The management also know if they produce a pile of junk the insurance agent will smooth it over. But the same insurance company will go to a lot of trouble in commission payments and statements and I guess at the end of the day their customer is the agent, not the policy holder.

But IT in these institutions just do things differently. For example, all insurance companies produce a quote system for agents to use and this system will also produce medical/financial requirements for a quoted policy type/amount. Whenever it is made by IT in the insurance company you can guarantee it will be crap:D After a few months there is usually announcement from the insurance company along the lines of.....we wish to announce we will be introducing an updated quote system and we have out sourced this to the world's best etc and etc
 
It is interesting to read all the post on this subject. I am a relative newbie so my 2cw may only be worth half that much. but here goes anyway.

It seem that the 1st question is when to switch from Access to SQL etc. This is a question I kept thinking about as I worked on my Fleet Management DB.

The first important detail is file size

2 gigabytes is the file size limit fe & be = 4gigabyte max 2048 megabytes Gigabyte=1024 megabytes, Megabytes= 1024 x 1024 bytes kilobyte= 1/1024 megabytes

Eight months into my project, the DB has 525 units containing 64 fields containing yr.mk.mod.vin.pm.purchase.insurance.msds types of data in the units table.

The vendor table has 21 field and a sub-table to manage transaction data there is currently 512 vendors and 1717 transaction records.

The parts table with 19 fields 6107 records an a sub-table for tracking use by unit containing 703 records

other tables for fuel, msds and associated lookup tables for support data like make, model, brand, type, map data etc.



Currently
fleet091510_fe 20,784 kb
fleet091510_be 19,360 kb = 41 megabytes

Since the main development area left is reports, I think it may be possible postpone the transition 50 to 100 years in my case.

The system I have uses three different front ends and a single backend. There are currently 6 users of the system. The upper end of users has be reported to be 50.
 

Users who are viewing this thread

Back
Top Bottom