Artikel-ID und Artikel sind immer die selben, Änderungen gibt es nur bei Eingang, Ausgang und Bestand!
Beiträge von RR04
-
-
Einige Anpassungen sind hinzugekommen.
-
Alinas_SQLite_BuchVw ist ein AutoIt-Listview, neben Editfeld und Gui eine weitere Möglichkeit seine Datenbankinhalte zu präsentieren. Also eine Sichtweise, die uns aus Officeprogrammen geläufig ist, die nun mit der Funktionalität von relationalen Datenbanken einhergeht.
In diesem Anwendungsbeispiel handelt es sich um eine Datenbank mit einer einzelnen Tabelle, in der eine Büchersammlung verwaltet werden soll. Beim Start der Sammlung soll die Tabelle der Datenbank einige Eckdaten aufnehmen, z.B. ID, Titel, Autor, Erscheinungsdatum und die ISBN.
Das Datum –
Mit dem SQL-Befehl “SELECT date(‘now’);” wird nicht nur das aktuelle Datum angezeigt, sondern auch das SQLite interne Datumsformat (YYYY-MM-DD), das in diesem Fall verwendet wird.Die Bedienung
ist denkbar einfach und schnell erklärt. Nach dem Start des Programms wird die DB mit “DB laden” geladen.
Die Suche funktioniert so, den Suchbegriff eingeben und im Combofeld hier “Titel” voreingestellt eine Auswahl treffen. Nach dem Klick auf “Suche starten” erscheint die Ausgabe im ListView. Zur DB zurück mit “DB laden”.Um einen einzelnen Datensatz zu bearbeiten, wechselt man in den Bearbeitungsmodus. Bei einem Rechtsklick auf den jeweiligen Datensatz wird dieser in die Eingabefelder eingefügt und man kann prüfen, ob man eventuell in der Zeile verrutscht ist. Hier können die Datensätze auch eingegeben, geändert oder gelöscht werden. Bevor es losgeht aber erst einmal ein Backup mit “DB BackUp”, nun erhält man eine Txt-Datei, die auch von einem Officeprogramm eingelesen (Daten-Import) werden kann.
Edit siehe Post #3: Download "sqlite3xx_dll.au3" :
http://ritzelrocker04.bplaced.net/wordpress/sqli…lite-starterlv/PS: Schöne Feiertage!
AutoIt: Alinas_SQLite_BuchVw.au3
Alles anzeigen#Region ;************ Includes ************ #include <Date.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <GuiStatusBar.au3> #include <GUIConstantsEx.au3> #include <ComboConstants.au3> #include <GuiListView.au3> #include <String.au3> #include <SQLite.au3> #include "sqlite3101_dll.au3" #EndRegion ;************ Includes ************ Global $cboSerch, $iptSerch Global Const $asWDAYger[7] = ["Sonntag, ", "Montag, ", "Dienstag, ", "Mittwoch, ", "Donnerstag, ", "Freitag, ", "Samstag, "] $Buchverwaltung = GUICreate("Alinas Buchverwaltung", 1125, 700) $Label = GUICtrlCreateLabel("~ ~ ~ B U C H V E R W A L T U N G ~ ~ ~", 0, 8, 1125, 28, 0x01) ; $SS_CENTER=0x01 GUICtrlSetFont(-1, 16, 800, 0, "Arial") GUICtrlSetColor(-1, 0x0000FF) Global Const $sHeader = "ID|Titel|Autor|Verlag|Genre|Einband|ISBN|" _ & "Preis|Erscheinungsdatum|Seiten|Lagerplatz|Serie|Lfd_Nr|" _ & "Ausgeliehen_an|Ausgeliehen_am|Ausgeliehen_bis|Bestellt|Gelesen|Note|Zusatz|Informationen" ; Global $aHeader = StringSplit($sHeader, '|') $ListView = GUICtrlCreateListView($sHeader, 0, 40, 1125, 220) GUICtrlSetBkColor(-1, 0xFFFFFF) ; Color weiß GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE) GUICtrlSetFont(-1, 10, 400, 0, "Arial") ; Global $GetHandleLV = GUICtrlGetHandle($ListView) _GUICtrlListView_SetColumn($GetHandleLV, 0, $aHeader[1], 50, 1) _GUICtrlListView_SetColumn($GetHandleLV, 1, $aHeader[2], 160, 0) _GUICtrlListView_SetColumn($GetHandleLV, 6, $aHeader[7], 120, 1) _GUICtrlListView_SetColumn($GetHandleLV, 7, $aHeader[8], 80, 1) _GUICtrlListView_SetColumn($GetHandleLV, 8, $aHeader[9], 130, 1) _GUICtrlListView_SetColumn($GetHandleLV, 9, $aHeader[10], 50, 1) _GUICtrlListView_SetColumn($GetHandleLV, 14, $aHeader[15], 120, 1) _GUICtrlListView_SetColumn($GetHandleLV, 15, $aHeader[16], 120, 1) ; $ContextMenu = GUICtrlCreateContextMenu($ListView) $MenuItem = GUICtrlCreateMenuItem("Datensatz bearbeiten", $ContextMenu) ; #Region ### Main Area ### Global $aCtrlLabel[21], $aCtrlInput[21] $aCtrlLabel[0] = GUICtrlCreateLabel($aHeader[1], 10, 272, 150, 22) $aCtrlInput[0] = GUICtrlCreateInput("0", 170, 272, 180, 26) ; For $i = 1 To 6 $aCtrlLabel[$i] = GUICtrlCreateLabel($aHeader[$i + 1], 10, 272 + $i * 35, 150, 22) $aCtrlInput[$i] = GUICtrlCreateInput($i, 170, 272 + $i * 35, 360, 26) Next ; For $j = 7 To 12 $aCtrlLabel[$j] = GUICtrlCreateLabel($aHeader[$j + 1], 10 + Mod($j, 2) * 290, 515 + Int(($j - 7) / 2) * 35, 150, 22) $aCtrlInput[$j] = GUICtrlCreateInput($j, 170 + Mod($j, 2) * 240, 515 + Int(($j - 7) / 2) * 35, 120, 26) Next ; For $k = 13 To 19 $aCtrlLabel[$k] = GUICtrlCreateLabel($aHeader[$k + 1], 620, 272 + ($k - 13) * 33, 120, 22) $aCtrlInput[$k] = GUICtrlCreateInput($k, 750, 272 + ($k - 13) * 33, 120, 26) Next ; For $m = 0 To 19 GUICtrlSetFont($aCtrlLabel[$m], 12, 400, 0, "Arial") GUICtrlSetFont($aCtrlInput[$m], 12, 400, 0, "Arial") Next ;Information $aCtrlLabel[20] = GUICtrlCreateLabel($aHeader[20 + 1], 895, 272, 100, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $aCtrlInput[20] = GUICtrlCreateEdit("AA_info 20", 895, 300, 217, 160) ; $btnUpdate = GUICtrlCreateButton("DS Update", 895, 470, 105, 28) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $btnDelete = GUICtrlCreateButton("DS Löschen", 1010, 470, 105, 28) GUICtrlSetFont(-1, 12, 400, 0, "Arial") ;Suche $iptSearch = GUICtrlCreateInput("Suchen nach >>>", 620, 510, 492, 26) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $cboSearch = GUICtrlCreateCombo("Titel", 620, 545, 241, 25, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST)) GUICtrlSetData(-1, "Autor|Verlag") GUICtrlSetFont(-1, 12, 400, 0, "Arial") $btnSearch = GUICtrlCreateButton("Suche starten", 871, 545, 241, 28) GUICtrlSetFont(-1, 12, 400, 0, "Arial") ; $btnDBladen = GUICtrlCreateButton("Datenbank laden", 871, 583, 241, 28) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $btnClear = GUICtrlCreateButton("Eingabefelder leeren", 620, 583, 241, 28) GUICtrlSetFont(-1, 12, 400, 0, "Arial") ; Const $trR = _StringRepeat("-", 368) $lblBottomLine = GUICtrlCreateLabel($trR, 10, 615, 1110, 8) #EndRegion ### Main Area ### ; #Region ### Bottom Area ### Global $aCtrllbl[3], $aCtrlipt[3], $aLblTxt[3] = ["Buchanzahl:", "Ges. Seitenzahl:", "Ges. Buch NP:"] ;"Büchermenge:" For $l = 0 To 2 $aCtrllbl[$l] = GUICtrlCreateLabel($aLblTxt[$l], 10 + ($l) * 260, 640, 120, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $aCtrlipt[$l] = GUICtrlCreateInput($l, 140 + ($l) * 260, 638, 120, 26, 0x0002) ; $ES_RIGHT=0x0002 GUICtrlSetFont(-1, 12, 400, 0, "Arial") Next ; $btnSave = GUICtrlCreateButton("Speichern", 1010, 635, 105, 28) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $btnBackUp = GUICtrlCreateButton("DB BackUp", 895, 635, 105, 28) GUICtrlSetFont(-1, 12, 400, 0, "Arial") #EndRegion ### Bottom Area ### ; Global $tatusBar = _GUICtrlStatusBar_Create($Buchverwaltung) ; GUISetState(@SW_SHOW) ; _timeStatus() ; Funktion aufrufen sofortige einmalige Ausführung nach Programmstart AdlibRegister('_timeStatus', 1000) ; Start alle 1000 milisec. ; _SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1) ; BugFix Idee, da DLL ja nicht mehr mitgeliefert wird ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF) Global $g_db_Database = _SQLite_Open(@ScriptDir & "\buchverwaltung.rr04") ; Global $tatusBar_PartsWidth[3] = [450, 900, -1] _GUICtrlStatusBar_SetParts($tatusBar, $tatusBar_PartsWidth) _GUICtrlStatusBar_SetText($tatusBar, " _SQLite_LibVersion = " & _SQLite_LibVersion(), 0) _GUICtrlStatusBar_SetText($tatusBar, " " & $asWDAYger[@WDAY - 1] & _DateTimeFormat(_NowCalc(), 2), 1) _GUICtrlStatusBar_SetMinHeight($tatusBar, 20) ; ;~ ### Die Tabelle löschen, wenn vorhanden. ### _SQLite_Exec(-1, "DROP TABLE IF EXISTS Buchverwaltung;") ;~ ### Die Tabelle erstellen, wenn nicht vorhanden. ### _SQLite_Exec($g_db_Database, "CREATE TABLE IF NOT EXISTS Buchverwaltung(ID INTEGER PRIMARY KEY AUTOINCREMENT,Titel,Autor,Verlag,Genre,Einband,ISBN,Preis,Erscheinungsdatum,Seiten,Lagerplatz,Serie,Lfd_Nr,Ausgeliehen_an,Ausgeliehen_am,Ausgeliehen_bis,Bestellt,Gelesen,Note,Zusatz,Information);") ; _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'13 Tage','Giambanco, Valentina','Droemer Knaur','Thriller','Hardcover','978-3426513996','14.99','2014-03-03','576','R1-F2','','','Thomas','2015-11-01','2016-01-01','','','..','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Abgründe','Strobel, Arno','Loewe','Thriller-J','Taschenbuch','978-3785578643','9.95','2014-03-10','240','R1-F2','','','','','','','','..','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Bedroht','Koppen, Hans','Heyne','Thriller','Taschenbuch','978-3453268012','14.99','2013-03-27','411','R1-F2','','','','','','','','..','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Agent 6','Smith, Tom Rob','Goldmann','Thriller','Taschenbuch','978-3442546770','9.99','2011-09-14','540','R1-F2','','','','','','','','..','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Belladonna','Slaughter, Karin','rororo','Thriller','Taschenbuch','978-3499239140','6.00','2003-03-03','413','R1-F1','','','','','','','','..','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Bis zum letzten Atemzug','Baldacci, David','Bastei Lübbe','Thriller','Taschenbuch','978-3404165537','9.99','2011-04-01','574','R1-F2','','','','','','','','..','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Bittere Wunden','Slaughter, Karin','blanvalet','Thriller','Hardcover','978-3764505172','19.99','2014-09-01','576','R1-F1','','','','','','','','..','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Datenbanken','Anton, Autor','Heyne','Fachbuch','Hardcover','978-3453268017','49.99','2013-03-27','411','R1-F2','','','Max','2015-11-01','2016-12-31','','','..','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Latex','Antonow, E.','Galileo','Fachbuch','Hardcover','978-3453268021','24.99','2011-01-01','411','R1-F2','','','Martin','2012-10-01','2013-02-15','','','..','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'C Programmieren','Erlenkötter, H.','rororo','Fachbuch','Hardcover','978-3453268010','11.99','2013-10-01','411','R1-F2','','','Lutz','2015-02-01','2016-10-13','','','..','..','..');") ; _SQLite_CountRows('buchverwaltung') ; While True Switch GUIGetMsg() Case -3 _Exit() Case $ListView _GUICtrlListView_SortItems($ListView, GUICtrlGetState($ListView)) Case $btnSave _DsInsert() _ListViewFill() _iptClear() _SQLite_CountRows('buchverwaltung') Case $btnDelete _DsDelete() _ListViewFill() _SQLite_CountRows('buchverwaltung') Case $btnUpdate _DsUpdate() _ListViewFill() Case $btnSearch _ListViewFill("SELECT ROWID,* From Buchverwaltung WHERE " & GUICtrlRead($cboSearch) & " LIKE '" & GUICtrlRead($iptSearch) & "';") Case $btnDBladen _ListViewFill() Case $btnClear _iptClear() Case $btnBackUp _DB_BackUp() Case $MenuItem _iptClear() _ListView2ipt() EndSwitch WEnd ; Func _timeStatus() Local $zeit = _DateTimeFormat(_NowCalc(), 5) _GUICtrlStatusBar_SetText($tatusBar, " Uhrzeit: " & $zeit, 2) EndFunc ;==>_timeStatus ; Func _ListViewFill($QLite = "SELECT ROWID,* FROM Buchverwaltung;") Local $hQuery, $aRow _GUICtrlListView_DeleteAllItems($ListView) ;~ _SQLite_Query(-1, "SELECT ROWID,* FROM Buchverwaltung;", $hQuery) _SQLite_Query(-1, $QLite, $hQuery) While _SQLite_FetchData($hQuery, $aRow, False, False) = $SQLITE_OK ; Read Out the next Row GUICtrlCreateListViewItem(_ArrayToString($aRow, '|', 1, 21), $ListView) GUICtrlSetBkColor(-1, 0xF0E68C) ; (0xF9F9F9) helles Grau (0xB9D1EA) helles blau (0xF0E68C) WEnd _SQLite_QueryFinalize($hQuery) _GUICtrlListView_RegisterSortCallBack($ListView) ; CallBack registrieren zum sortieren EndFunc ;==>_ListViewFill ; Func _Exit() ; Datenbank schließen und down. _GUICtrlListView_UnRegisterSortCallBack($ListView) _SQLite_Close($g_db_Database) _SQLite_Shutdown() Exit EndFunc ;==>_Exit ; DS löschen Func _DsDelete() _SQLite_Exec(-1, "DELETE From Buchverwaltung WHERE ID = " & GUICtrlRead($aCtrlInput[0]) & ";") EndFunc ;==>_DsDelete ; Func _DsUpdate() _SQLite_Exec(-1, "UPDATE Buchverwaltung SET Titel = '" & GUICtrlRead($aCtrlInput[1]) & "', Autor = '" _ & GUICtrlRead($aCtrlInput[2]) & "', Verlag = '" & GUICtrlRead($aCtrlInput[3]) & "', Genre = '" _ & GUICtrlRead($aCtrlInput[4]) & "', Einband = '" & GUICtrlRead($aCtrlInput[5]) & "', ISBN = '" _ & GUICtrlRead($aCtrlInput[6]) & "', Preis = '" & GUICtrlRead($aCtrlInput[7]) & "', Erscheinungsdatum = '" _ & GUICtrlRead($aCtrlInput[8]) & "', Seiten = '" & GUICtrlRead($aCtrlInput[9]) & "', Lagerplatz = '" _ & GUICtrlRead($aCtrlInput[10]) & "', Serie = '" & GUICtrlRead($aCtrlInput[11]) & "', Lfd_Nr = '" _ & GUICtrlRead($aCtrlInput[12]) & "', Ausgeliehen_an = '" & GUICtrlRead($aCtrlInput[13]) & "', Ausgeliehen_am = '" _ & GUICtrlRead($aCtrlInput[14]) & "', Ausgeliehen_bis = '" & GUICtrlRead($aCtrlInput[15]) & "', Bestellt = '" _ & GUICtrlRead($aCtrlInput[16]) & "', Gelesen = '" & GUICtrlRead($aCtrlInput[17]) & "', Note = '" _ & GUICtrlRead($aCtrlInput[18]) & "', Zusatz = '" & GUICtrlRead($aCtrlInput[19]) & "', Information = '" _ & GUICtrlRead($aCtrlInput[20]) & "' WHERE ID = " & GUICtrlRead($aCtrlInput[0]) & ";") EndFunc ;==>_DsUpdate ; Func _DsInsert() _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL, '" & GUICtrlRead($aCtrlInput[1]) & "','" _ & GUICtrlRead($aCtrlInput[2]) & "','" & GUICtrlRead($aCtrlInput[3]) & "','" & GUICtrlRead($aCtrlInput[4]) _ & "','" & GUICtrlRead($aCtrlInput[5]) & "','" & GUICtrlRead($aCtrlInput[6]) & "','" & GUICtrlRead($aCtrlInput[7]) _ & "','" & GUICtrlRead($aCtrlInput[8]) & "','" & GUICtrlRead($aCtrlInput[9]) & "','" & GUICtrlRead($aCtrlInput[10]) _ & "','" & GUICtrlRead($aCtrlInput[11]) & "','" & GUICtrlRead($aCtrlInput[12]) & "','" & GUICtrlRead($aCtrlInput[13]) _ & "','" & GUICtrlRead($aCtrlInput[14]) & "','" & GUICtrlRead($aCtrlInput[15]) & "','" & GUICtrlRead($aCtrlInput[16]) _ & "','" & GUICtrlRead($aCtrlInput[17]) & "','" & GUICtrlRead($aCtrlInput[18]) & "','" & GUICtrlRead($aCtrlInput[19]) _ & "','" & GUICtrlRead($aCtrlInput[20]) & "');") EndFunc ;==>_DsInsert ; Func _ListView2ipt() ;~ MsgBox(0, "Information", "Selected Mark: " & _GUICtrlListView_GetSelectionMark($ListView)) Local $electionMark = _GUICtrlListView_GetSelectionMark($ListView) If $electionMark > -1 Then Local $aLVitem = _GUICtrlListView_GetItemTextArray($ListView, $electionMark) For $i = 1 To $aLVitem[0] ;~ MsgBox(0, "Information", "ItemTextArray: " & $aIpt[$i-1] & " " & $aLVitem[$i]) GUICtrlSetData($aCtrlInput[$i - 1], $aLVitem[$i]) Next EndIf EndFunc ;==>_ListView2ipt ; Func _iptClear() For $i = 0 To 20 GUICtrlSetData($aCtrlInput[$i], "") Next EndFunc ;==>_iptClear ; ;=================================================================================================== ; Function Name....: _SQLite_CountRows ; Description......: Ermittelt die Anzahl von Datensätzen für eine Tabelle ; Parameter(s).....: $_sTable Tabellenname ; Requirement(s)...: Eine mit _SQLite_Open() geöffnete DB ; .................: #include <SQLite.au3> ; Return Value(s)..: Erfolg: Anzahl der Datensätze ; .................: Fehler: -1 @error = 1, @extended = SQLite-@error ; Author(s)........: BugFix (bugfix@autoit.de) ;=================================================================================================== Func _SQLite_CountRows($_sTable) Local $hQuery, $aQuery, $iRet = 0, $iErr If $SQLITE_OK <> _SQLite_Query(-1, "SELECT count(*) FROM " & $_sTable & ";", $hQuery) Then $iErr = _SQLite_ErrCode() _SQLite_QueryFinalize($hQuery) Return SetError(1, $iErr, -1) EndIf While _SQLite_FetchData($hQuery, $aQuery) = $SQLITE_OK $iRet = $aQuery[0] WEnd _SQLite_QueryFinalize($hQuery) ;~ Return $iRet GUICtrlSetData($aCtrlipt[0], $iRet) EndFunc ;==>_SQLite_CountRows ; Func _DB_BackUp() Local $BackUpFolder = @ScriptDir & "\_BackUps" If Not FileExists($BackUpFolder) Then DirCreate($BackUpFolder) Local $hFileOpen = FileOpen($BackUpFolder & "\" & @YEAR & "-" & @MON & "-" & @MDAY & "_BuchVw.db.txt", 2) If $hFileOpen = -1 Then Exit MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.") Local $aResult, $iRows, $iColumns Local $iRval = _SQLite_GetTable2d(-1, "SELECT * FROM Buchverwaltung;", $aResult, $iRows, $iColumns) FileWriteLine($hFileOpen, $sHeader) For $iR = 1 To $iRows $sText = "" For $iC = 0 To $iColumns - 1 $sText &= $aResult[$iR][$iC] If $iC < $iColumns - 1 Then $sText &= "|" Next FileWriteLine($hFileOpen, $sText) Next FileClose($hFileOpen) MsgBox(64, "Info", "DB BackUp ist fertig !", 3) EndFunc ;==>_DB_BackUp ; Ende
-
So jetzt aber, versuch es mal!
Ich mache das mit Wiedervorlage in die Inputfelder und der Nutzer hat noch einmal Zeit zum Überlegen (in Zeile verrutscht). Jetzt brauche ich die ID nur aus dem Inputfeld auslesen.AutoIt; DS löschen Func _DsDelete() $electionMark = _GUICtrlListView_GetSelectionMark($ListView) MsgBox(0, "", $electionMark) $ItemText = _GUICtrlListView_GetItemText($ListView, $electionMark) MsgBox(0, "", $ItemText) _SQLite_Exec(-1, "DELETE From Buchverwaltung WHERE ID = " & $ItemText & "") _ListViewFill() EndFunc ;==>_DsDelete
da Alina auch eine sortierfunktion eingebaut hat, die die Listview mischt.
Das hat mich auf die Idee gebracht.
-
-
-
-
@Lina,
hatte vorhin keine Zeit mehr, war im Büro. Das Einfügen funktioniert schon.Spoiler anzeigen
AutoIt
Alles anzeigen#Region ;************ Includes ************ #Include <SQLite.au3> #Include <GuiListView.au3> #EndRegion ;************ Includes ************ ;Opt Opt("GUIOnEventMode", 0) ; Du benutzt den MsgLoop-Modus also muss hier "0" stehen oder die Zeile gleich ganz weglassen, weil "0" der Standardwert ist Global $hQuery, $aNames, $aRow ;GUI Titel $Buchverwaltung = GUICreate("Buchverwaltung erstellt mit AutoIt", 1121, 629, 280, 183) ; Titel oben Mitte $Label1 = GUICtrlCreateLabel("~ ~ ~ B U C H V E R W A L T U N G ~ ~ ~", 304, 8, 516, 28) GUICtrlSetFont(-1, 16, 800, 0, "Arial") GUICtrlSetColor(-1, 0x0000FF) ; ListView $listview = GUICtrlCreateListView("ID |Titel|Autor|Verlag|Erscheinungsdatum|Genre|Preis|Einband|ISBN|Seiten|Lagerplatz|Serie|Bestellt|Gelesen|Note|Zusatz|Information|Ausgeliehen_an|Ausgeliehen_am|Ausgeliehen_bis", 10, 40, 1105, 168) $List1 = GUICtrlCreateList("", 8, 40, 1105, 168) ;~ GUICtrlSetFont(-1, 10, 400, 0, "Arial") ; Hauptbereich $Label2 = GUICtrlCreateLabel("Titel: ", 10, 274, 45, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input1 = GUICtrlCreateInput("", 160, 272, 361, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label3 = GUICtrlCreateLabel("Autor:", 10, 305, 45, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input2 = GUICtrlCreateInput("", 160, 302, 361, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label4 = GUICtrlCreateLabel("Verlag: ", 10, 335, 58, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input3 = GUICtrlCreateInput("", 160, 332, 361, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label5 = GUICtrlCreateLabel("Genre: ", 10, 365, 55, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input4 = GUICtrlCreateInput("", 160, 362, 361, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label6 = GUICtrlCreateLabel("Erscheinungsdatum: ", 10, 395, 149, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input5 = GUICtrlCreateInput("YYYYMMDD", 160, 392, 100, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label7 = GUICtrlCreateLabel("Serie: ", 267, 395, 50, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input6 = GUICtrlCreateInput("", 313, 392, 208, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label8 = GUICtrlCreateLabel("Preis: ", 10, 424, 146, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input7 = GUICtrlCreateInput("", 160, 422, 81, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label9 = GUICtrlCreateLabel("Lagerplatz: ", 267, 424, 85, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input8 = GUICtrlCreateInput("", 354, 422, 165, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label10 = GUICtrlCreateLabel("Einband: ", 10, 455, 70, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input9 = GUICtrlCreateInput("", 160, 452, 361, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label11 = GUICtrlCreateLabel("ISBN", 10, 485, 40, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input10 = GUICtrlCreateInput("", 160, 482, 361, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label12 = GUICtrlCreateLabel("Seiten: ", 10, 514, 57, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input11 = GUICtrlCreateInput("", 160, 512, 81, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label13 = GUICtrlCreateLabel("ausgeliehen an: ", 624, 272, 117, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input12 = GUICtrlCreateInput("", 760, 272, 121, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label14 = GUICtrlCreateLabel("ausgeliehen am: ", 624, 302, 122, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input13 = GUICtrlCreateInput("", 760, 302, 121, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label15 = GUICtrlCreateLabel("ausgeliehen bis: ", 624, 332, 121, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input14 = GUICtrlCreateInput("", 760, 334, 121, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label16 = GUICtrlCreateLabel("Bestellt: J/N", 624, 384, 86, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input15 = GUICtrlCreateInput("", 760, 384, 121, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label17 = GUICtrlCreateLabel("gelesen: J/N", 624, 414, 90, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input16 = GUICtrlCreateInput("", 760, 414, 121, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label18 = GUICtrlCreateLabel("Note: 1 - 6", 624, 444, 76, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input17 = GUICtrlCreateInput("", 760, 444, 121, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label19 = GUICtrlCreateLabel("Zusatz:", 624, 474, 53, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input18 = GUICtrlCreateInput("", 760, 472, 121, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label20 = GUICtrlCreateLabel("Information:", 896, 384, 84, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Edit1 = GUICtrlCreateEdit("", 896, 408, 217, 89) $Label22 = GUICtrlCreateLabel("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------", 8, 256, 1105, 17) $Label23 = GUICtrlCreateLabel("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------", 8, 544, 1105, 17) $Button16 = GUICtrlCreateButton("S U C H E N", 621, 509, 132, 25) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input19 = GUICtrlCreateInput("Suchbegriff hier eingeben", 760, 507, 347, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label24 = GUICtrlCreateLabel("Lfd.-Nr:", 350, 515, 55, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input20 = GUICtrlCreateInput("", 415, 512, 105, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") GUICtrlSetData(-1, "000002") GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") ; unterer Bereich $Label26 = GUICtrlCreateLabel("Büchermenge: ", 13, 595, 113, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input22 = GUICtrlCreateInput("", 128, 592, 81, 26) ; hier soll die ges. Bücheranzahl eingefügt werden und nicht veränderbar durch Anwender GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label27 = GUICtrlCreateLabel("Ges. Seitenzahl:", 270, 596, 117, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Input23 = GUICtrlCreateInput(" ", 394, 592, 81, 26) ; hier soll die ges. Seitenzahl eingefügt werden und nicht veränderbar durch Anwender GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Label28 = GUICtrlCreateLabel("Ges. Buch NP:", 572, 595, 106, 22) GUICtrlSetFont(-1, 12, 400, 0, "Arial") GUICtrlCreateInput("", 680, 592, 121, 26) ; hier soll der ges. Bücherwert eingefügt werden und nicht veränderbar durch Anwender GUICtrlSetFont(-1, 12, 400, 0, "Arial") $Button20 = GUICtrlCreateButton("Speichern", 991, 592, 121, 26) GUICtrlSetFont(-1, 12, 400, 0, "Arial") ; Ausleihbutton $Button17 = GUICtrlCreateButton("Ausleihen", 888, 272, 227, 25) ; DK 1 / 2 / 3 $Button18 = GUICtrlCreateButton("DK 1 / 2 / 3", 894, 334, 99, 26) ; D 1 / 2 $Button19 = GUICtrlCreateButton("D 1 / 2", 1012, 334, 99, 25) ; GUI anzeigen GUISetState(@SW_SHOW) ; !!! Datei lösche ich hier nur, damit ich sie nicht manuell löschen muss in der Übungsphase !!! FileDelete(@ScriptDir & "\buchverwaltung.db") ; DLL Pfad _SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1) ; BugFix Idee, da DLL ja nicht mehr mitgeliefert wird ; gibt die SQL Version in die Console aus ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF) ; Datenbank öffnen, ggf. erstellen Global $g_db_Database = _SQLite_Open(@ScriptDir & "\buchverwaltung.db") ; Datenbanktabelle _SQLite_Exec($g_db_Database, "CREATE TABLE IF NOT EXISTS Buchverwaltung(ID INTEGER PRIMARY KEY AUTOINCREMENT,Titel,Autor,Verlag,Erscheinungsdatum,Genre,Preis,Einband,ISBN,Seiten,Lagerplatz, Serie,Bestellt,Gelesen,Note,Zusatz,Information,Ausgeliehen_an,Ausgeliehen_am,Ausgeliehen_bis);") ; jeweils ein Datensatz wird dazu geschrieben, Daten sind von Enno Jüders zur Verfügung gestellt. _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'13 Tage','Giambanco, Valentina','Droemer Knaur','2014.03.03','Thriller','14.99','Hardcover','9783426513996','576','R1-F2','','','N','','','','','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Abgründe','Strobel, Arno','Loewe','2014.03.10','Thriller-J','9.95','Taschenbuch','9783785578643','240','R1-F2','','','N','','','','','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Agent 6','Smith, Tom Rob','Goldmann','2011.09.14','Thriller','9.99','Taschenbuch','9783442546770','540','R1-F2','Leo Demidow Bd.3','','N','','','','','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Bedroht','Koppen, Hans','Heyne','2013.03.27','Thriller','14.99','Taschenbuch','9783453268012','411','R1-F2','','','J','1','','','','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Belladonna','Slaughter, Karin','rororo','2003.03.03','Thriller','6.00','Taschenbuch','9783499239140','413','R1-F1','Grant County Bd.1','','J','1','','','','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Bis zum letzten Atemzug','Baldacci, David','Bastei Lübbe','2011.04.01','Thriller','9.99','Taschenbuch','9783404165537','574','R1-F2','King & Maxwell Bd. 4','austauschen','N','','','','','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Bittere Wunden','Slaughter, Karin','blanvalet','2014.09.01','Thriller','19.99','Hardcover','9783764505172','576','R1-F1','Georgia Bd.4','','J','2','','','','..','..');") _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL,'Datenbanken','Anton, RR04','blanvalet','01.09.2014','Fachb.','24.95','Hardcover','9783764505172','576','R1-F1','Georgia Bd.4','','J','2','','','','..','..');") _ListViewFill() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case -3 _Exit() ;### Case $listview _GUICtrlListView_SortItems($listview, GUICtrlGetState($listview)) ; hier wird das Listview sortiert Case $Button20 ; Speichern _DsInset() EndSwitch WEnd Func _Exit() ; Datenbank schließen und down. _GUICtrlListView_UnRegisterSortCallBack($listview) _SQLite_Close($g_db_Database) _SQLite_Shutdown() Exit EndFunc ;==>_Exit ; Datensatz von GUI2DB Func _DsInset() Local $aworte $inputs1 = GUICtrlRead($Input1) ; Titel $inputs2 = GUICtrlRead($Input2) ; Autor $inputs3 = GUICtrlRead($Input3) ; Verlag $inputs5 = GUICtrlRead($Input5) ; Erscheinungsdatum $inputs4 = GUICtrlRead($Input4) ; Genre $inputs7 = GUICtrlRead($Input7) ; Preis $inputs9 = GUICtrlRead($Input9) ; Einband $inputs10 = GUICtrlRead($Input10) ; ISBN $inputs11 = GUICtrlRead($Input11) ; Seiten $inputs8 = GUICtrlRead($Input8) ; Lagerplatz $inputs6 = GUICtrlRead($Input6) ; Serie $inputs15 = GUICtrlRead($Input15) ; Bestellt $inputs16 = GUICtrlRead($Input16) ; Gelesen $inputs17 = GUICtrlRead($Input17) ; Note $inputs18 = GUICtrlRead($Input18) ; Zusatz $edits1 = GUICtrlRead($Edit1) ; Information <------- ??? $inputs12 = GUICtrlRead($Input12) ; Ausgeliehen_an $inputs13 = GUICtrlRead($Input13) ; Ausgeliehen_am $inputs14 = GUICtrlRead($Input14) ; Ausgeliehen_bis ;~ NULL (sprich nall)- ID, Tabelle Buchverwaltung _SQLite_Exec(-1, "INSERT INTO Buchverwaltung VALUES(NULL, '" & $inputs1 & "','" & $inputs2 & "','" & $inputs3 & "','" & $inputs4 & "','" & $inputs5 & "','" & $inputs6 & "','" & $inputs7 & "','" & $inputs8 & "','" & $inputs9 & "','" & $inputs10 & "','" & $inputs11 & "','" & $inputs12 & "','" & $inputs13 & "','" & $inputs14 & "','" & $inputs15 & "','" & $inputs16 & "','" & $inputs17 & "','" & $inputs18 & "','" & $edits1 & "');") _ListViewFill() EndFunc ;==>_DsInset Func _ListViewFill() _GUICtrlListView_DeleteAllItems($listview) _SQLite_Query(-1, "SELECT ROWID,* FROM Buchverwaltung;", $hQuery) While _SQLite_FetchData($hQuery, $aRow, False, False) = $SQLITE_OK ; Read Out the next Row GUICtrlCreateListViewItem(_ArrayToString($aRow, '|', 1, 19), $listview) WEnd _SQLite_QueryFinalize($hQuery) _GUICtrlListView_RegisterSortCallBack($listview) ; CallBack registrieren zum sortieren EndFunc ;==>_ListViewFill
-
@Lina
11.12.2015
ID|Titel|Autor|Verlag|E-Datum|Genre|Preis|Einband|ISBN|Seiten|Lager|Serie|Bestellt|Gelesen|Note|Zusatz|Information
ID INTEGER PRIMARY KEY AUTOINCREMENT,Titel,Autor,Verlag,Erscheinungsdatum,Genre,Preis,Einband,ISBN,Seiten,Lagerplatz, Serie,Bestellt,Gelesen,Note,Zusatz,Information,Ausgeliehen_an,Ausgeliehen_am,Ausgeliehen_bisHier stimmt was nicht in den Zeilen 22 und 178 !?
-
[autoit][/autoit][autoit][/autoit][autoit]
;~ [user='994']Alina[/user]
[/autoit][autoit][/autoit][autoit]
;~ Die Punkte zu 2 sind eigentlich Gestaltungssachen im Bereich von Autoit,
;~ also ob ein Hotkey oder ein "&" eingebaut wird.;~ Zahlen:
[/autoit][autoit][/autoit][autoit]
;~ Zahlen finden sich im Beispiel SQLite-Listview.
;~ Hier kann ein bestimmter Zahlenbereich angezeigt werden._SQLite_GetTable2d(-1, "Select * From BeispielDB WHERE Summe >= 100 AND Summe <= 600", $aResult, $iRows, $iColumns) ;i Zahlenbereich anzeigen
[/autoit][autoit][/autoit][autoit];~ Direkte Sortierabfragen haben immer mit "ORDER BY" zutun.
[/autoit][autoit][/autoit][autoit]
;~ Sortiert wird aufsteigend, absteigend und
;~ auch über mehrere Spalten. Diese Funktionalität bringt SQLite schon mit._SQLite_GetTable2d(-1,"SELECT * FROM BeispielDB ORDER BY Name DESC", $aResult, $iRows, $iColumns) ;i sortieren über eine Spalte, Abfsteigend => DESC
[/autoit][autoit][/autoit][autoit]
_SQLite_GetTable2d(-1,"SELECT * FROM BeispielDB ORDER BY Name, Vorname", $aResult, $iRows, $iColumns) ;i sortieren über zwei Spalten_SQLite_GetTable2d(-1, "SELECT * FROM BeispielDB ORDER BY Summe", $aResult, $iRows, $iColumns) ;i A-ufsteigend => ASC
[/autoit][autoit][/autoit][autoit]
_SQLite_GetTable2d(-1, "SELECT * FROM BeispielDB ORDER BY Summe ASC", $aResult, $iRows, $iColumns) ;i A-ufsteigend => ASC
_SQLite_GetTable2d(-1, "SELECT * FROM BeispielDB ORDER BY Summe DESC", $aResult, $iRows, $iColumns) ;i Abfsteigend => DESC;~ Datum:
[/autoit]
;~ Intern verwendet SQLite das Format "2010-12-30".
;~ Datum und Zeit Funktionen sind hier gut beschrieben: http://www.sqlite.org/lang_datefunc.html
;~ Ende -
@Lina
Zu den aktuellen Beispielen:
1.)
Der Button "Alle Datensätze anzeigen"
setzt einen bestimmten Befehl ab (SELECT * FROM BeginnerDB). Die ganzen Spalten der Tabelle werden ausgewählt und angezeigt. Ihn werden wir im Verlauf öfter brauchen, um Änderungen anzeigen zulassen.
2.)
Beim Button "Auswahl nach Eingabe"
gibt es die Möglichkeit eine Art Filter anzugeben. Den Namen, den Anfangsbuchstaben des Namens, mit einem m im Namen oder mit Unterstrichen fals die Schreibweise von "Meier" abweicht (z.B.: "Meier, m%, %m%, M___r").
3.)
Die "Telefonnr. eingeben"
und die ID des Datensatzes ändern nur die Telefonnummer, andere Einträge sind nicht betroffen. Der SQL-Befehl "Update" steckt hier dahinter und wird, dann auch angezeigt.
4.)
Datensätze
Datenbanken dienen zum Speichern großer Datenmengen. Das schließt Buch-, Musik-, Videosammlungen, Artikelverw. oder die klassische Adressenkartei nicht aus. Doch wir sollten größer denken. Börse, Banken und Internet machen es vor. So ist es auch möglich, ein ganzes Kaufhaus abzubilden. Die Warenannahme mit Lieferanten, eine Etage mit Schuhen, ja noch eine Etage mit Handtaschen, aber auch Personalabteilung und Buchhaltung dürfen nicht fehlen. Die Daten werden in den dafür angelegten Tabellen der relationalen Datenbank unsortiert gespeichert.Im Beispiel SQLite-Listview wird ein Beispiel mit Zahlen gezeigt. Es beruht auf einer anderen Tabelle ("ID,Name, Vorname,Summe").
Die Darstellung kann vielseitig sein. Hier bereits gezeigt ein einfaches Editfeld und ein Listview, doch auch eine Eigabemaske mit Inpufeldern ist möglich.Ich empfehle das Beilegen der aktuellen sqlite3.dll zu den Skripten (z.B. ins @ScriptDir).
Seht selbst, wie SQLite reagiert!
-
SQLite in Version 3.8.6 wurde veröffentlicht. Ich empfehle das Beilegen der aktuellen sqlite3.dll zu den Skripten !
-
Hi,
[autoit]
z.B.:GUICtrlCreateDate()
[/autoit] -
Danke Oscar!
[autoit]
Ich habe auch daran gedacht,
[/autoit][autoit][/autoit][autoit]
#cs
Switch $i
Case 0Case 1
[/autoit][autoit][/autoit][autoit]Case ;[...]
[/autoit][autoit][/autoit][autoit]EndSwitch
[/autoit]
#ce
aber bei 80 Stück !? -
Hi,
[autoit]
ein Beispiel:
[/autoit][autoit][/autoit][autoit]
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
_main()
Func _main()
Local $input, $nMsg, $result, $aBtn[20]
Local $aBtnLbl[20] = ["7", "8", "9", " / ", "4", "5", "6", " * ", "1", "2", "3", " - ", ".", "0", "^", " + ", "(", ")", "Clear", "="]
GUICreate("Mod-TRechner-Tut", 235, 325)
$input = GUICtrlCreateInput("", 10, 10, 215, 30, BitOR(0x0800, 0x0002)) ; $ES_READONLY $ES_RIGHT
For $k = 0 To 19
$aBtn[$k] = GUICtrlCreateButton($aBtnLbl[$k], 10 + Mod($k, 4) * 55, 50 + Int($k / 4) * 55, 50, 50)
NextGUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]Do
[/autoit]
$nMsg = GUIGetMsg()
For $i = 0 To 18
If $nMsg = $aBtn[$i] Then GUICtrlSetData($input, GUICtrlRead($input) & $aBtnLbl[$i])
Next
If $nMsg = $aBtn[19] Then
$result = Execute(StringRegExpReplace(GUICtrlRead($input), '[^\.\(\)\*\/\-\+\d]', ''))
;~ $result = Execute(GUICtrlRead($input))
If $result == "1.#INF" Or $result == "-1.#IND" Then $result = "Error"
GUICtrlSetData($input, $result)
EndIf
If $nMsg = $aBtn[18] Then GUICtrlSetData($input, "")
Until $nMsg = -3
EndFunc ;==>_main
; Ende -
Danke für Dein Lob und Interesse.
Die von Dir ausgemachten %-Zeichen sind, in diesem Fall, Platzhalter/Wildcards. Sie gehören direkt zur SELECT-Abfrage von SQLite. Im Spoiler SQL habe ich diese Abfragen hinzugefügt und kommentiert.
Ein Listview
ist nur die Präsentation derselben Daten auf eine andere Art. Einem Beginner würde, dass den Blick auf das Wesentliche verstellen. So habe ich SQLite-Listview mit der Abfrage nach den Summen zwischen 100 und 600 separat eingefügt. -
Der Einstieg in das Thema SQLite und die Anwendung in AutoIt.
Will man eine Datenbank installieren. Dann hat man schnell das Gefühl, es wird ein ganzes Betriebssystem installiert,
das auch noch die Performance des Systems beeinflusst.Bei SQLite ist das nicht der Fall, denn SQLite arbeitet auf Dateibasis. Aber auch hier spricht man SQL. Die Standards von 1992 werden unterstützt und man hat das Handling einer relationalen Datenbank. Heute befinden sich SQLite-Datenbanken bereits in Internetbrowsern und Handys, so gehört SQLite auch zum "Lieferumfang" von AutoIt.
Dieses Tutorial soll in zweifacher Hinsicht als Einstieg in SQLite dienen.
Das Skript zeigt einen möglichen Aufbau sowie die datenbankrelevanten Funktionen. Diese sind mit dem Vorzeichen "Ds"
für Datensatz gekennzeichnet.
Mit dem Programm hingegen ist man in der Lage eine kleine Beispieldatenbank, wie in einer Sandbox, zu führen. Es wird
sichtbar welche Befehle hinter den einzelnen Button stecken und was sie bewirken. Nicht alle Befehle lösen eine
Aktion aus, die sichtbar wird. Auch fehlende oder falsche Eingaben sind möglich.Seht selbst, wie SQLite reagiert.
SQL
SQL
Alles anzeigen-- Die Tabelle "BeispielDB" erstellen -- -- Telefonnr. als "Text", -- nur bei Zahlen mit denen nicht gerechnet -- werden soll (PLZ, Hausnr., Telefonnr.). CREATE TABLE BeispielDB ( ID INTEGER PRIMARY KEY, Name Text, Vorname Text, Telefon Text ); -- Auswahl-Abfragen -- -- Alle auswählen aus der Tabelle "BeginnerDB" ... -- -- ... mit "name" "Meier" SELECT * FROM BeginnerDB WHERE name LIKE 'Meier' -- ... mit "name" ein "m%" als Anfangsbuchstabe SELECT * FROM BeginnerDB WHERE name LIKE 'm%' -- ... mit "name" ein "%m%" innerhalb des Namens SELECT * FROM BeginnerDB WHERE name LIKE '%m%' -- Ende
SQLite-BeginnerDB
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;~ Autor: Ritzelrocker04
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
#AutoIt3Wrapper_UseX64=n ; ### Win32-DLL ###
;
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <WindowsConstants.au3>
;
Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)
;
Global Const $sHeader = "Name|Vorname|Telefon"
Global Const $sTitle = "SQLite-Datenbank-Tut ", $sVersion = "2014.08.04 "
Global $hDB, $Query, $aNames, $aRow
;
#Region Hauptfenster
Global $hGUI = GUICreate($sTitle, 800, 500)
GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEButton")
Global $hEdit = GUICtrlCreateEdit(" ", 0, 0, 800, 360, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
GUICtrlSetFont(-1, 12, 15, -1, "Courier New") ; Schriftgröße 12, Art Courier New
GUICtrlCreateLabel("Autor: Ritzelrocker04 " & $sVersion, 10, 365)
Global $btnNew = GUICtrlCreateButton("Neuer Datensatz", 10, 450, 100, 35, $BS_DEFPUSHBUTTON)
GUICtrlSetOnEvent(-1, "_NewButton")
Global $btnDsAlleAnzeigen = GUICtrlCreateButton("Alle Datensätze anzeigen", 120, 450, 100, 35, $BS_MULTILINE)
GUICtrlSetOnEvent(-1, "_DsAlleAnzeigen")
Global $btnDsAuswahl = GUICtrlCreateButton("Auswahl", 230, 450, 100, 35)
GUICtrlSetOnEvent(-1, "_DsAuswaehlen")
GUICtrlCreateLabel("Mögliche Eingaben: Meier | m% | %m%", 340, 390, 100, 30, $BS_MULTILINE)
Global $iptDsAuswahlEingabe = GUICtrlCreateInput("", 340, 425, 100, 20)
Global $btnDsAuswahlEingabe = GUICtrlCreateButton("Auswahl nach Eingabe", 340, 450, 100, 35, $BS_MULTILINE)
GUICtrlSetOnEvent(-1, "_DsAuswaehlenEingabe")
Global $cboDsSortierenEingabe = GUICtrlCreateCombo("Name", 450, 425, 100, 20, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
GUICtrlSetData(-1, "ID DESC|Vorname|Name, Vorname|Telefon|Telefon DESC", "Name")
Global $btnDsSortierenEingabe = GUICtrlCreateButton("Sortieren nach Eingabe", 450, 450, 100, 35, $BS_MULTILINE)
GUICtrlSetOnEvent(-1, "_DsSortierenEingabe")
GUICtrlCreateLabel("Telefonnr. eingeben", 580, 365, 100, 20)
Global $iptDsAendernTel = GUICtrlCreateInput("", 580, 385, 100, 20, $ES_NUMBER)
GUICtrlCreateLabel("Hier die ID eingeben", 580, 407, 100, 20)
Global $iptDsAendernID = GUICtrlCreateInput("", 580, 425, 100, 20, $ES_NUMBER)
GUICtrlSetLimit(-1, 2)
Global $btnDsAendern = GUICtrlCreateButton("Ändern eines Datensatzes", 580, 450, 100, 35, $BS_MULTILINE)
GUICtrlSetOnEvent(-1, "_DsAendern")
GUICtrlCreateLabel("Hier die Eingabe der ID vornehmen", 690, 390, 100, 30, $BS_MULTILINE)
Global $iptDsLoeschen = GUICtrlCreateInput("", 690, 425, 100, 20, $ES_NUMBER)
GUICtrlSetLimit(-1, 2)
Global $btnDsLoeschen = GUICtrlCreateButton("Löschen eines Datensatzes", 690, 450, 100, 35, $BS_MULTILINE)
GUICtrlSetOnEvent(-1, "_DsLoeschen")
#EndRegion Hauptfenster
;
GUISetState(@SW_SHOW, $hGUI)
;
_SQLite_Startup()
If @error Then Exit MsgBox(16, "SQLite Fehler", "SQLite.dll konnte nicht geladen werden!")
If FileExists("BeginnerDB.sqlite") Then
$hDB = _SQLite_Open("BeginnerDB.sqlite")
If @error Then Exit MsgBox(16, "SQLite Fehler", "Kann die Datenbank nicht öffnen!")
Else
$hDB = _SQLite_Open("BeginnerDB.sqlite") ; eine neue DB anlegen
If @error Then Exit MsgBox(16, "SQLite Fehler", "Kann die Datenbank nicht öffnen!")
; eine neue Tabelle anlegen "BeginnerDB"
_SQLite_Exec(-1, "CREATE TABLE BeginnerDB (ID INTEGER PRIMARY KEY,Name Text,Vorname Text,Telefon Text);"); Einträge als Muster erzeugen, die später angepasst werden können
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Meyar', 'Klaus', '5714');")
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Muster','Max','172');")
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Duck','Donald','030');")
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Duck','Daisy','040');")
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Bond','James','007');")
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Zander', 'Hans', '3714');")
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Maier', 'Hans', '6714');")
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Schmitz', 'Petra', '81343');")
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Mertens', 'Julius', '2297');")
_SQLite_Exec(-1, "INSERT INTO BeginnerDB(Name,Vorname,Telefon) VALUES ('Meier', 'Simone', '5794');")
EndIf
;
#Region Fenster für "Neuer Datensatz"
Global $hGuiNew = GUICreate("", 500, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Datensatz" erstellen
GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEButton")
Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
Global $aNew[$aHeader[0]] ; Array für die Input-IDs
For $i = 1 To $aHeader[0]
GUICtrlCreateLabel($aHeader[$i], 20 + ($i - 1) * 170, 15, 115, 15) ; Überschriften-Label erstellen
GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
$aNew[$i - 1] = GUICtrlCreateInput("", 15 + ($i - 1) * 170, 30, 125, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
Next
Global $hCreate = GUICtrlCreateButton("Datensatz einfügen", 190, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum Datensätze einfügen
GUICtrlSetOnEvent(-1, "_DsEinfuegen")
#EndRegion Fenster für "Neuer Datensatz"
;
While Sleep(1000)
WEnd
;
Func _DsAlleAnzeigen()
GUICtrlSetData($hEdit, "") ; vorher Editfeld leeren
; DB Abfrage der gesamten Tabelle "BeginnerDB"
_SQLite_Query($hDB, "SELECT * FROM BeginnerDB", $Query)
; Auslesen der Spaltenüberschriften
_SQLite_FetchNames($Query, $aNames)
GUICtrlSetData($hEdit, "_SQLite_LibVersion = " & _SQLite_LibVersion() & @CRLF & @CRLF & "SELECT * FROM BeginnerDB" & @CRLF & @CRLF, 1)
GUICtrlSetData($hEdit, StringFormat(" %10s %-10s %-10s %10s ", $aNames[0], $aNames[1], $aNames[2], $aNames[3]) & @CRLF & @CRLF, 1)
; Auslesen der nächsten Zeile
While _SQLite_FetchData($Query, $aRow, False, False) = $SQLITE_OK
GUICtrlSetData($hEdit, StringFormat(" %10s %-10s %-10s %10s ", $aRow[0], $aRow[1], $aRow[2], $aRow[3]) & @CRLF, 1)
WEnd
_SQLite_QueryFinalize($Query)
EndFunc ;==>_DsAlleAnzeigen
;
Func _DsLoeschen()
Local $sMsg = ""
GUICtrlSetData($hEdit, "") ; vorher Editfeld leeren
Local $iID = GUICtrlRead($iptDsLoeschen)
If _SQLite_Exec(-1, "DELETE FROM BeginnerDB WHERE ID = " & $iID & "") = $SQLITE_OK And $iID > 0 And $iID <= _SQLite_LastInsertRowID() Then
$sMsg = "" ; Erfolgreich
Else
$sMsg = @CRLF & @CRLF & "SQLite Error => " & _SQLite_ErrMsg() _
& @CRLF & @CRLF & "Der angegebene Datensatz konnte nicht gefunden werden !" ; Misserfolg
EndIf
GUICtrlSetData($iptDsLoeschen, "") ; Das IDfeld leeren
GUICtrlSetData($hEdit, "_SQLite_LibVersion = " & _SQLite_LibVersion() _
& @CRLF & @CRLF & "DELETE FROM BeginnerDB WHERE ID = " & $iID & "" _
& $sMsg & @CRLF & @CRLF & "Weiter mit => Alle Datensätze anzeigen.", 1)
EndFunc ;==>_DsLoeschen
;
Func _DsAendern()
Local $sMsg = ""
GUICtrlSetData($hEdit, "") ; vorher Editfeld leeren
Local $iID = GUICtrlRead($iptDsAendernID) ; ID auslesen
Local $iTel = GUICtrlRead($iptDsAendernTel) ; Telefon auslesen
;~ Prüfen, ob ID vorhanden ist.
If _SQLite_Exec(-1, "UPDATE BeginnerDB SET Telefon = '" & $iTel & "' WHERE ID = " _
& $iID & "") = $SQLITE_OK And $iID > 0 And $iID <= _SQLite_LastInsertRowID() Then
$sMsg = "" ; Erfolgreich
Else
$sMsg = @CRLF & @CRLF & "SQLite Error => " & _SQLite_ErrMsg() _
& @CRLF & @CRLF & "Der angegebene Datensatz konnte nicht gefunden werden !" ; Misserfolg
EndIf
GUICtrlSetData($iptDsAendernID, "") ; Das IdFeld leeren
GUICtrlSetData($iptDsAendernTel, "") ; Das TelefonFeld leeren
GUICtrlSetData($hEdit, "_SQLite_LibVersion = " & _SQLite_LibVersion() _
& @CRLF & @CRLF & "UPDATE BeginnerDB SET Telefon = " & $iTel & " WHERE ID = " & $iID & "" _
& $sMsg & @CRLF & @CRLF & "Weiter mit => Alle Datensätze anzeigen.", 1)
EndFunc ;==>_DsAendern
;
Func _DsSortierenEingabe()
GUICtrlSetData($hEdit, "") ; vorher Editfeld leeren
Local $s = GUICtrlRead($cboDsSortierenEingabe) ; Eingabe auslesen
; DB Abfrage der gesamten Tabelle "BeginnerDB"
_SQLite_Query($hDB, "SELECT * FROM BeginnerDB ORDER BY " & $s & "", $Query)
; Auslesen der Spaltenüberschriften
_SQLite_FetchNames($Query, $aNames)
GUICtrlSetData($hEdit, "_SQLite_LibVersion = " & _SQLite_LibVersion() & @CRLF & @CRLF & "SELECT * FROM BeginnerDB ORDER BY " & $s & "" & @CRLF & @CRLF, 1)
GUICtrlSetData($hEdit, StringFormat(" %10s %-10s %-10s %10s ", $aNames[0], $aNames[1], $aNames[2], $aNames[3]) & @CRLF & @CRLF, 1)
; Auslesen der nächsten Zeile
While _SQLite_FetchData($Query, $aRow, False, False) = $SQLITE_OK
GUICtrlSetData($hEdit, StringFormat(" %10s %-10s %-10s %10s ", $aRow[0], $aRow[1], $aRow[2], $aRow[3]) & @CRLF, 1)
WEnd
_SQLite_QueryFinalize($Query)
EndFunc ;==>_DsSortierenEingabe
;
Func _DsAuswaehlenEingabe()
GUICtrlSetData($hEdit, "") ; vorher Editfeld leeren
Local $s = GUICtrlRead($iptDsAuswahlEingabe) ; Eingabe auslesen
; DB Auswahlabfrage der Tabelle "BeginnerDB"
_SQLite_Query($hDB, "SELECT * FROM BeginnerDB WHERE Name LIKE '" & $s & "'", $Query)
; Auslesen der Spaltenüberschriften
_SQLite_FetchNames($Query, $aNames)
GUICtrlSetData($hEdit, "_SQLite_LibVersion = " & _SQLite_LibVersion() _
& @CRLF & @CRLF & "SELECT * FROM BeginnerDB WHERE Name LIKE '" & $s & "'" _
& @CRLF & @CRLF & "Weitere Auswahlabfragen befinden sich im Script !" & @CRLF & @CRLF, 1)
GUICtrlSetData($hEdit, StringFormat(" %10s %-10s %-10s %10s ", $aNames[0], $aNames[1], $aNames[2], $aNames[3]) & @CRLF & @CRLF, 1)
; Auslesen der nächsten Zeile
While _SQLite_FetchData($Query, $aRow, False, False) = $SQLITE_OK
GUICtrlSetData($hEdit, StringFormat(" %10s %-10s %-10s %10s ", $aRow[0], $aRow[1], $aRow[2], $aRow[3]) & @CRLF, 1)
WEnd
_SQLite_QueryFinalize($Query)
GUICtrlSetData($iptDsAuswahlEingabe, "") ; Das IDfeld leeren#cs
[/autoit] [autoit][/autoit] [autoit]
Weitere Auswahlabfragen :"SELECT * FROM BeginnerDB WHERE Telefon > 100"
[/autoit] [autoit][/autoit] [autoit]
"SELECT * FROM BeginnerDB WHERE name <> 'Meier'"
"SELECT * FROM BeginnerDB WHERE Telefon >= 100 AND Telefon <= 6000"
"SELECT * FROM BeginnerDB WHERE name LIKE 'm%'"
"SELECT * FROM BeginnerDB WHERE name LIKE '%i%'"
"SELECT * FROM BeginnerDB WHERE name LIKE 'M__er'"
"SELECT * FROM BeginnerDB WHERE name LIKE 'M___r'";i Hierbei ist die Anpassung der Anzahl von $aNames und $aRow erforderlich !
[/autoit] [autoit][/autoit] [autoit]
"SELECT name, vorname FROM BeginnerDB"
""SELECT Vorname, Name, Telefon FROM BeginnerDB"
#ceEndFunc ;==>_DsAuswaehlenEingabe
[/autoit] [autoit][/autoit] [autoit]
;
Func _DsAuswaehlen()
GUICtrlSetData($hEdit, "") ; vorher Editfeld leeren
; DB Auswahlabfrage der Tabelle "BeginnerDB"
_SQLite_Query($hDB, "SELECT Vorname, Name, Telefon FROM BeginnerDB WHERE Name LIKE 'M___r'", $Query)
; Auslesen der Spaltenüberschriften
_SQLite_FetchNames($Query, $aNames)
GUICtrlSetData($hEdit, "_SQLite_LibVersion = " & _SQLite_LibVersion() _
& @CRLF & @CRLF & "SELECT Vorname, Name, Telefon FROM BeginnerDB WHERE Name LIKE 'M___r'" _
& @CRLF & @CRLF & "Weitere Auswahlabfragen befinden sich im Script !" & @CRLF & @CRLF, 1)
GUICtrlSetData($hEdit, StringFormat(" %-10s %-10s %10s ", $aNames[0], $aNames[1], $aNames[2]) & @CRLF & @CRLF, 1)
; Auslesen der nächsten Zeile
While _SQLite_FetchData($Query, $aRow, False, False) = $SQLITE_OK
GUICtrlSetData($hEdit, StringFormat(" %-10s %-10s %10s ", $aRow[0], $aRow[1], $aRow[2]) & @CRLF, 1)
WEnd
_SQLite_QueryFinalize($Query)#cs
[/autoit] [autoit][/autoit] [autoit]
Weitere Auswahlabfragen :"SELECT Vorname, Name, Telefon FROM BeginnerDB WHERE Telefon > 100"
[/autoit] [autoit][/autoit] [autoit]
"SELECT Vorname, Name, Telefon FROM BeginnerDB WHERE name <> 'Meier'"
"SELECT Vorname, Name, Telefon FROM BeginnerDB WHERE Telefon >= 100 AND Telefon <= 6000"
"SELECT Vorname, Name, Telefon FROM BeginnerDB WHERE name LIKE 'm%'"
"SELECT Vorname, Name, Telefon FROM BeginnerDB WHERE name LIKE '%i%'"
"SELECT Vorname, Name, Telefon FROM BeginnerDB WHERE name LIKE 'M__er'"
"SELECT Vorname, Name, Telefon FROM BeginnerDB WHERE name LIKE 'M___r'";i Hierbei ist die Anpassung der Anzahl von $aNames und $aRow erforderlich !
[/autoit] [autoit][/autoit] [autoit]
"SELECT name, vorname FROM BeginnerDB"
"SELECT * FROM BeginnerDB WHERE Telefon > 100"
#ceEndFunc ;==>_DsAuswaehlen
[/autoit]
;
Func _DsEinfuegen()
_SQLite_Exec(-1, "INSERT INTO BeginnerDB (Name,Vorname,Telefon) VALUES ('" _
& GUICtrlRead($aNew[0]) & "','" & GUICtrlRead($aNew[1]) & "','" & GUICtrlRead($aNew[2]) & "');")
Sleep(50)
GUICtrlSetData($hEdit, "") ; vorher Editfeld leeren
GUICtrlSetData($hEdit, "_SQLite_LibVersion = " & _SQLite_LibVersion() _
& @CRLF & @CRLF & "INSERT INTO BeginnerDB (Name,Vorname,Telefon) VALUES ('" _
& GUICtrlRead($aNew[0]) & "','" & GUICtrlRead($aNew[1]) & "','" & GUICtrlRead($aNew[2]) & "');" _
& @CRLF & @CRLF & "Weiter mit => Alle Datensätze anzeigen !", 1)
; Alle Eingabefelder leeren, für weitere Eingaben.
For $i = 0 To UBound($aNew) - 1
GUICtrlSetData($aNew[$i], "")
Next
EndFunc ;==>_DsEinfuegen
;
Func _NewButton()
WinSetTitle($hGuiNew, "", "Neuer Datensatz") ; den Titel des Fenster anpassen
GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Datensatz" anzeigen
GUISetState(@SW_DISABLE, $hGUI) ; das Hauptfenster deaktivieren
EndFunc ;==>_NewButton
;
Func _CLOSEButton()
If @GUI_WinHandle = $hGUI Then
;
;~ _SQLite_Exec(-1, "DROP TABLE BeginnerDB;") ; Die Tabelle löschen !
_SQLite_Close()
_SQLite_Shutdown()
;
FileDelete("BeginnerDB.sqlite") ; Die DatenBank löschen !
Exit
Else
GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Datensatz"-Fenster verstecken
GUISetState(@SW_ENABLE, $hGUI) ; Hauptfenster wieder aktivieren
WinActivate($hGUI) ; und in den Vordergrund holen
EndIf
EndFunc ;==>_CLOSEButton
; EndeSQLite-Listview
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
#AutoIt3Wrapper_UseX64=n ; ### Win32-DLL ####include <SQLite.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <SQLite.dll.au3>Global $listview, $aResult, $iRows, $iColumns, $listviewID, $listviewText
[/autoit] [autoit][/autoit] [autoit]_SQLite_Startup()
[/autoit] [autoit][/autoit] [autoit]
If @error Then Exit MsgBox(16, "SQLite Fehler", "SQLite.dll konnte nicht geladen werden!")
_SQLite_Open()
If @error Then Exit MsgBox(16, "SQLite Fehler", "Kann die Datenbank nicht öffnen!");~ ### Die Tabelle "BeispielDB" erstellen. ###
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Exec(-1, "CREATE TABLE BeispielDB (ID INTEGER PRIMARY KEY, Name Text, Vorname Text, Summe Real);");~ ### Mustereingaben vornehmen ###
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Muster','Max',1000);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Duck','Donald',10030);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Duck','Daisy',400.55);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Bond','James',100.95);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Muster','Max',500);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Muster','Max',500);");~ ### Beispiel-Abfragen formulieren. ###
[/autoit] [autoit][/autoit] [autoit]
;i Rowid und ID sind nicht das Gleiche!;~ _SQLite_GetTable2d(-1, "Select rowid,* From BeispielDB", $aResult, $iRows, $iColumns)
[/autoit] [autoit][/autoit] [autoit]
;~ _SQLite_GetTable2d(-1, "Select Vorname,Name,Summe From BeispielDB", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "Select * From BeispielDB", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "Select * From BeispielDB WHERE name LIKE 'm%'", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "SELECT vorname,name,SUM(Summe) AS Gesamt FROM BeispielDB WHERE name LIKE 'm%'", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "SELECT name,SUM(Summe) AS Gesamt FROM BeispielDB WHERE name LIKE 'd%'", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "SELECT COUNT(name) AS Anzahl_Eintraege FROM BeispielDB", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "SELECT Name, SUM(Summe) AS Gesamt FROM BeispielDB GROUP BY Name", $aResult, $iRows, $iColumns)
_SQLite_GetTable2d(-1, "Select * From BeispielDB WHERE Summe >= 100 AND Summe <= 600", $aResult, $iRows, $iColumns)$listviewText = ""
[/autoit] [autoit][/autoit] [autoit]
For $iC = 0 To $iColumns - 1
$listviewText &= $aResult[0][$iC] & "|"
;~ MsgBox(0, "", $listviewText)
Next
;~ MsgBox(0, "", $listviewText)GUICreate("SQLite-listview", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
$listview = GUICtrlCreateListView($listviewText, 0, 0, 400, 300)
GUISetState(@SW_SHOW)For $iR = 1 To $iRows
[/autoit] [autoit][/autoit] [autoit]
$listviewID = ""
For $iC = 0 To $iColumns - 1
$listviewID &= $aResult[$iR][$iC] & "|"
;~ MsgBox(0,"",$listviewID)
Next
GUICtrlCreateListViewItem($listviewID, $listview)
Next_SQLite_Exec(-1, "DROP TABLE BeispielDB;")
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Close()
_SQLite_Shutdown()While GUIGetMsg() <> -3
[/autoit]
WEnd
; Ende -
Hi und herzlich Willkommen!
Hier ein Beispiel mit Kommentaren.Spoiler anzeigen
[autoit]
[/autoit]
; Ein kleiner Rechner:
Local $sInput = InputBox('Eingabe', 'Rechnung:')
; bei error und cancel beenden
If @error Then Exit
; beachte 2.5*2 = 5 und (5+10)*2 = 30
Local $nOutput = Execute(StringRegExpReplace($sInput, '[^\(\)\.\*\/\-\+\d]', '.'))
; bei einem fehlerhaften Ergebnis die Variable "$nOutput" mit "Error " überschreiben
; mit Unterstrich eine Zeilenumbruch erhalten
If $nOutput == "1.#INF" Or $nOutput == "-1.#IND" _
Or $nOutput = "" Then $nOutput = "Error "
; die Variable "$Ergebnis" ausgeben
MsgBox(0, '', $nOutput, 3)
Exit
; Ende -
SQLite - Datenbankinhalte aufbereiten und in einem dynamischen Listview darstellen.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
;~ #AutoIt3Wrapper_UseX64=n ; ### Win32-DLL ####include <SQLite.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <SQLite.dll.au3>Global $listview, $aResult, $iRows, $iColumns, $listviewID, $listviewText
[/autoit] [autoit][/autoit] [autoit]_SQLite_Startup()
[/autoit] [autoit][/autoit] [autoit]
If @error Then Exit MsgBox(16, "SQLite Fehler", "SQLite.dll konnte nicht geladen werden!")
_SQLite_Open()
If @error Then Exit MsgBox(16, "SQLite Fehler", "Kann die Datenbank nicht öffnen!");~ ### Die Tabelle "BeispielDB" erstellen. ###
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Exec(-1, "CREATE TABLE BeispielDB (ID INTEGER PRIMARY KEY, Name Text, Vorname Text, Summe Real);");~ ### Mustereingaben vornehmen ###
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Muster','Max',1000);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Duck','Donald',130.05);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Duck','Daisy',400.55);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Bond','James',100.95);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Muster','Max',500);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Duck','Dagobert',10030.52);")
_SQLite_Exec(-1, "INSERT INTO BeispielDB(Name,Vorname,Summe) VALUES ('Muster','Max',500);");~ ### Beispiel-Abfragen formulieren. ###
[/autoit] [autoit][/autoit] [autoit]
;i Rowid und ID sind nicht das Gleiche!;~ _SQLite_GetTable2d(-1, "Select rowid,* From BeispielDB", $aResult, $iRows, $iColumns)
[/autoit] [autoit][/autoit] [autoit]
;~ _SQLite_GetTable2d(-1, "Select Vorname,Name,Summe From BeispielDB", $aResult, $iRows, $iColumns)
_SQLite_GetTable2d(-1, "Select * From BeispielDB", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "Select * From BeispielDB WHERE name LIKE 'm%'", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "SELECT vorname,name,SUM(Summe) AS Gesamt FROM BeispielDB WHERE name LIKE 'd%'", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "SELECT name,SUM(Summe) AS Gesamt FROM BeispielDB WHERE name LIKE 'd%'", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "SELECT COUNT(name) AS Anzahl_Eintraege FROM BeispielDB", $aResult, $iRows, $iColumns)
;~ _SQLite_GetTable2d(-1, "SELECT Name, SUM(Summe) AS Gesamt FROM BeispielDB GROUP BY Name", $aResult, $iRows, $iColumns)$listviewText = ""
[/autoit] [autoit][/autoit] [autoit]
For $iC = 0 To $iColumns - 1
$listviewText &= $aResult[0][$iC] & "|"
;~ MsgBox(0, "", $listviewText)
Next
;~ MsgBox(0, "", $listviewText)GUICreate("SQLite-Listview", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
$listview = GUICtrlCreateListView($listviewText, 0, 0, 400, 300)
GUISetState(@SW_SHOW)For $iR = 1 To $iRows
[/autoit] [autoit][/autoit] [autoit]
$listviewID = ""
For $iC = 0 To $iColumns - 1
$listviewID &= $aResult[$iR][$iC] & "|"
;~ MsgBox(0,"",$listviewID)
Next
GUICtrlCreateListViewItem($listviewID, $listview)
Next_SQLite_Exec(-1, "DROP TABLE BeispielDB;")
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Close()
_SQLite_Shutdown()While GUIGetMsg() <> -3
[/autoit]
WEnd
; Ende -
Hi!
[autoit]
Schöne Idee, so kannst Du es leichter handhaben (Einbau in eine Statusleiste z.B.).
[/autoit]
MsgBox(0, "_ramGetUsagePercent", StringFormat("RAM Auslastung : %d%", _ramGetUsagePercent()))
Func _ramGetUsagePercent()
Local $aMem = MemGetStats()
Return $aMem[0]
EndFunc ;==>_ramUsagePercent
; Ende