Symptom
Using OLE to connect to the Quick Books CoreObjX70PB activex control and getting an error calling the Connect function.
Environment
PowerBuilder
Reproducing the Issue
The following code was used to connect to the CoreObjX70PB.QBConnection: The Connect function is where the error message was being thrown.
long ll_rtn stringls_reg = "" string ls_path = "C:\Temp" ls_path = "" string ls_app = "QBApp" integer li_mode = 2 string ls_text, ls_listID oleobject myole myole = create oleobject ll_rtn = myole.connecttonewobject("CoreObjX70PB.QBConnection") IF ll_rtn = 0 then ll_rtn = myole.Connect(ls_str , ls_app, li_mode, ls_reg) END IF
Cause
The error was due to the fact that this was a first time connection to the CoreObjX70PB.QBConnection object. The customer determined that Quick Books was set up to run as multiuser. They had to set it back to single user in order to connect.
See the "Resolution" section below to see how to get the actual error message being returned by the oleoject.
Solution
Do the following to get the actual error message from the oleobject:
1. Instead of using an oleobject variable create a PowerBuilder standard class non-visual object (nvo) of type oleobject:
2. Code a messagebox in the externalexception event of the nvo. Capture the resultcode and description of the externalexception event:
3. When the following code executes, the oleobject error from the externalexception event will display in the messagebox:
n_myole myole myole = create n_myole ll_rtn = myole.connecttonewobject("CoreObjX70PB.QBConnection") IF ll_rtn = 0 then ll_rtn = myole.Connect(ls_str , ls_app, li_mode, ls_reg) END IF