Webservice är en användbar teknik även för annat än Visual Studio. Visste ni att även Access kan kommunicera med webservicar? Därigenom skapas en unik möjlighet att modernisera gamla Access-program till en förhållandevis låg kostnad/arbetsinsats. Därmed kan man dra fördel av .net-tekniken även till äldre program. Denna möjlighet finns från Access 2003. Men har man program gjorda i en äldre version av Access så kan man ju först konvertera till version 2003 vilket i de flesta fall går mycket smidigt. Jag stötte endast på några smärre konverteringsproblem vid konvertering av ett Access 97-program till Access 2003. Ett problem man kan stöta på är kommandot RepairDatabase som inte finns i Access 2003. Istället utförs detta i CompactDatabase som tidigare gjorde enbart komprimering. Reparation var man tvungen att göra separat, så inte nu. Problem nr 2 som jag stötte på var när man skulle spara aktuell post i ett formulär med bundna kontroller med kommandot DoMenuItem
DoMenuItem acFormbar,acSaveRecord
För att detta skulle fungera måste man sätta formulärets egenskap IsDirty till False
if Me.IsDirty then Me.IsDirty = False
Därefter fungerade det.
För att få igång kommunikationen med webservice måste man ladda ner modulen “Microsoft Office 2003 Web Services Toolkit”:
http://www.microsoft.com/downloads/details.aspx?familyid=fa36018a-e1cf-48a3-9b35-169d819ecf18&displaylang=en
Då man laddat ner och kört installationen av detta måste man gå in och ställa in en webreferens till aktuell webservice. Gå först in i Visual Basic-editorn (genom att gå in i någon händelseprocedur i designen av något formulär alternativt gå in i någon skapad modul med VBA-kod)
Därefter under menyn Verktyg (Tools) väljer man “Web Service References”. Då kommer följande bild upp:
Man kryssar i “Web service URL” och skriver därefter in adressen till webservicen i rutan. Sedan kryssar man i webservicen i rutan till öger. Därefter väljer man “Add”. Då skapas en modul med autogenererad vb-kod. Modulen heter “clsws_” följt av webservicens namn. För att kommunicera med webservicen behövar man då bara skapa ett objekt som refererar till denna modul:
Dim dataportalen As New clsws_OPD
Därefter är det bara att anropa webservicefunktionerna med punktnotation på det nyss skapade objektet. Man bör försöka använda vanliga datatyper på parametrarna in till webservicefunktionerna liksom typen på själva funktionen. Att jobba med XML-objekt som parameter fungerar inte så bra då Access sätter egen datatyp på detta. Använd istället Arrayer.
Vinsten med att ansluta Access-program till webservice är att datatrafiken kan minskas då inga tunga filöverföringar behöver göras. Dessutom fås samordningsvinster eftersom man då kan jobba mot ett register som alltid är aktuellt.
För mitt projekt med ett verkstadsprogram uppnås stora vinster genom att man inte behöver ladda ner hela bilregistret med jämna mellanrum utan kan göra fordonssökningen direkt till webservicen. På samma sätt kan produkter och priser hämtas direkt från leverantörens centrala register istället för att ladda ner hela som sedan måste uppdateras.
Detta uppnåddes till en utvecklingskostnad som bara är en bråkdel av vad det skulle kosta att göra ett helt nytt .net-baserat program.