Op dit moment moet ik voor een klant van ons een koppelingsapplicatie schrijven die relatie en factuurgegevens uit AutoTask leest (Middels een goed gedocumenteerde webservice) en deze gegevens doorsturen naar AccountView. Ik had zelf nog geen ervaring met AccountView koppelingen maar na wat speurwerk ben ik ver gekomen. In overleg met de klant is gekozen voor een COM koppeling met XML berichten. Dit is overlegd met AccountView en dit is mogelijk. Tijdens de ontwikkeling hebben we eerst de XML berichten gemaakt. Deze hebben we getest met de import module van AccountView en deze werken.
Nu heb je binnen de AccountView COM classes de functie doxml(string xml). Deze wil ik gebruiken om de XML berichten in AccountView te verwerken. En hier gaat het fout. Mijn code ziet er als volgt uit:
Ik heb de AccountView COM server geregistreerd en het vinden van het type avwin.application gaat ook goed. Echter bij het aanmaken van een instantie gaat het fout. De volgende foutmelding krijg ik:
1. De DLL is niet goed geregistreerd. AccountView levert alleen een type library mee en deze hebben we omgezet naar een DLL met tlbimp.exe. Is dit voldoende?
2. De koppelingsapplicatie is 64 bits terwijl de COM objecten 32 bits zijn. Dit is niet het geval, de applicatie die ik geschreven heb is 32 bits.
AccountView wil geen support leveren omdat er eerst een 3 daagse cursus gevolgd moet worden. Ik heb al heel wat koppelingen geschreven in mijn leven alleen nog nooit met AccountView. Ik heb zelden zo'n slechte ondersteuning gekregen. Die cursus ga ik niet volgen en ik ben er van overtuigd dat er hier vast mensen zitten die al is met dit probleem te maken gehad hebben. Ik hoop dat jullie mij verder kunnen helpen.
Nu heb je binnen de AccountView COM classes de functie doxml(string xml). Deze wil ik gebruiken om de XML berichten in AccountView te verwerken. En hier gaat het fout. Mijn code ziet er als volgt uit:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| private string SendToAccountView(string xml) { try { Type avType = Type.GetTypeFromProgID("avwin.application"); if (avType != null) { object avObj = System.Activator.CreateInstance(avType); string response = (string)avType.InvokeMember("doxml", BindingFlags.InvokeMethod, null, avObj, new Object[] { xml }); XmlDocument doc = new XmlDocument(); doc.LoadXml(response); return doc.ToString(); } } catch (Exception e) { return e.Message.ToString(); } } |
Ik heb de AccountView COM server geregistreerd en het vinden van het type avwin.application gaat ook goed. Echter bij het aanmaken van een instantie gaat het fout. De volgende foutmelding krijg ik:
Wanneer ik op deze foutcode zoek worden er op internet een aantal mogelijkheden aangeboden als oplossing:Het ophalen van de COM-classfactory voor het onderdeel met CLSID {AF3FF4B3-E0EF-4187-B7A2-8F54CB092000} is mislukt vanwege de volgende fout: 80040154 Klasse is niet geregistreerd (Uitzondering van HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
1. De DLL is niet goed geregistreerd. AccountView levert alleen een type library mee en deze hebben we omgezet naar een DLL met tlbimp.exe. Is dit voldoende?
2. De koppelingsapplicatie is 64 bits terwijl de COM objecten 32 bits zijn. Dit is niet het geval, de applicatie die ik geschreven heb is 32 bits.
AccountView wil geen support leveren omdat er eerst een 3 daagse cursus gevolgd moet worden. Ik heb al heel wat koppelingen geschreven in mijn leven alleen nog nooit met AccountView. Ik heb zelden zo'n slechte ondersteuning gekregen. Die cursus ga ik niet volgen en ik ben er van overtuigd dat er hier vast mensen zitten die al is met dit probleem te maken gehad hebben. Ik hoop dat jullie mij verder kunnen helpen.