#2309 closed Bug (Fixed)
ObjEvent on ADO.Connection not returning strings
Reported by: | danielcovington | Owned by: | Jon |
---|---|---|---|
Milestone: | 3.3.11.3 | Component: | AutoIt |
Version: | 3.3.8.1 | Severity: | None |
Keywords: | Cc: |
Description
I have Created an Event Handler for ADO.CONNECTION the functions do fire but the strings contain gibberish. The Long and Int return okay. I have looked up the interface and they should be returning Wstrings. I was told to submit this as a bug by trancexx .
Below is the Function prototype givin by PowerBasic COM browser.
WillConnect <6> (ByRef InOut ConnectionString As WString, ByRef InOut UserID As WString, ByRef InOut Password As _
WString, ByRef InOut Options As Long, ByRef InOut adStatus As Long, Byval pConnection As IntConnection)
#AutoIt3Wrapper_UseX64=n #include const $ConnInterface = "ConnectionEvents" $conn = ObjCreate("ADODB.Connection") $connEvent = ObjEvent($conn,"EVENTS_",$ConnInterface) if @error then Msgbox(0,"AutoIt COM Test", _ "ObjEvent: Can't use event interface '"& $ConnInterface &"'. Error code: " & hex(@error,8)) exit endif $conn.open ("Provider=SQLNCLI10;Server=ServerName;Database=Database;Uid=UID;pwd=pwd") $conn.close() Func EVENTS_ConnectComplete($ugh3,$ugh,$ugh1) MsgBox(0,"ADO EVENT","Connected to DataBase") EndFunc Func EVENTS_Disconnect($ugh4,$ugh5) MsgBox(0,"ADO EVENT","Disconnected from DataBase") endFunc Func EVENTS_WillConnect($ConnectionString,$val2,$val3,$val4,$val5,$val6) ConsoleWrite($ConnectionString&@CRLF&$val2&@CRLF&$val3&@CRLF&$val4&@CRLF&$val5&@CRLF&$val6&@CRLF) Msgbox(0,"Connection String",string($ConnectionString)) endFunc
Attachments (0)
Change History (5)
comment:1 Changed 12 years ago by trancexx
comment:2 Changed 11 years ago by Jon
- Resolution set to Rejected
- Status changed from new to closed
comment:3 Changed 11 years ago by Jpm
- Resolution Rejected deleted
- Status changed from closed to reopened
No sure what has really be fixed but now the script does not execute the line following $conn.open()
so I reopen it for diagnostic. I hope trancexx can do it. Many thanks for her.
Local $oMyError = ObjEvent("AutoIt.Error", "_ErrFunc") ; Initialize a COM error handler Const $ConnInterface = "ConnectionEvents" Local $conn = ObjCreate("ADODB.Connection") Local $connEvent = ObjEvent($conn, "EVENTS_", $ConnInterface) If @error Then MsgBox(0, "AutoIt COM Test", _ "ObjEvent: Can't use event interface '" & $ConnInterface & "'. Error code: " & Hex(@error, 8)) Exit EndIf Local $ret = $conn.open("Provider=SQLNCLI10;Server=ServerName;Database=Database;Uid=UID;pwd=pwd") ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret & @CRLF & '>Error code: ' & @error & ' Extended code: 0x' & Hex(@extended) & @CRLF) ;### Debug Console $conn.close() Func EVENTS_ConnectComplete($ugh3, $ugh, $ugh1) #forceref $ugh3, $ugh, $ugh1 MsgBox(0, "ADO EVENT", "Connected to DataBase") EndFunc ;==>EVENTS_ConnectComplete Func EVENTS_Disconnect($ugh4, $ugh5) #forceref $ugh4, $ugh5 MsgBox(0, "ADO EVENT", "Disconnected from DataBase") EndFunc ;==>EVENTS_Disconnect Func EVENTS_WillConnect($ConnectionString, $val2, $val3, $val4, $val5, $val6) ConsoleWrite("connectionstring="&$ConnectionString & @CRLF &"val2="& $val2 & @CRLF &"val3="& $val3 & @CRLF &"val4="& $val4 & @CRLF &"val5="& $val5 & @CRLF &"val6="& $val6 & @CRLF) MsgBox(0, "Connection String", String($ConnectionString)) EndFunc ;==>EVENTS_WillConnect Func _ErrFunc($oError) ; Do anything here. MsgBox(0, "AutoIt.Error", "err.number is: " & @TAB & $oError.number & @CRLF & _ "err.windescription:" & @TAB & $oError.windescription & @CRLF & _ "err.description is: " & @TAB & $oError.description & @CRLF & _ "err.source is: " & @TAB & $oError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _ "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _ "err.retcode is: " & @TAB & $oError.retcode & @CRLF & @CRLF) EndFunc ;==>_ErrFunc
comment:4 Changed 11 years ago by Jon
- Milestone set to 3.3.11.3
- Owner set to Jon
- Resolution set to Fixed
- Status changed from reopened to closed
Fixed by revision [9680] in version: 3.3.11.3
comment:5 Changed 11 years ago by Jon
Fixed by revision [9696] in version: 3.3.11.3
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
- In-depth discussions should take place on the forum.
For more information see the full version of the ticket guidelines here.
The issue was referenced by rev [7178]. That means the bug no longer exists. Unfortunatly this particular code example shows another issue with inability of internal string class to accept NULL pointers. That's why VARIANT to Variant function for VT_BSTR|VT_BYREF type must also check for possibly referenced NULL BSTR.
The other option is to finally allow NULL pointers for string class.