#include #include #include #include #include #include #include #include $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") Local $unique = "SQL-Query-Tool" ;TO ALLOW ONLY ONE INSTANCE OF THE TOOL If WinExists($unique) Then MsgBox(0,'Duplicate Process', 'This script is already running....' & @CRLF & "If the window is not visible, terminate the process from Task Manager" & @CRLF & 'This instance will terminate after clicking OK') Exit EndIf AutoItWinSetTitle($unique) Local $fResized = False, $GUIs, $temp, $Qlist[0][3], $x, $selQ[2], $guics[4] Local $conName, $conStr, $conPW, $selC, $selConn, $sqlErr Local $fh Local $readme = "You may delete this entry if desired once other ." & @CRLF & _ "Although it is prefaced with 'zz' for sorting" & @CRLF & _ @CRLF & _ "-Select a Query from the drop-down" & @CRLF & _ "-Note: changing selection will not lose" & @CRLF & _ " changes made during this session" & @CRLF & _ "-Click Run Query to produce results" & @CRLF & _ @CRLF & _ "-Select from 'Query Options' to create new," & @CRLF & _ " edit name, save, and delete queries" & @CRLF & _ @CRLF & _ "-Click 'Connection Settings' to change" & @CRLF & _ " server settings" $conName = IniReadSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-Name") If @error = 1 Then DirCreate(@AppDataDir & "\SQL-Query-Tool\") IniWrite(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-Name", "1", "Connection_Name_Placeholder") IniWrite(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-String", "1", "Connection_String_Placeholder") IniWrite(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-Password", "1", "Connection_Password_Placeholder") EndIf $selConn = IniRead(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Selected", "Number", "Placeholder") If $selConn = "Placeholder" Then DirCreate(@AppDataDir & "\SQL-Query-Tool\") IniWrite(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Selected", "Number", "1") $selConn = 1 EndIf $temp = _FileListToArray(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\") If @error = 1 Or @error = 4 Then DirCreate(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\") FileWrite(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\zz_Readme.txt", $readme) $temp = _FileListToArray(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\") EndIf QueryLoad(False) $selQ[0] = $Qlist[1][0] Local $GUI = GUICreate("Simple SQL Query Tool", 260, 320, -1, -1, BitOR($WS_SIZEBOX,$WS_MINIMIZEBOX));, @DesktopWidth-275, @DesktopHeight-500) GUIRegisterMsg($WM_SIZE, 'MY_WM_SIZE') Local $querysel = GUICtrlCreateCombo("", 5, 5, 155, 25, $CBS_DROPDOWNLIST) GUICtrlSetData($querysel, $Qlist[0][1], $Qlist[1][0]) GUICtrlSetResizing(-1, 552) Local $queryopt = GUICtrlCreateCombo("Query Options", 165, 5, 90, 20, $CBS_DROPDOWNLIST) GUICtrlSetData($queryopt, "Save to File|New|Edit Name|Delete|Open Query Folder") GUICtrlSetResizing(-1, 552) Local $tab = GUICtrlCreateTab(5, 35, 235, 200) $qtab = GUICtrlCreateTabItem(" Query ") Local $query = GuiCtrlCreateEdit("", 10, 60, 240, 170) GUICtrlSetFont(-1, 9, 0, 0, "Lucida Console") GUICtrlSetData($query, $Qlist[1][1]) $rtab = GUICtrlCreateTabItem(" Results ") Local $result = GuiCtrlCreateEdit("", 10, 80, 240, 150) GUICtrlSetFont(-1, 9, 0, 0, "Lucida Console") Local $status = GUICtrlCreateLabel("Last Ran: None", 15, 62, 500) GUICtrlSetResizing(-1, 802) GUICtrlCreateTabItem("") Local $run = GUICtrlCreateButton("Run Query", 5, 270, 130, 25) GUICtrlSetResizing(-1, 584) Local $settings = GUICtrlCreateButton("Connection Settings", 140, 270, 115, 25) GUICtrlSetResizing(-1, 584) Local $consel = GUICtrlCreateCombo("", 5, 5, 390, 25, $CBS_DROPDOWNLIST) GUICtrlSetResizing(-1, 802) Local $newc = GUICtrlCreateButton("New", 400, 5, 40, 20) GUICtrlSetResizing(-1, 802) Local $edic = GUICtrlCreateButton("Edit", 445, 5, 40, 20) GUICtrlSetResizing(-1, 802) Local $delc = GUICtrlCreateButton("Delete", 490, 5, 40, 20) GUICtrlSetResizing(-1, 802) Local $test = GUICtrlCreateButton("Test Connection", 540, 5, 95, 20) GUICtrlSetResizing(-1, 802) Local $return = GUICtrlCreateButton("Return to Query", 640, 5, 95, 20) GUICtrlSetResizing(-1, 802) Local $divider = GUICtrlCreateLabel("",-5,30,760,3,BitOR($SS_SUNKEN,$WS_BORDER)) GUICtrlSetResizing(-1, 802) Local $cnamel = GUICtrlCreateLabel("Connection Name:", 15, 45) GUICtrlSetResizing(-1, 802) Local $cname = GUICtrlCreateInput("", 110, 41, 200, 20) GUICtrlSetResizing(-1, 802) Local $cstringl = GUICtrlCreateLabel(" Connection String" & @CRLF & _ "Replace your password with *PW*. For example:" & @CRLF & _ "Provider=ASEOLEDB;User ID=-USERID-;Password=*PW*;Data Source=-SERVER-:-PORT-;Initial Catalog=-DatabaseName-" & @CRLF & _ "If you need assistance with your specific connection string try using: https://www.connectionstrings.com/", 5, 70, 740, 60) GUICtrlSetResizing(-1, 802) Local $cstring = GUICtrlCreateInput("", 10, 125, 725, 20) GUICtrlSetResizing(-1, 802) Local $pwl = GUICtrlCreateLabel("Password:", 10, 165) GUICtrlSetResizing(-1, 802) Local $pw = GUICtrlCreateInput("", 65, 161, 340, 20, BitOR($ES_PASSWORD, $ES_AUTOHSCROLL)) GUICtrlSetResizing(-1, 802) Local $savc = GUICtrlCreateButton("Save", 480, 161, 100, 20) GUICtrlSetResizing(-1, 802) Local $canc = GUICtrlCreateButton("Cancel", 600, 161, 100, 20) GUICtrlSetResizing(-1, 802) Guimod("SETTINGS", $GUI_HIDE+1) GuiMod('SETTINGS-ENTRY', $GUI_DISABLE) $selC = $selConn GuiMod('RELOAD-CON') Local $hSelAll = GUICtrlCreateDummy() Dim $AccelKeys[1][2] = [["^a", $hSelAll]] GUISetAccelerators($AccelKeys, $GUI) GUISetState(@SW_SHOW) Local $nMsg While 1 $nMsg = GUIGetMsg() Switch $nMsg ;Checks if a button has been pressed Case $querysel $selQ[1] = GUICtrlRead($querysel) If $selQ[0] <> $selQ[1] Then QuerySelect() GUICtrlSetState($qtab, $GUI_SHOW) Case $queryopt Switch GUICtrlRead($queryopt) Case "Save to File" $fh = FileOpen(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\" & GuiCtrlRead($querysel) & ".txt", 2) FileWrite($fh, GuiCtrlRead($query)) $Qlist[_ArraySearch($Qlist, GuiCtrlRead($querysel), 0, 0, 0, 0, 1, 0)][1] = GuiCtrlRead($query) $Qlist[_ArraySearch($Qlist, GuiCtrlRead($querysel), 0, 0, 0, 0, 1, 0)][2] = False GUICtrlSetData($qtab, " Query ") Case "New" $temp = InputBox("New Query Name","Enter a name for your new query." & @CRLF & "Please be aware only letters, numbers, underscores, and spaces are allowed." & @CRLF & "Symbols will be removed.", "", "", Default, Default, Default, Default, 0, $GUI) $temp = StringRegExpReplace($temp, "[^A-Za-z0-9 _]", "") If $temp <> "" And _ArraySearch($Qlist, $temp, 0, 0, 0, 0, 1, 0) = -1 Then FileWriteLine(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\" & $temp & ".txt", "--First Line Placeholder") QueryLoad() GUICtrlSetData($querysel, "") GUICtrlSetData($querysel, $QList[0][1], $temp) $selQ[1] = GUICtrlRead($querysel) If $selQ[0] <> $selQ[1] Then QuerySelect() Else MsgBox(0,'Invalid Input','Invalid name entered. (Symbols and Duplicate Names are not allowed)', 0, $GUI) EndIf Case "Edit Name" $temp = InputBox("Edit Query name","Enter a new name for your query." & @CRLF & "Please be aware only letters, numbers, underscores, and spaces are allowed." & @CRLF & "Symbols will be removed.", GuiCtrlRead($querysel)) $temp = StringRegExpReplace($temp, "[^A-Za-z0-9 _]", "") If $temp <> "" And _ArraySearch($Qlist, $temp, 0, 0, 0, 0, 1, 0) = -1 Then FileMove(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\" & GuiCtrlRead($querysel) & ".txt", @AppDataDir & "\SQL-Query-Tool\Saved-Queries\" & $temp & ".txt") $selQ[0] = $temp QueryLoad() GUICtrlSetData($querysel, "") GUICtrlSetData($querysel, $QList[0][1], $temp) $selQ[1] = GUICtrlRead($querysel) If $selQ[0] <> $selQ[1] Then QuerySelect() Else MsgBox(0,'Invalid Input','Invalid name entered. (Symbols and Duplicate Names are not allowed)', 0, $GUI) EndIf Case "Delete" If UBound($Qlist) = 2 Then MsgBox(0,'Deletion Error','You may not delete the only saved query', 0, $GUI) Else If MsgBox(4, 'Confirm Deletion', "Are you sure you want to delete the query named: " & @CRLF & GUICtrlRead($querysel), 0, $GUI) = 6 Then FileDelete(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\" & GuiCtrlRead($querysel) & ".txt") QueryLoad() GUICtrlSetData($querysel, "") GUICtrlSetData($querysel, $QList[0][1], $Qlist[1][0]) $selQ[1] = GUICtrlRead($querysel) $selQ[0] = $selQ[1] GUICtrlSetData($query, $Qlist[1][1]) EndIf EndIf Case "Open Query Folder" ShellExecute(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\") EndSwitch GUICtrlSetData($queryopt, 'Query Options', 'Query Options') Case $run GuiMod("RUNNING", $GUI_DISABLE) ToolTip("Executing SQL query, please wait...") $sqlCon = ObjCreate("ADODB.Connection") $sqlCon.Mode = 16 ; shared $sqlCon.CursorLocation = 3 ; client side cursor Local $connString = StringReplace(GuiCtrlRead($cstring), "*PW*", GuiCtrlRead($pw)) $sqlCon.Open($connString) If @error Then MsgBox(0, "Fail", "Failed to connect to the database") Else $sqlCon.CommandTimeout = 60 GUICtrlSetData($result, ProcessQuery(GuiCtrlRead($query))) GUICtrlSetState($rtab , $GUI_SHOW) GuiCtrlSetData($status, "Last Ran: " & GuiCtrlRead($querysel) & " - " & StringRight(_NowCalc(), 8)) EndIf ToolTip("") GuiMod("RUNNING", $GUI_ENABLE) Case $settings ToolTip("Loading...") $selC = $selConn GuiMod('MAIN', $GUI_HIDE) GuiMod('RELOAD-CON') GuiMod('SETTINGS', $GUI_SHOW) ToolTip("") Case $consel If GUICtrlRead($consel) <> $selC Then $selC = _ArraySearch($conName, GUICtrlRead($consel), 0, 0, 0, 0, 1, 1) GUICtrlSetData($cname, $conName[$selC][1]) GUICtrlSetData($cString, $conStr[$selC][1]) GUICtrlSetData($pw, StringEncrypt(False, $conPW[$selC][1])) $selC = GUICtrlRead($consel) EndIf Case $newc GuiMod('SETTINGS-SELECT', $GUI_DISABLE) GuiMod('SETTINGS-ENTRY', $GUI_ENABLE) GuiCtrlSetData($consel, '*New-Connection-Entry*', '*New-Connection-Entry*') GuiCtrlSetData($cname, '') GuiCtrlSetData($cString, '') GuiCtrlSetData($pw, '') $selC = -1 Case $edic GuiMod('SETTINGS-SELECT', $GUI_DISABLE) GuiMod('SETTINGS-ENTRY', $GUI_ENABLE) $selC = GUICtrlRead($consel) _ArrayDisplay($conName, "2") $selC = _ArraySearch($conName, $selC, 0, 0, 0, 0, 1, 1) GuiCtrlSetData($cname, $conName[$selC][1]) $conName[$selC][1] &= "*" GuiCtrlSetData($cString, $conStr[$selC][1]) GuiCtrlSetData($pw, StringEncrypt(False, $conPW[$selC][1])) Case $delc If UBound($conName) = 2 Then MsgBox(0,'Error','You can not delete the only connection setting.', 0, $GUI) Else $selC = GuiCtrlRead($consel) If MsgBox(4, 'Confirm Deletion', 'Are you sure you want to delete the connection: ' & $selC, 0, $GUI) = 6 Then ToolTip('Loading...') $selC = _ArraySearch($conName, $selC, 0, 0, 0, 0, 1, 1) $conName[$selC][1] = '*!*BLANK*!*' $conStr[$selC][1] = '*!*BLANK*!*' $conPW[$selC][1] = '*!*BLANK*!*' IniWriteSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-Name", $conName) IniWriteSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-String", $conStr) IniWriteSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-Password", $conPW) GuiMod('RELOAD-CON') ToolTip('') EndIf EndIf Case $savc If GuiCtrlRead($cname) = "" Or _ArraySearch($conName, GuiCtrlRead($cname), 0, 0, 0, 0, 1, 1) > -1 Then MsgBox(0,'Invalid Input',"You can't have a blank connection name or two connections with the same name", 0, $GUI) Else ToolTip("Loading...") If $selC = -1 Then For $i = 1 To UBound($conName)-1 If $conName[$i][1] = '*!*BLANK*!*' Then $selC = $i $conName[$i][1] = GuiCtrlRead($cname) $conStr[$i][1] = GuiCtrlRead($cstring) $conPW[$i][1] = StringEncrypt(True, GuiCtrlRead($pw)) ExitLoop ElseIf $i = UBound($conName)-1 Then $selC = UBound($conName) _ArrayAdd($conName, UBound($conName) & "|" & GuiCtrlRead($cname)) _ArrayAdd($conStr, UBound($conStr) & "|" & GuiCtrlRead($cstring)) _ArrayAdd($conPW, UBound($conPW) & "|" & StringEncrypt(True, GuiCtrlRead($pw))) EndIf Next Else $conName[$selC][1] = GuiCtrlRead($cname) $conStr[$selC][1] = GuiCtrlRead($cstring) $conPW[$selC][1] = StringEncrypt(True, GuiCtrlRead($pw)) EndIf IniWriteSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-Name", $conName) IniWriteSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-String", $conStr) IniWriteSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-Password", $conPW) GuiMod('SETTINGS-SELECT', $GUI_ENABLE) GuiMod('SETTINGS-ENTRY', $GUI_DISABLE) GuiMod('RELOAD-CON') ToolTip('') EndIf Case $canc ToolTip("Loading...") GuiMod('SETTINGS-SELECT', $GUI_ENABLE) GuiMod('SETTINGS-ENTRY', $GUI_DISABLE) GuiMod('RELOAD-CON') ToolTip('') Case $test $sqlCon = ObjCreate("ADODB.Connection") $sqlCon.Mode = 16 ; shared $sqlCon.CursorLocation = 3 ; client side cursor Local $connString = StringReplace(GuiCtrlRead($cstring), "*PW*", GuiCtrlRead($pw)) $sqlCon.Open($connString) If @error Then MsgBox(0, "Fail", "Failed to connect to the database") Else MsgBox(0, "Success", "Successfully connected to the database") EndIf Case $return $selConn = _ArraySearch($conName, $selC, 0, 0, 0, 0, 1, 1) IniWrite(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Selected", "Number", $selConn) GuiMod('SETTINGS', $GUI_HIDE) GuiMod('MAIN', $GUI_SHOW) Case $hSelAll _SelectAllTextInEdit() Case $GUI_EVENT_CLOSE Exit EndSwitch If $fResized Then GuiMod('RESIZE') $fResized = False EndIf If $guics[0] = True Then _Input_Check($cname) WEnd Func QuerySelect() Local $oldp = _ArraySearch($Qlist, $selQ[0], 0, 0, 0, 0, 1, 0) Local $old = GuiCtrlRead($query) If $Qlist[$oldp][1] <> $old Then $Qlist[$oldp][1] = $old $Qlist[$oldp][2] = True EndIf Local $newp = _ArraySearch($Qlist, $selQ[1], 0, 0, 0, 0, 1, 0) GUICtrlSetData($query, $Qlist[$newp][1]) $selQ[0] = $selQ[1] If $Qlist[$newp][2] = False Then GUICtrlSetData($qtab, " Query ") Else GUICtrlSetData($qtab, " Query (unsaved) ") EndIf EndFunc Func QueryLoad($reload = True) Local $qFiles = _FileListToArray(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\") Local $tQlist[UBound($qFiles)][3] Local $selT $tQlist[0][0] = $qFiles[0] $tQlist[0][1] = "" For $i = 1 To $tQlist[0][0] $tQlist[$i][0] = StringTrimRight($qFiles[$i], 4) If $reload Then $selT = _ArraySearch($Qlist, $tQlist[$i][0], 0, 0, 0, 0, 1, 0) If $selT > -1 Then $tQlist[$i][1] = $Qlist[$selT][1] $tQlist[$i][2] = $Qlist[$selT][2] Else $tQlist[$i][1] = FileRead(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\" & $qFiles[$i]) $tQlist[$i][2] = False EndIf Else $tQlist[$i][1] = FileRead(@AppDataDir & "\SQL-Query-Tool\Saved-Queries\" & $qFiles[$i]) $tQlist[$i][2] = False EndIf $tQlist[0][1] &= StringTrimRight($qFiles[$i], 4) If $i < $tQlist[0][0] Then $tQlist[0][1] &= "|" Next $Qlist = $tQlist EndFunc Func ProcessQuery($input) Local $resultO = $sqlCon.Execute($input) If Not @error Then Local $resultT = "" Local $recordE = 0 Local $resultA[2][0] Local $i, $z While $recordE = 0 and IsObj($resultO) Redim $resultA[2][0] For $oField In $resultO.Fields Redim $resultA[2][UBound($resultA, 2)+1] $resultA[1][UBound($resultA, 2)-1] = $oField.Name Next ReDim $resultA[UBound($resultA)+1][UBound($resultA, 2)] While Not $resultO.EOF ReDim $resultA[UBound($resultA)+1][UBound($resultA, 2)] $i = 0 For $oField in $resultO.Fields $resultA[UBound($resultA)-1][$i] = StringStripWS(StringStripWS($oField.Value, 1), 2) $i += 1 Next $resultO.MoveNext WEnd For $i = 0 To UBound($resultA, 2)-1 $z = 0 For $x = 1 To UBound($resultA)-1 If StringLen($resultA[$x][$i]) > $z Then $z = StringLen($resultA[$x][$i]) Next $resultA[0][$i] = $z Next For $i = 0 To UBound($resultA, 2)-1 $z = "" For $x = 1 To $resultA[0][$i] + 4 $z &= "-" Next $resultA[2][$i] = $z Next For $x = 1 To UBound($resultA)-1 For $i = 0 To UBound($resultA, 2)-1 $resultT &= $resultA[$x][$i] For $z = StringLen($resultA[$x][$i]) To $resultA[0][$i] + 4 $resultT &= " " Next Next $resultT &= @CRLF Next $resultT &= @CRLF & "Total Lines Returned: " & UBound($resultA)-3 & @CRLF $resultT &= "__________________________________________________________" & @CRLF & @CRLF & @CRLF $resultO = $resultO.NextRecordset $recordE = @error WEnd $resultO.Close Else Local $resultT = $sqlErr EndIf Return $resultT EndFunc Func GuiMod($action, $toggle = 0) Switch $action Case 'RESIZE' If ($GUIs[2] < 266 or $GUIs[3] < 306) And $guics[0] = False Then WinMove($GUI, '', $GUIs[0], $GUIs[1], 276, 336) GUICtrlSetPos($tab, 5, 35, $GUIs[2] - 25, $GUIs[3] - 106) GUICtrlSetPos($query, 10, 60, $GUIs[2] - 36, $GUIs[3] - 136) GUICtrlSetPos($result, 10, 80, $GUIs[2] - 36, $GUIs[3] - 156) GUICtrlSetPos($result, 10, 80) Case 'MAIN' GUICtrlSetState($querysel, $toggle) GUICtrlSetState($queryopt, $toggle) GUICtrlSetState($tab, $toggle) GUICtrlSetState($query, $toggle) GUICtrlSetState($result, $toggle) GUICtrlSetState($status, $toggle) GUICtrlSetState($run, $toggle) GUICtrlSetState($settings, $toggle) Case 'SETTINGS' If $toggle = $GUI_SHOW Then GUISetStyle(BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_SYSMENU)) $GUIs = WinGetPos($GUI) $guics[0] = True $guics[1] = $GUIs[2] $guics[2] = $GUIs[3] $guics[3] = $GUIs[0] WinMove($GUI, '', 25, $GUIs[1], 750, 221) ElseIf $toggle = $GUI_HIDE Then GUISetStyle(BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_SYSMENU, $WS_SIZEBOX)) $guics[0] = False WinMove($GUI, '', $guics[3], Default, $guics[1], $guics[2]) ElseIf $toggle = $GUI_HIDE+1 Then $toggle -= 1 EndIf GUICtrlSetState($consel, $toggle) GUICtrlSetState($newc, $toggle) GUICtrlSetState($edic, $toggle) GUICtrlSetState($delc, $toggle) GUICtrlSetState($test, $toggle) GUICtrlSetState($return, $toggle) GUICtrlSetState($divider, $toggle) GUICtrlSetState($cnamel, $toggle) GUICtrlSetState($cname, $toggle) GUICtrlSetState($cstringl, $toggle) GUICtrlSetState($cstring, $toggle) GUICtrlSetState($pwl, $toggle) GUICtrlSetState($pw, $toggle) GUICtrlSetState($savc, $toggle) GUICtrlSetState($canc, $toggle) Case 'SETTINGS-SELECT' GUICtrlSetState($consel, $toggle) GUICtrlSetState($newc, $toggle) GUICtrlSetState($edic, $toggle) GUICtrlSetState($delc, $toggle) GUICtrlSetState($test, $toggle) GUICtrlSetState($return, $toggle) Case 'SETTINGS-ENTRY' GUICtrlSetState($cnamel, $toggle) GUICtrlSetState($cname, $toggle) GUICtrlSetState($cstringl, $toggle) GUICtrlSetState($cstring, $toggle) GUICtrlSetState($pwl, $toggle) GUICtrlSetState($pw, $toggle) GUICtrlSetState($savc, $toggle) GUICtrlSetState($canc, $toggle) Case 'RUNNING' GUICtrlSetState($querysel, $toggle) GUICtrlSetState($queryopt, $toggle) GUICtrlSetState($query, $toggle) GUICtrlSetState($tab, $toggle) GUICtrlSetState($result, $toggle) GUICtrlSetState($run, $toggle) GUICtrlSetState($settings, $toggle) Case 'RELOAD-CON' $conName = IniReadSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-Name") $conStr = IniReadSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-String") $conPW = IniReadSection(@AppDataDir & "\SQL-Query-Tool\settings.ini", "Connection-Password") Local $sC = $conName _ArraySort($sC, 0, 1, 0, 1) GUICtrlSetData($consel, "") If $conName[$selC][1] <> "*!*BLANK*!*" Then GuiCtrlSetData($cname, $conName[$selC][1]) GuiCtrlSetData($cString, $conStr[$selC][1]) GuiCtrlSetData($pw, StringEncrypt(False, $conPW[$selC][1])) $selC = $conName[$selC][1] Else For $i = 1 To UBound($sC)-1 If $sC[$i][1] <> '*!*BLANK*!*' Then GuiCtrlSetData($cname, $sC[$i][1]) GuiCtrlSetData($cString, $conStr[$sC[$i][0]][1]) GuiCtrlSetData($pw, StringEncrypt(False, $conPW[$sC[$i][0]][1])) $selC = $sC[$i][1] ExitLoop EndIf Next EndIf For $i = 1 To UBound($sC)-1 If $sC[$i][1] <> '*!*BLANK*!*' Then GUICtrlSetData($consel, $sC[$i][1], $selC) Next EndSwitch EndFunc Func MY_WM_SIZE($hWnd, $Msg, $wParam, $lParam) $GUIs = WinGetPos($GUI) $fResized = True Return $GUI_RUNDEFMSG EndFunc ;==>MY_WM_SIZE Func StringEncrypt($bEncrypt, $sData, $sPassword = 'SQL') If $sData = "" Then Return '' _Crypt_Startup() ; Start the Crypt library. Local $sReturn = '' If $bEncrypt Then ; If the flag is set to True then encrypt, otherwise decrypt. $sReturn = _Crypt_EncryptData($sData, $sPassword, $CALG_RC4) Else $sReturn = BinaryToString(_Crypt_DecryptData($sData, $sPassword, $CALG_RC4)) EndIf _Crypt_Shutdown() ; Shutdown the Crypt library. Return $sReturn EndFunc ;==>StringEncrypt Func _Input_Check($hInput) Local $sText = GUICtrlRead($hInput) If StringRegExp($sText, "[^A-Za-z0-9 _]") Then GUICtrlSetData($hInput, StringRegExpReplace($sText, "[^A-Za-z0-9 _]", "")) EndFunc Func _SelectAllTextInEdit();will make select all text in any focused edit Local $theHandle = _WinAPI_GetFocus() Local $TheClass = _WinAPI_GetClassName($theHandle) If $TheClass = 'Edit' Then _GUICtrlEdit_SetSel($theHandle, 0, -1) EndFunc Func MyErrFunc() $HexNumber=hex($oMyError.number,8) $sqlErr = "We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & $HexNumber & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext SetError(1) ; to check for after this function returns Endfunc