ADO Events with win32com

Paul Moore gustav at morpheus.demon.co.uk
Fri Jul 20 17:25:17 EDT 2001


I'm trying to get ADO events working with win32com, but I'm not getting
anywhere. The following is my test code:

-------------------------------------------------------------
import win32com.client

finished = 0

class ADOEvents:
    def OnConnectComplete(*args):
        print `args`
        finished = 1

def Test():
    # Conn = win32com.client.Dispatch("ADODB.Connection")
    Conn = win32com.client.DispatchWithEvents("ADODB.Connection", ADOEvents)
    ConnStr = "Provider=msdaora;Prompt=complete"
    Conn.Open(ConnStr, Options=16)
    while not finished:
        pass

if __name__ == '__main__':
    Test()
-------------------------------------------------------------

If I understand things correctly, this is about what is needed.

The problem is that this code immediately returns an error - 'Operation has been
cancelled by the user'. But I didn't! I didn't even get the chance, as the login
box did not appear.

If I comment out the DispatchWithEvents call, and replace it with a straight
Dispatch call, as on the line above, everything works as I want - the login box
appears (although clearly the event doesn't get fired, so I get an infinite
loop...)

Is there some reason that DispatchWithEvents isn't working correctly here?

Thanks for any insight,
Paul.



More information about the Python-list mailing list