
Access 2010 And SharePoint – Welcome To The Hybrid Access Application
November 6, 2009Now that we can talk about all the features in Access 2010 I think I have to place my marker immediately on what I believe is the BIG story in this release.
For the past 3 or so years I have kept hearing internally at MS about the Web story in what became Access 2010. The idea seemed to be that in order to sustain a future for Access it was necessary to “tie its can” to SharePoint’s bumper and offer itself as a somewhat functional database tool for lists and relatively small data requirements inside SharePoint. I always had trouble with that idea because I was concerned that by doing so they would marginalize the very community that Access needs to survive, namely the worldwide non-network of people using client-side Access (often secretly) to produce Departmental Solutions.
But nonetheless I jumped on the bandwagon a couple of years ago. Reading the writing on the wall I stuck my neck out and developed a serious application using Client-Side Access 2007 with SharePoint 2007 Lists as the backend. And it worked !!! In fact that application has been in production for over a year, and with a little help from Terminal Services for those users spread around the world (literally), this application has worked and worked well (despite the kludges I had to employ to get everything to work well).
But in the background of all of this was with the expectation that Access 2010 would provide a far better story. Well it’s true !! But not in the way many expected.
Welcome To The Hybrid Access Application
While a lot of the talk will revolve around the pure Web-story in Access 2010 I believe that is not the REAL story – and any effort to make that the real story would be misguided.
The conception of the Access 2010 Client – SharePoint 2010 Server integration is not only brilliant it was also very, very ballsy. I cannot imagine a bigger leap of faith than what they did. That is the REAL story of Access 2010 and Access Services.
In the end Access 2010 allows the traditional client-side Access developer to stage their entire application inside SharePoint on a Subsite created by Access Services. When an Access application is “Published” to SharePoint all objects (tables, queries, forms, reports, etc.) get stored inside the SharePoint subsite.
The user needs only a small (200+ bytes) shortcut to subsequently launch this application from SP. But wait – the first time a user launches the application, Access Services reconstitutes (they use the cute word “Re-Hydate” at MS) in a folder on their client machine C: drive in binary format (not XML). Then Access launches THAT version locally. But while the data is cached on the local machine (again in binary format) this data is directly synched to the actual tables INSIDE SHAREPOINT.
Yes – the data, although cached locally, is synched in real time – BOUND – to the actual live tables inside the SharePoint site. Any changes to data is instantly synched with the Server version. So the user gets the benefit of using a cached client-side version of the full-featured client Access application but the data is natively staored on a SharePoint server.
Next time the user launches the application, Access Services synchronizes the local cached version with the SharePoint site and only takes action on objects and data that might have been changed since the last visit to the site. Therefore in most cases subsequent launches will be close to as fast as when using a local version of the data.
At the same time the developer (or developers by the way) can make changes to the application both front and back and then Synch their changes to the Server. Subsequent visits to the application by users will then automatically drive those changes to their local cached version to keep them in synch as well. No more re-deployment hassle !!
In order to even more enhance the performance of the client app, Access Services has its own special caching mechanism ON THE SERVER that works in conjunction with the local cache while the user is in the application. It is my hope that this will allow client-side Access applications to operate across a worldwide Intranet EVEN using only a VPN connection. If that is the case (and it is something I have not been able to confirm yet), then suddenly we have the ability to deliver Access applications to anywhere across a corporate Intranet with total real-time concurrency and performance that will be more than acceptable (especially when one considers the distances involved). Getting access to Terminal Services or Citrix is a pretty easy process in most Corporations anyway if necessary.
Certainly an existing Access application cannot be Published to SharePoint Server without a few changes. Indexes, relationships, lookups, primary keys will all have to be changed but these requirements will be easily defined and the Compatability Wizard in Access is a BIG help for that. The pain is minimal and is all manageable (nothing is ever totally FREE in life anyway
).
One important point is that IF the application is actually backended on SQL Server, those links can be preserved and the application can live on SharePoint without even using Access Services tables on the Subsite. But having the application live and be deployed through SharePoint using Access Services will still be the way to go. In fact applications that started as Access MDB or ACCDB backends can migrate to SharePoint Tables and then up to SQL Server tables as demand requires …. all that with virtually no changes to the Front-End objects of the database. Think about that one……
In the end Access 2010 provides the existing Access developer with a path upwards to the wonderful Browser-based world without giving up any of the capabilities of the Client version of Access. In effect what we are looking at here is what I would have to call a true “Client-Server” scenario – one that truly puts the processing and the objects always in their proper place to produce the best results – how often have we really seen that?
This is a big deal (IMHO).
Dick
This is great information. I am very interested in more information. How about
A demo site where we could see a Sharepoint Services app built in Access that runs in a browser?
More specifics on limitations or restrictions – how much access developers change what they typically do or their thinking.
Clarify what if any limitations there are to vba code in form events and modules?
I read (Albert Kallal I think) that in some cases where this runs locally on a desktop, Access software is still required. True? Can you elaborate.
Bob:
I think the Access Team has several demos at its Blog site listed here.
Limitations and restrictions are an interesting question. If one continues to use Client-side Access even with SharePoint tables there are few changes necessary when Publishing to SharePoint. The biggest change would be in the Tables themselves, and those changes arer manageable and definable (i.e. Relationships do not transfer and will have to be replaced with either Lookups adefined at the Table level or by Data macros firing events). I will talk about this in more detail later and this is also discussed on the Access Team Blog.
With regards to performance I have seen a major improvement over Access wth SharePoint Lists in 2007. The big question which remains to be seen is what is the defacto limits for tables size and number. As with all things Access it is always possible to design a bad database schema (which has been a source of much of the unfortunate and unfair bad feelings about Access in some circles).
I have been assured that this technology will be able to handle the data of most Access applications – considering how many small Access apps are out there. In my testing I have seen great performance but I have not been able to perform serious stress-testing yet myself. My sense is that performance will be more thsn acceptable when using the Hybrd model – and frankly that’s all I really care about at this stage – maybe in Access 2013 I’ll expect more from the Web-only story.
VBA code will work exactly as before when used in the Hybrid Client/Server scenario. If you want to do strictly Web-based applications then VBA will simply not be available. That may shock some people but it is both an absolute necessity and far less of a problem than many would think. See my earlier article here about Macros in Access 2010.
With regards to requirement for having Access installed on the client this is absolutely true if you want to use the Hybrid Client/Server scenario. I see absolutely nothing wrong with that as I like the idea of Microsoft making money on Access. At the same time there is always the availability of the freely distributable RunTime version of Access, and this was so improved in 2007 that I am sure it will be comparably easy in 2010. Having to have a Client version installed is fine with me…. If you want to use a Web-Only solution you can do so – but will find that there will be certain limitations that may not make you very happy if you are expecting the same level of functionality as Client Access with VBA. But there are definitely many ways you can take advantage of the Web-only capability of Access 2010 regardless.
Dick
Thanks.
so with the Access client/sharepoint lists, does that allow multiple access clients to share the same database via the sharepoint lists? If correct, that would seem like a great solution to where a common database is needed for geographically distributed users.
Absolutely !! That’s the whole idea. It gets better though…
If you include some Browser-only forms in the application then users with omly a browser can feed pthe same database in real-time too.
I recently did a demo whie in the Netherlands where I launched a browser form on my local machine, edited the data (that resided in Redmond), and then went over to my Terminal Services session running in Redmond and saw the changes instantly on the client version. Proved thst it works !!
This makes the idea of worldwide, or at least distribution beyond a particular LAN, a very real opportunity for Access developers.
Dick
I specialize in Microsoft Access development and lately have been getting in the habit of creating my lookups at the table design level. Not only will Access 2010 be able to use this in creating of the Web pages but my regular Access forms will also be created with the combobox and listbox controls already prepared. I suggest anyone creating a table field that will be feed by another table(“lookup talbe”), use this approach. Just click on the table field in the table design view, and click on the Lookup tab in the field properties area below. Change the display control from text to either combobox or listbox. Row Source Type can be a value list where you enter some text values separated by semicolons such as (Debit;Credit;Cash). If you make the Row Source Type a Table/Query you can select a pre-existing table or query or you many create a query right there by pressing on the elipse, the three dots on the right side. After creating your query, use the Save As and give it a name. When you close the saved query, you will be asked if you want this named query to become the Row Source property of the field, say yes and you’re done.
Bob Heifler
MyAccessProgram.com
DailyAccessTips.com
Contact at:
http://myaccessprogram.com/Contact.html
Find example files at:
http://myaccessprogram.com/Download.html
Find free video tutorials at:
http://myaccessprogram.com/Tutorial.html
Hey Bob:
I’ve been a fan of that technique for quite a while. In Access 2010 the Lookup gets new importance because it is there, when the tables are hosted on SharePoint, that you define Referential Integrity and/or Cascading Updates and Deletes as well. This replaces the Relationships Dialog while also providing Table-level One-to-Many relationships delivered through a default Combo box that gets automatically exposed in Forms or Datasheets. Handy.
Dick
Hi Dick,
I have seen demos of this and can’t wait to get my hands on the beta to start trying it out.
In Access when defining tables each field has a name and a caption property; In SharePoint you only have a Column Name for a list. Presumably the Access fieldname is used and the Caption property is ignored? I have always follwed a strict naming convention for my fieldnames, such as not using spaces; Should I ‘unlearn’ this habit and effectively start using my captions as fieldnames?
Hopefully there will also be a document published that says how do Primary Keys, Referential Integrity, etc. and the best practices when developing web-only databases.
Thanks
Peter
Peter:
Yes you can add a Caption (i.e. “LastName” intrenally can show “Last Name” on a form or datasheet or report automatically). You can also give the field a description that will show on the Sattus Bar at the bottom.
As we speak, someone is writing a White-Paper for Microsoft on converting from Traditional Access to the Web Access using Access Sevices. I’d hoped it was going to be me but oh well – you can’t win them all
…
Dick
Dick,
You might like to know that this post was mentioned on the Access team blog yesterday.
http://blogs.msdn.com/access/archive/2009/11/11/access-in-the-news.aspx
Yes I saw that when I noticed a spike in traffic here
Thanx Clint…
Dick
Hey
Really cool info, can i use it on my site?I love dmoffat.wordpress.com, what theme are you using here?
Thx
Of Course !! Go ahead.
I’m using “Neat!” as my theme apparently
Keep it simple ….
Dick
p.s. Thanx for the kind words
Hi Dick,
Can you add you your final comments about SQL Tables?
‘One important point is that IF the application is actually backended on SQL Server, those links can be preserved and the application can live on SharePoint without even using Access Services tables on the Subsite. But having the application live and be deployed through SharePoint using Access Services will still be the way to go. In fact applications that started as Access MDB or ACCDB backends can migrate to SharePoint Tables and then up to SQL Server tables as demand requires …. all that with virtually no changes to the Front-End objects of the database. Think about that one……’
Are you talking about custom BCS and external content types? Or does the publish from Access 2010 to Sharepoint create an Access Subsite that works with existing SQL Server tables another way?
Or Neither…please explain.
Thanks,
Josh
I’m talking about traditional linked tables to either external Access database OR to SQL Server databases. They will live in your Access Services subsite until you “rehydrate” them on the client in the ACCDB file that is created on your local machine. That means you don’t have to store your data in SharePoint Access Services to take advantage of the other advantages this brings to the table (deployment, maintenance, etc.)
The only thing you can’t have are traditional local Access tables. Therefore you can’t use local tables in the Frontend as Temp tables. But you can easily work around that.
Hello, DICK. .
This is Edwin from Puerto Rico, great post . . congratulations . . .
I also like the new stuff in access 2010. . .
Keep on doing the good work. .
Edwin
-
Hey Edwin… Thanx my friend.
[...] Moffat who has attended several of our developer kitchens recently wrote a blog post about Access 2010 and hybrid apps. He really likes the deployment features of rich client apps and SharePoint. “In the end Access [...]