Hallo!
Dies ist mein erster "Test" mit SQLite, und da es gut funktioniert, hab ich mir gedacht das ihr auch mit meinen erfolg feiern dürft^^
Es ist eine telefon liste..
viel spaß damit!
Mfg Trallala
Edit: ups ... wo sind meine daten hin ?!
naja ich hänge sie einfach mal "wieder" mit ran.
Spoiler anzeigen
Opt("GUIOnEventMode", 0)
#NoTrayIcon
#include <GuiListView.au3>
#include <GUIConstants.au3>
#include "SQLite.au3"
$datei1 = @ScriptDir & "\kontakte.db"
$Form1 = GUICreate("Kontakte-Datenbank", 585, 420, 193, 115)
$raus = GUICtrlCreateButton("Beenden",510, 17, 68, 20)
$Tab1 = GUICtrlCreateTab(8, 16, 569, 321)
;
;--- Eingabe
$TabSheet1 = GUICtrlCreateTabItem("Neue Eingabe")
;Vorname
GUICtrlCreateLabel("Vorname:",16, 48, 80, 20)
$i_namev = GUICtrlCreateInput("",100, 48, 130, 20)
;Nachname
GUICtrlCreateLabel("Nachname:",16, 78, 80, 20)
$i_namen = GUICtrlCreateInput("",100, 78, 130, 20)
;Telefon
GUICtrlCreateLabel("Telefon:",16, 108, 80, 20)
$i_tel = GUICtrlCreateInput("",100, 108, 130, 20)
;E-Mail
GUICtrlCreateLabel("E-Mail:",16, 138, 80, 20)
$i_email = GUICtrlCreateInput("",100, 138, 130, 20)
$ok1 = GUICtrlCreateButton("Übernehmen",100, 168, 130, 20)
;
;--- Ausgabe
$TabSheet2 = GUICtrlCreateTabItem("Ausgabe")
$ListView1 = GUICtrlCreateListView("Nummer|Vorname|Nachname|Telefon|E-Mail", 16, 48, 553, 281)
GUICtrlCreateLabel("Gesamt: ",290, 20, 50, 20)
$gesamt = GUICtrlCreateLabel("",350, 20, 60, 20)
;
;--- Suche
$TabSheet3 = GUICtrlCreateTabItem("Suche")
$ListView2 = GUICtrlCreateListView("Nummer|Vorname|Nachname|Telefon|E-Mail", 16, 48, 553, 281,BitOR($LVS_EX_GRIDLINES,$LVS_EX_GRIDLINES))
GUICtrlCreateLabel("Suche nach: ",8, 350, 100, 20)
$was = GUICtrlCreateCombo ("Vorname", 110,345,80)
GUICtrlSetData($was,"Nachname|Telefon|E-Mail")
$s_input = GUICtrlCreateInput("",200, 345, 300, 20)
GUICtrlCreateLabel("Gefunden: ",290, 20, 50, 20)
$gefunden = GUICtrlCreateLabel("",350, 20, 60, 20)
$ok2 = GUICtrlCreateButton("Suchen",510, 345, 65, 20)
;
;--- Löche Eintrag
GUICtrlCreateLabel("Lösche Daten mit der Nummer: ",8, 380, 190, 20)
$l_input = GUICtrlCreateInput("",200, 375, 300, 20)
$ok3 = GUICtrlCreateButton("Löschen",510, 375, 65, 20)
GUICtrlSetState ($ok3, $GUI_DISABLE )
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Tab1
If GUICtrlread($Tab1) = 1 Then Ausgabe()
Case $ok1
Eingabe()
Case $ok2
If GUICtrlRead($was) = "Vorname" Then
$col = "namev"
EndIf
If GUICtrlRead($was) = "Nachname" Then
$col = "namen"
EndIf
If GUICtrlRead($was) = "Telefon" Then
$col = "tel"
EndIf
If GUICtrlRead($was) = "E-Mail" Then
$col = "email"
EndIf
suchen()
GUICtrlSetState ($ok3, $GUI_ENABLE )
case $ok3
Loeschen()
Case $raus
Exit
EndSwitch
WEnd
;
;--- Eingabe (neue Daten speichern)
Func Eingabe()
If GUICtrlRead($i_namev) <> "" Or GUICtrlRead($i_namen) <> "" Then
_DoSQL("INSERT INTO Kontakte (id, namev, namen, tel, email) VALUES (NULL, '" & GUICtrlRead($i_namev) & "', '" & GUICtrlRead($i_namen) & "', '" & GUICtrlRead($i_tel) & "', '" & GUICtrlRead($i_email) & "');", $datei1)
Else
MsgBox(64,"","Ohne Vor- oder Nachname macht" & @CRLF & "der Eintrag keinen Sinn!")
EndIf
EndFunc
;
;--- Ausgabe
Func Ausgabe()
_GUICtrlListViewDeleteAllItems($ListView1)
Local $kontakte1
$kontakte1 = _DoSQL("SELECT * FROM Kontakte;", $datei1)
For $i = 1 To $kontakte1[0][0]
$inhalt1 = $i & "|" & $kontakte1[$i][1] & "|" & $kontakte1[$i][2] & "|" & $kontakte1[$i][3] & "|" & $kontakte1[$i][4]
GUICtrlCreateListViewItem($inhalt1, $ListView1)
Next
GUICtrlSetData($gesamt,$i -1)
EndFunc
;
;--- Suche
Func Suchen()
_GUICtrlListViewDeleteAllItems($ListView2)
$kontakte2 = _DoSQL("SELECT * FROM Kontakte WHERE `" & $col & "` LIKE '%" & GUICtrlRead($s_input) & "%';", $datei1)
For $i = 1 To $kontakte2[0][0]
$inhalt2 = $kontakte2[$i][0] & "|" & $kontakte2[$i][1] & "|" & $kontakte2[$i][2] & "|" & $kontakte2[$i][3] & "|" & $kontakte2[$i][4]
GUICtrlCreateListViewItem($inhalt2, $ListView2)
Next
GUICtrlSetData($gefunden,$i -1)
If $i -1 < 1 then GUICtrlSetState ($ok3, $GUI_DISABLE )
EndFunc
;
Func Loeschen()
If GUICtrlRead($l_input) <> "" Then
If MsgBox(8192+4, "Löschen?", "Soll der Datensatz mit der Nummer " & GUICtrlRead($l_input) & " wirklich gelöscht werden?") = 6 Then _DoSQL("DELETE FROM Kontakte WHERE `id`='" & GUICtrlRead($l_input) & "';",$datei1)
EndIf
suchen()
EndFunc
;
;-- Neue Datenbank (data1.db)
Func Neu()
_DoSQL("CREATE TABLE Kontakte (id INTEGER PRIMARY KEY, namev varchar(20),namen varchar(20), tel varchar(20), email varchar(20));", $datei1)
EndFunc
;
; peethebee (Danke an jonk!)
Func _DoSQL($_SQL_Code, $cal_filename)
Dim $ret_array[250][15]
; Datenbank initialisieren und öffnen
_SQLite_Startup (@ScriptDir & "\sqlite3.dll")
If @error > 0 Then
MsgBoX(0, "Meldung", "SQLite-DLL konnte nicht geladen werden")
Return 0
EndIf
; hier kann man einen Standardpfad festlegen
$dbname = $cal_filename
_sqLiTe_opEn ($dbname)
If @error > 0 Then
MsgBoX(0, "Meldung", $dbname & " konnte nicht geöffnet werden (Rechte?, Datei in Benutzung?)")
Return 0
EndIf
Dim $hQuery, $aRow
$iTmp = _SQlite_Query (-1, $_SQL_Code, $hQuery)
If Not $iTmp = $SQLITE_OK Then
MsgBoX(0, "Meldung", "SQLite-Befehl verursachte einen Fehler: " & $_SQL_Code)
EndIf
$num_results = 0
While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
$num_results += 1
; Daten in Array kippen und dann zurückgeben (noch nicht getestet)
For $i = 0 To UBound($aRow) - 1
$ret_array[$num_results][$i] = $aRow[$i]
Next
WEnd
; Länge des Ergebnisses erfassen, Ergebnisse ab $ret_array[1]
$ret_array[0][0] = $num_results
$ret_array[0][1] = UBound($aRow)
$iTmp = _SQLite_Close ()
If Not $iTmp = $SQLITE_OK Then
MsgBoX(0, "Meldung", "Datenbank konnte nicht geschlossen werden.")
MsgBoX(0, "Meldung", "SQLite ErrCode: " & $iTmp)
MsgBoX(0, "Meldung", "SQLite ErrMsg: " & _SQLite_ErrMsg ())
Return 0
EndIf
_SQLite_Shutdown ()
Return $ret_array
EndFunc ;==>_DoSQL