Commence scripting: API

Tip:

Dit onderwerp is voor zeer gevorderde gebruikers van Commence; daarnaast is programmeerkennis vereist.

Commence is via de API (Application Programming Interface) te benaderen als COM object. Dat betekent dat je vanuit elke programmeertaal die met COM overweg kan, gegevens in Commence kunt benaderen. Commence 4.1 of hoger is vereist. Commence kent al sinds mensenheugenis een DDE interface, maar deze is, hoewel qua functionaliteit uitgebreider dan de API, aanmerkelijk trager. Vanaf Commence RM is de DDE interface ook beschikbaar via de API, waarmee de API een aanmerkelijk groter arsenaal aan mogelijkheden biedt, ook voor applicaties/talen (VBS!) die geen DDE ondersteunen.

Een overzicht van de API is te vinden in het dbapi.hlp bestand dat te vinden is in de programma-directory in Commence. Dit document is gortdroog, en gericht op C programmeurs, maar niettemin zeer waardevol. Er is daarnaast zeer weinig documentatie over hoe Commence aan te spreken via de API. Een 'must-read' is het document 'Of cursors and rowsets'. Dit document, dboa.doc, is beschikbaar op de website van Commence Corporation. Een zeer actieve gebruikersgroep van Commence is actief op de news-site van Michael Gauthier van Freedomcomputing in Canada, te bereiken op news://mail.freedomcomputing.com. Als er één plek is om vragen te stellen, dan is het wel daar. Voor mensen die SQL of soortgelijke database interfaces gewend zijn via meer standaard interfaces als ODBC, en DAO of ADO, zal het Commence object model op het eerste gezicht hoogst-eigenaardig lijken; het vergt absoluut enige oefening om er in thuis te raken. Commence is nu eenmaal een eigenwijs product. Eén van de belangrijkste verschillen is dat je niet hoeft in te loggen, en dat je niet uit meerdere tabellen tegelijk gegevens kunt pakken.

Zonder de 'normale' gebruiker van Commence tegen het hoofd te willen stoten, is het benaderen van Commence via API slechts voor weinigen weggelegd. Ik ga er daarom dan ook niet uitgebreid op in. Ik zal een aantal voorbeelden schetsen van situaties waarin het handig kan zijn, en ik zal kort enkele voorbeelden geven van hoe de interface aan te spreken in enkele programmeertalen.

Wanneer gebruik je de API?

Hoe spreek ik Commence aan? Ik ga uit van een variabele 'cmc' om de Commence database aan te spreken.

Vanuit een detail form script in Commence zelf (VBScript):

Merk een belangrijk ding op: wanneer je Commence via de API aanspreekt, heb je -helaas- geen controle over welke database je aanspreekt. Standaard zal dit de open database zijn, of, als Commence niet actief is, de laatst geopende database. Alleen in Form scripts zoals in bovenstaand voorbeeld kun je er zeker van zijn dat het de op dat moment actieve database is waarmee je te maken hebt. In alle andere situaties raad ik je aan om de actieve databasenaam te evalueren, of beter nog, het aantal actieve 'instances' van Commence te tellen en de gebruiker erop te wijzen als er meerdere zijn, alvorens je een bewerking via de API doet.

Vanuit VB (en VBScript en VBA, en ASP in combi met VBScript). Omdat VBS vanuit de Windows Scripting Host beschikbaar is, zal dat, samen met VBA, de meest gebruikte taal zijn om met Commence te communiceren

Vanuit JScript (N.B. JScript is *niet hetzelfde* JavaScript, en werkt alleen in IE)

Vanuit PHP (vanaf versie 4)

Vanuit Python (win32com extensies vereist)

Deze lijst beperkt zich tot (programmeer/script-)talen die ik zelf heb gebruikt - er zijn veel meer talen waarmee je met Commence kunt praten, zoals C, C++, Delphi, Java, C#, Tcl/Tk, Perl, enzovoort.

Een uitgebreid voorbeeld van hoe Commence gegevens aan te spreken via VBS kun je hier vinden.


<< terug  |  index