Snippets ( Combo )
(work in progress)
Example of a typical READ MODIFY WRITE cycle using SQLite, Array and Combo.
The code below creates a small SQLite database, queries the content, populates a Combo box, allows edit in the combo and then updates the SQLite db. Note that the SQLite rowid is stored in the array, but not displayed in the combo.
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.14.1
Author: kylomas
Edit: Skysnake
Script Function:
Example AutoIt script.
Read SQLite database to Array
Populate Combo with Array
Modify Combo data
Write to SQLite db
Note that the SQLite rowid is stored in the Array but not displayed in the combo
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
#include <array.au3>
#include <sqlite.au3>
#include <GuiComboBox.au3>
#AutoIt3Wrapper_Add_Constants=n
_SQLite_Startup()
_SQLite_Open("sql2combo.db3")
Local $sql, $aRows, $iCols, $iRows, $LastSelected
$sql = 'create table T1 (Fname, MI, Lname);'
$sql &= 'insert into T1 values("Thomas","R","Jones");'
$sql &= 'insert into T1 values("William","X","Smith");'
$sql &= 'insert into T1 values("James","T","Kirk");'
$sql &= 'insert into T1 values("Rastus","P","Badass");'
$sql &= 'insert into T1 values("John","R","Prince");'
$sql &= 'insert into T1 values("Harry","X","Jackson");'
$sql &= 'insert into T1 values("Dick","T","Mitchell");'
$sql &= 'insert into T1 values("Tom","P","Camden");'
_SQLite_Exec(-1, $sql)
Local $gui010 = GUICreate('SQLite _rowid_ Example')
GUICtrlCreateLabel('Middle Initial', 140, 15, 100, 20)
Local $cMI = GUICtrlCreateCombo('', 140, 30, 100, 50)
Local $dummyenter = GUICtrlCreateDummy()
GUICtrlCreateLabel('Hit [ENTER] to update DB entry', 110, 70, 200, 20)
_pop_combo()
GUISetState()
Local $aAcKeys[1][2] = [["{Enter}", $dummyenter]]
GUISetAccelerators($aAcKeys)
While 1
Switch GUIGetMsg()
Case $gui_event_close
Exit
Case $cMI
; add one to combo for SQL rowid
$LastSelected = _GUICtrlComboBox_GetCurSel($cMI)+1
ConsoleWrite("$LastSelected: " & $LastSelected & @CRLF)
;Local $showSelected=$LastSelected+1
Case $dummyenter
If $LastSelected = '' Then ContinueLoop
ConsoleWrite("SQL Row: " & $aRows[$LastSelected][0] & @CRLF)
_SQLite_Exec(-1, 'update T1 set MI = ' & _SQLite_FastEscape(GUICtrlRead($cMI)) & ' where _rowid_ = ' & $aRows[$LastSelected][0] & ';')
_pop_combo()
EndSwitch
WEnd
Func _pop_combo()
_SQLite_GetTable2d(-1, 'select _rowid_, MI, * from T1 order by MI limit 5', $aRows, $iRows, $iCols)
_arraydisplay($aRows)
ConsoleWrite(_ArrayToString($aRows) & @CRLF)
Local $str = '|'
For $i = 1 To UBound($aRows) - 1
$str &= $aRows[$i][1] & '|'
Next
GUICtrlSetData($cMI, $str, $aRows[1][1])
$LastSelected = ''
EndFunc ;==>_pop_combo