By
Aphotic
Hey Guys,
I've been using AutoIT for about 3 years now, lurking the forums, scouring documentation, and creating things relevant to my job function.
I work entry level IT and utilizing AutoIT has earned me much respect in the workplace. I made my first application on the level of sharing with the community that has no relevance to my company other than the data that is used with it.
Our tech's were using development software to make simple pre-written queries. I was made aware of the process in order to assist in automating it. We found that the software they were using was being sunset in our environment so they'd need a replacement; and upon me realizing that they only needed a simple query tool, decided to 'homegrow' a simple app and save some hefty licensing fees.
I built in some versatility to the SQL database you can connect to but it is only tested working with a Sybase 15 system (note the example connection string).
I'd love to hear some suggestions and critique. I'm sure there are some editing functionalities that I could implement into the query edit box that I haven't bothered looking at. (other than CTRA+A to select all)
Thanks guys!
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <GuiListView.au3>
#include <File.au3>
#include <Crypt.au3>
#include <Date.au3>
$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