title: Migrating application from Microsoft Access to VB or C#.NET
body: <p>I'm currently trying to convince management of the need to port one of our applications to .NET. The application has grown to be a bit of a monster in Access (backend in SQL), with 700 linked tables, 650 forms/subforms, 130 modules and 850 queries.</p>
  
  <p>I pretty much know all the major benefits of doing this, but now need to look at how this can be achieved technically, so I can put a project plan together.</p>
  
  <p>So, my plan was to convert the queries into stored procedures and/or views on the backend and re-write the forms in WPF or WinForms.</p>
  
  <p>Now, the code is where I come unstuck. Is it possible to packaged up the code behind and modules into dlls and consume them whilst it is slowly ported to VB/C#?</p>
  
  <p>What we can't be left with is half an application in VB/C# and half in Access, it must 'appear' to all be one application, even half way through the migration.</p>
  
  <p>Thanks in advance.</p>
  
  <p>EDIT: Just some more info about what we do and why we're looking at moving away from Access.</p>
  
  <p>We are essentially an ISV and the Access application is our main product. This application has been developed over a period of 15 years, by many, many developers on an ad hoc basis. There is no documentation for this application. </p>
  
  <p>We also have problems with getting branching in SCC to work properly, so we've currently got 4 or 5 code bases for the half a dozen clients we have. On top of that, all the testing we do is completely manual, which you can imagine is very labour intensive, and only scratches the surface of what really needs to be tested.</p>
  
  <p>We're currently looking to expand, and have a number of sales leads that are in the final stages. I'm worried that with these new sales, we're going to be swamped with support and testing, and that this application is going to become even more entangled an buggy.</p>
  
  <p>I'll also add to this the fact that we're just about to enter the spec phase of a brand new product, which is almost certainly going to be built in .NET. If we were to rewrite the Access application in .NET, then the people we use for that can go straight on to this new development.  If we were to stay in Access, then we'd have to get some new Access people in, whom would have to be retrained once we start the new development.</p>
  
  <p>So essentially it has come down to two choices, major refactoring work in Access to try and 'organise' the code a bit better, and those of you who have suggested culling parts are most probably right; I'm sure there are parts that are no longer used. However, I fear that if we stay in Access we still won't be able to build in effective testing and we still won't have proper SCC branching, which will lead to support continuing to be a nightmare, and any future developments on this product makings things worse. Either way there is a lot of work that we're about to embark on, which is either going to be done in Acces, or .NET.</p>