#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <GuiListView.au3>
#include <GuiStatusBar.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <Forms\frmMain.isf>

Global $hDB

; Datenbank öffnen
_OpenDB()

; GUI anzeigen
GUISetState(@SW_SHOW, $frmMain)

; Reg.Sortierfunktion
_GUICtrlListView_RegisterSortCallBack(GUICtrlGetHandle($lstDebitoren))

While 1
	$nMsg = GUIGetMsg()
	
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			; Schliesse Datenbank
			_CloseDB()
			; Unreg.Sortierfunktion
			_GUICtrlListView_UnRegisterSortCallBack(GUICtrlGetHandle($lstDebitoren))
			Exit
		Case $cmdKundensuche
			; Wurde etwas in die Suchbox eingegeben?
			If StringLen(GUICtrlRead($txtKundensuche)) > 0 Then
				; Fülle lstDebitoren
				_GetCustomer(GUICtrlRead($txtKundensuche))
				; Eintrag in Suchfeld zurücksetzen	
				GUICtrlSetData($txtKundensuche, "")
			Else
				; Meldung, wenn kein Suchtext eingegeben wurde
				MsgBox(64,"No data", "Bitte geben Sie einen Suchtext ein.")					
			EndIf
		Case $lstDebitoren
			; angeklickte Spalte sortieren
			_GUICtrlListView_SortItems(GUICtrlGetHandle($lstDebitoren), GUICtrlGetState($lstDebitoren))
	EndSwitch
WEnd

Func _OpenDB()
	; SQLite-DB aus EXE auf PC kopieren
	FileInstall(".\Equipments.sqlite", ".\Equipments.sqlite", 1)
	; SQLite starten
	_SQLite_StartUp()
	; Datenbank öffnen
	$hDB = _SQLite_Open("Equipments.sqlite")
	If @error Then
		MsgBox(16, "SQLite Fehler", "Kann die Datenbank nicht öffnen!")
		Exit -1
	EndIf
EndFunc

Func _CloseDB()
	; Datenbank schliessen
	_SQLite_Close($hDB)
	; SQLite beenden
	_SQLite_Shutdown()
	; Datenbank löschen
	;If FileExists(".\Equipments.sqlite") Then FileDelete(".\Equipments.sqlite" )
EndFunc

Func _GetCustomer($sSuchtext)
	Local $DB_Return, $sWhere, $sSQL, $iRows, $iColumns
		
	; SQL-String zusammensetzen
	If $sSuchtext <> "" Then
		$sWhere = "DebNr LIKE '%" & $sSuchtext & "%' OR DebName LIKE '%" & $sSuchtext & "%' OR DebStrasse LIKE '%" & $sSuchtext & "%' OR DebPlz LIKE '%" & $sSuchtext & "%' OR DebOrt LIKE '%" & $sSuchtext & "%'"
		$sSQL = "SELECT * FROM tblDebitoren WHERE " & $sWhere & " ORDER BY DebStrasse"
	EndIf
	
	; Leere lstDebitoren + lstEquipments
	_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($lstDebitoren))
	_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($lstEquipments))

	; SQLite DB abfragen und Ergebnis in Array und dannn in lstDebitoren schreiben
    If _SQLite_GetTable2d (-1, $sSQL, $DB_Return, $iRows, $iColumns) = $SQLITE_OK Then
        ; Array löschen
		_ArrayDelete($DB_Return, 0)
		; Array erzeugen und lstDebitoren füllen
        _GUICtrlListView_AddArray($lstDebitoren, $DB_Return)
		; Control einblenden & Schreiben [Suchtext] + [Anzahl Records]
		GUICtrlSetState($lblDebitorenErgebnis, $GUI_SHOW)
		GUICtrlSetData($lblDebitorenErgebnis, "Der Suchtext:  '" & $sSuchtext   & "'  lieferte " & Ubound($DB_Return) & " TREFFER...")
    EndIf	
EndFunc	  ;==>_GetCustomer