More About Transactions

You’ll want to add and edit individual transactions. This leads to more fundamental design considerations. You need to expose Transaction class as a COM server. You also need to think about how to create these transactions and manage their lifecycles and about the right choice of patterns. One option is to make a COMTransaction class the same way we did for COMBookset.

The overall goal is to make sure that code that works with transactions in VB is as similar as possible to the corresponding code in Python. The VB code to create and add a new transaction looks like this:

    Dim newtran As Object
    
    Set newtran = CreateObject("Doubletalk.Transaction")
    newtran.setDateString "31/12/99"
    newtran.setComment "Python on Windows Royalty Cheque"
    newtran.addLine "MyCo.Assets.NCA.CurAss.Cash", 5000
    newtran.addLastLine "MyCo.Capital.PL.Income.Writing"
    
    BookServer.Add newtran

There is another choice, however. Adding a factory method to BookServer gives a new transaction (outside of the BookSet but otherwise fully formed). In this case there is no need to register the class at all; it’s never created directly from the registry. Microsoft Office uses this model a lot. Most of the Excel objects are obtained from the application object’s factory methods and are not directly creatable. If you go this way, your VB code to add a transaction looks like this:

 Dim newtran As Object Set newtran = BookServer.CreateTransaction newtran.setDateString "31/3/2000" newtran.setComment "Even more ...

Get Python Programming On Win32 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.