• Moin-Moin zusammen.

    Ich möchte gerne meine weit über 1.000 Bücher verwalten und möchte deshalb eine Oberfläche dafür schreiben. Nur ich habe paar Fragen, bevor ich mit dem scripten beginne.

    So sieht die GUI derzeitig aus. Erweiterungen können ja evtl. später noch folgen:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Bookmanagment", 743, 588, 192, 124)
    $Input1 = GUICtrlCreateInput("Das Wesen", 136, 145, 601, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label1 = GUICtrlCreateLabel("Buchtitel :", 5, 147, 62, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label2 = GUICtrlCreateLabel("Buchautor :", 5, 178, 71, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Buchautor = GUICtrlCreateInput("Strobel, Arno", 136, 176, 601, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label3 = GUICtrlCreateLabel("Verlag :", 5, 210, 51, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Verlag = GUICtrlCreateInput("Fischer Verlag", 136, 208, 601, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label4 = GUICtrlCreateLabel("Erscheinungsdatum :", 5, 242, 129, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input2 = GUICtrlCreateInput("05.11.2010", 136, 240, 73, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label5 = GUICtrlCreateLabel("Preis in € :", 399, 242, 68, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input3 = GUICtrlCreateInput("8,95", 466, 239, 57, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label6 = GUICtrlCreateLabel("ISBN-10 :", 5, 277, 60, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input4 = GUICtrlCreateInput("3596186323", 136, 272, 113, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label8 = GUICtrlCreateLabel("ISBN-13 :", 258, 274, 60, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input5 = GUICtrlCreateInput("978-3596186327", 320, 272, 113, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label7 = GUICtrlCreateLabel("Einband :", 569, 242, 61, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input6 = GUICtrlCreateInput("Taschenbuch", 629, 239, 108, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label9 = GUICtrlCreateLabel("Seiten :", 464, 272, 50, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input7 = GUICtrlCreateInput("368", 525, 272, 105, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label10 = GUICtrlCreateLabel("ausgeliehen an :", 5, 306, 103, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input8 = GUICtrlCreateInput("Maria Musterfrau", 136, 304, 297, 21)
    $Label11 = GUICtrlCreateLabel("am :", 464, 304, 30, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input9 = GUICtrlCreateInput("31.02.2013", 522, 302, 78, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $bis = GUICtrlCreateLabel("bis :", 629, 305, 30, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input10 = GUICtrlCreateInput("31.03.2013", 661, 302, 75, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label12 = GUICtrlCreateLabel("Lagerplatz", 5, 329, 66, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input11 = GUICtrlCreateInput("Regal-B , Fach 3", 136, 328, 297, 21)
    $Label13 = GUICtrlCreateLabel("Schlagwörter :", 5, 352, 89, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input12 = GUICtrlCreateInput("Strobel , Das Wesen , Thriller , ", 200, 352, 537, 21)
    $Label14 = GUICtrlCreateLabel("Information - 1 :", 5, 380, 95, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $leer = GUICtrlCreateInput("gelesen von Mara Sörens, Ina Muster", 200, 376, 537, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label15 = GUICtrlCreateLabel("Information - 2 :", 5, 408, 95, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input13 = GUICtrlCreateInput("leer", 200, 408, 537, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label16 = GUICtrlCreateLabel("Kaufmöglichkeit :", 5, 440, 106, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input14 = GUICtrlCreateInput("http://www.buecher.de/shop/buecher/das-wesen/strobel-arno/products_products/detail/prod_id/29908840/", 200, 440, 537, 21)
    $Label17 = GUICtrlCreateLabel("B U C H V E R W A L T U N G ", 264, 8, 267, 27)
    GUICtrlSetFont(-1, 14, 800, 4, "Arial Narrow")
    GUICtrlSetColor(-1, 0x000080)
    $Button1 = GUICtrlCreateButton("Buch suchen", 8, 48, 123, 25)
    $Button2 = GUICtrlCreateButton("Neues Buch erfassen", 440, 48, 115, 25)
    $Checkbox1 = GUICtrlCreateCheckbox("", 220, 245, 17, 17)
    $Button3 = GUICtrlCreateButton("Sortieren nach Autor", 8, 80, 123, 25)
    $Button4 = GUICtrlCreateButton("aktuelles Buch bearbeiten", 256, 48, 179, 25)
    $Button5 = GUICtrlCreateButton("Sortieren nach Titel", 136, 80, 115, 25)
    $Button6 = GUICtrlCreateButton("sortieren nach Erscheinungsdatum", 256, 80, 179, 25)
    $Button7 = GUICtrlCreateButton("Speichern", 608, 112, 107, 25)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0xFF0000)
    $Label18 = GUICtrlCreateLabel("gelesen ?", 5, 464, 64, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input15 = GUICtrlCreateInput("Ja", 200, 464, 49, 21)
    $Label19 = GUICtrlCreateLabel("von 5 Sternen", 322, 466, 87, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Input16 = GUICtrlCreateInput("5", 304, 464, 17, 28)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Label20 = GUICtrlCreateLabel("vormerken", 240, 242, 68, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $Button8 = GUICtrlCreateButton("vorgemerkte Bücher", 440, 80, 115, 25)
    $Button9 = GUICtrlCreateButton("Schlagwortsuche", 136, 48, 115, 25)
    $Button10 = GUICtrlCreateButton("aktuelle Buch drucken", 280, 496, 195, 25)
    $Button11 = GUICtrlCreateButton("Erste Buch", 5, 496, 101, 25)
    $Button12 = GUICtrlCreateButton("vorheriger Buch", 128, 496, 113, 25)
    $Button13 = GUICtrlCreateButton("nächster Buch", 504, 496, 113, 25)
    $Button14 = GUICtrlCreateButton("Letztes Buch", 640, 496, 99, 25)
    $Button15 = GUICtrlCreateButton("Liste alle Bücher ausgeben", 560, 48, 179, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    ( hier in deutsch, damit es jeder versteht ;) )

    1.) Wie soll ich die Daten, abspeichern? INI? <-- bekomme ich hin aber wenn es denn im Array oder SQL sein sollte, dann bin ich überfordert.
    2.) kann man überhaupt prüfen, welche Bücher vorgemerkt sind. Diese erkennt man daran, das hinter "Erscheinungsdatum das Härkchen gesetzt ist.
    3.) Bei "ausgeliehen an" gibt es ganz rechte "bis", das soll 21 Tage mehr sein als das Datum "am". Sinnvoll? Ich möchte später, das ich erinnert werden, das Frau/Herr X seit x-Tagen das Buch ausgeliehen hat.

    Wenn wir zusammen das Projekt schaffen, können viele davon lernen, wie man eine "Verwaltungssoftware" aufbauen/entwickeln kann. Aus diesem Grund würde ich gerne alles hier so erklären/erklärt bekommen, das jeder damit möglichst viel lernen und damit verstehen kann. Für mich selber selbstverständlich auch ein großes Projekt, aus dem ich lernen kann.

    Komm und lass uns zusammen das Projekt woppen (schreibt man das so in Deutsch?). ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo Alina,

    1.) abspeichern würde ich das ganze in eine *xml
    2.) Sofern man es glaube ich in der *xml mit speichert und einfach abfragt wenn eine Aktion ausgeführt wird. Bzw. beim starten des Programmes ausliest welche alle vorgemekrt sind und in eine Array speichert, so muss das Programm nicht jedesmal Prüfen welche Vorgemerkt sind.
    3.) Ob das Sinvoll ist kann ich dir grade nicht sagen, wenn es für dich einfacher ist zu verstehen/merken, dann ist es sinvoll.

  • Erst einmal DANKE !
    XML? Noch nie mit bewußt gearbeitet. :(
    Array? Ist immernoch für mich ein halber bönischer Wald. :(
    Okay, dann ist es hiermit "sinnvoll".

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • sehr brauchbar !!!
    Warum nicht SQL? Weil ich damit noch nichts zu tun hatte und nicht weiß wie und wo ich da bei SQL anfangen soll es zu lernen und anzuwenden.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • SQL braucht man nicht zu lernen, das ist eher selbsterklärend. ^^

    Eine einfache Tabelle books:
    id (INT) | name (TEXT) | author (TEXT) | borrowed (BOOLEAN)

    Dann reicht ein einfacher Query: "SELECT * FROM books WHERE id = 5;"

    Damit bekomme ich dann alle Informationen zum Buch mit der ID 5. ^^

    Lässt sich sehr leicht verwalten, und das Reinlesen dauert vielleicht eine Stunde maximal.

    Gruß

  • Hallo,

    da gebe ich chesstiger Recht, SQL ist für soetwas top!

    Ich hatte vor Autoit zwar schon Erfahrung mit MySQL, aber es ist recht einfach sich die wenigen Befehle anzueignen.
    Habe nun schon mehrere kleine und große Projekte wie ein Lagerstandsprogramm und ein Buchhaltungsprogramm in Autoit mithilfe von MySQL geschrieben. - Funktioniert top und mit fertigen UDFs echt einfach zu programmieren!

    LG

  • Moin chesstiger.
    Alleine das was Du da geschrieben hats, ist für mich der Wald um die Ecke. :(

    Moin RR.
    Ich bin gerade dabei Dein Vorschlag zu durchschauen. Da blicke ich schon besser durch. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Okay, dann erklär' ich mal grundlegend, was (My)SQL(ite) überhaupt ist. ^^

    Zunächst, ist SQL eine reine Datenbanksprache. Sie wird ausschließlich für Aktionen im Zusammenhang mit Datenbänken benutzt, und dabei wird sie fast immer in andere Sprachen eingebettet (Beispiel: AutoIt). Es gibt sogar ganze Datenbankserver. Das könnten wir mit einem von vielen Bankgebäuden gleichsetzen. :D

    Den haben wir natürlich auf 127.0.0.1 liegen... :whistling:

    Weiterhin hostet jeder Datenbankserver eine beliebige Anzahl (gut, ist natürlich durch die Festplatten-Kapazität begrenzt) an Datenbanken. Anstatt von Datenbanken kann man hier dann auch eine Übersicht aller Konten bei einer Bank sehen... Bausparvertrag, Sparbuch, Taschengeldkonto des Kindes, normales Konto etc... In dieser Datenbank liegt alles, was wir brauchen, nämlich die Tabellen! Die wären in unserer Analogie dann die einzelnen Konten. ^^

    Auf diese Tabellen mit einer festgelegten Struktur (in meinem Beispiel war das INT, TEXT, TEXT, BOOLEAN) greift man mit gezielten Aufrufen zu; die eigentliche Anwendung der Sprache SQL. Im Jargon ist das dann ein Query. Dabei werden die Queries in einem sehr einfachen Format verfasst.
    Man kann sich zum Beispiel einen Query basteln, um Datensätze zu lesen, einzufügen, zu ändern oder zu löschen. Ein Datensatz ist dabei nichts anderes als eine Zeile der Tabelle. Dies sind wohl die vier bekanntesten Aktionen. ^^

    Die Struktur der Tabellen folgt nebenbei einer Typisierung. In meinem Beispiel halt eine Ganzzahl, ein Text, ein Text und ein Wahrheitswert (True und False).
    Dabei ist jede Spalte auch noch benannt, um sie eindeutig identifizieren zu können.

    Vergeben wir doch mal Namen für unsere Tabelle buecher. ^^

    Code
    INT id
    TEXT buchtitel 
    TEXT autor
    BOOLEAN verliehen




    Darauf könnten wir jetzt mit einem ganz einfachen Query zugreifen:

    SQL
    INSERT INTO buecher VALUES(1, "Per Anhalter durch die Galaxis", "Douglas Adams", false);



    Wir legen also das Buch "Per Anhalter durch die Galaxis" von Douglas Adams unter ID 1 ab. Dabei ist es nicht verliehen.

    Aber wenn ich mir das Buch von dir leihen will? :whistling:

    SQL
    UPDATE buecher SET verliehen=true WHERE id=1;

    Wo die ID gleich 1 ist, wird der Status auf 'verliehen' gesetzt. ;)

    Damit du den Überblick behältst, eine Option zum Anzeigen aller verliehenen Bücher:

    SQL
    SELECT * FROM buecher WHERE verliehen = true;


    Und was ist, wenn ich dein Buch kaputt mache? ;(

    SQL
    DELETE FROM buecher WHERE id=1;

    Alle Datensätze mit der ID 1 löschen... :D

    Ich hoffe, das gibt dir einen groben Überblick. :)

    Gruß

  • Hi,

    @alle anderen,
    Alina möchte, ausgestattet mit soliden AutoIt-Grundkenntnissen, eine einfache Buchverwaltung erstellen und (wie ich sie kenne) daran und damit arbeiten können, und nicht eine völlig neue Programmiersprache erlernen!

    Alina,
    ich fühle mit dir^^
    Generell sei gesagt, dass eine Datenbank"programmierung" nichts schlechtes ist für Leute, die sich täglich damit beschäftigen.

    Allerdings reicht für dein Vorhaben eine einfache Textdatei, CSV ist ein schönes Format, dass man mit jedem Editor oder Tabellenkalkulation bearbeiten kann, auch bspw. auf einem Linuxrechner, Mac oder sogar Smartphone...
    Wie ich dich kenne, hast du sicher schon eine Tabelle angelegt 8)

    Das Format ist supersimpel, die einzelnen "Felder" werden durch ein | getrennt.
    Buchtitel|Autor|Verlag|Erscheinungsdatum|vorgemerkt|....|||||||||||
    Das Wesen|Strobel, Arno|Fischer Verlag|20.11.2002|v|....||||||||||
    Fips und das Meer|Karl Mayer|08/15-Verlag|2.3.56|nv|....|||||||||

    Ich denke du bist in der Lage, eine so aufgebaute Textdatei zeilenweise einzulesen, die "Felder" anhand des | zu splitten und in die Maske einzutragen :thumbup:
    Bei der Eingabe von neuen Daten müssen lediglich die einzelnen Feldinhalte ausgelesen und, durch ein | getrennt, als komplette Zeile an die Datei angehängt werden.

    Ganz Fortgeschrittene lesen die Datei in ein 2-dimensionales Array ein, in dem dann bspw. einfachst gesucht und ersetzt werden kann. Dann bietet es sich an, die Inputfelder auch als Array aufzubauen.

    Vorteil ist, jedes x-beliebige Programm kann die .csv-Dateien lesen und weiterverarbeiten!

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (23. November 2013 um 09:55)

  • Erst einmal, ich fange jetzt zum zweiten mal an, den nachfolgenden Text zu schreiben. Beim ersten versuch war aus mir nicht ersichtlichen Gründen, auf einmal das Eingabefenster wieder leer. Nicht das ich gerade fertig war. Neiiiiiiiin. :cursing: Und jetzt wieder die richtigen Worte finden? Mann-o-Mann, mir dampft der Kopf. Halbe Nacht im Bett gelegen und mir Gedanken gemacht, wie ich das hin bekomme. Dann mich an Worte vom "Array-King" erinnert, das man fast alles ins Array packen kann. Somit ist der Kampf "Array vs. SQL", zugunsten des Array's entschieden.

    Aber beginne ich ersteinmal damit, das ich mich bedanken möchte bei allen die bis jetzt hilfreich dazu beigetragen haben. :thumbup:
    Andy, Du machst mir angst. Du kennst mich zu gut. Hast aber mit Deinen Worten recht.
    chesstiger , Du sollst keine Bücher kaputt machen. Bist doch kein Kleinkind mehr. Schon meine acht Jahre junge Nichte weiß, das man Bücher, die man nicht mehr haben möchte, zu Geld machen kann.
    Okay, kommen wir nun zum Problem bzw. rede ich weiter.
    Wenn ich feste Datenbestände habe, gehe ich wie folgt vor, wobei ich hier im Bsp. zwei mal den "Strobel-Datensatz" verwendet habe:

    Spoiler anzeigen
    [autoit]


    ; Pfad zur Datei: m:\autoit\lernen\array\datei_nr_0017\array_2_d.au3

    [/autoit] [autoit][/autoit] [autoit]

    ; erst Include angeben
    #include <Array.au3>
    ; Array mit Daten bestücken/füllen
    Local $bookrray[2][21] = [["Das Wesen", "Strobel, Arno", "Fischer Verlag", "05.11.2010", "X", "8,95", "Taschenbuch", "3596186323", "9783596186327", "368", "Maria Musterfrau", "31.02.2013", "31.03.2013", "Regal-B , Fach 3", "Strobel , Das Wesen , Thriller ,", "gelesen von Mara Sörens, Ina Müller", "leer", "http://www.buecher.de/shop/buecher/das-wesen/strobel-arno/products_products/detail/prod_id/29908840/", "Ja", "5" ],["Das Wesen", "Strobel, Arno", "Fischer Verlag", "05.11.2010", "X", "8,95", "Taschenbuch", "3596186323", "9783596186327", "368", "Maria Musterfrau", "31.02.2013", "31.03.2013", "Regal-B , Fach 3", "Strobel , Das Wesen , Thriller", "gelesen von Mara Sörens, Ina Müller", "leer", "http://www.buecher.de/shop/buecher/das-wesen/strobel-arno/products_products/detail/prod_id/29908840/", "Ja", "5" ]]
    ; Datenausgabe im horiz. 2D Array ausgeben
    _ArrayDisplay($bookrray, "$bookrray als horiz. 2D Array")
    ; Datenausgabe im vertik. 2D Array
    _ArrayDisplay($bookrray, "$bookrray als vertik. 2D Array (Zeile mit Spalte getauscht)", -1, 1)

    [/autoit]

    Das sind, wie gesagt, ja feste Datensätze und ich möchte, da es sich um ein Buchverwaltungsscript handelt die Datensätze flexibel haben. Es sollen Datensätze dazu kommen können, Datensätze bearbeitet werden können und Datensätze gelöscht werden können.
    Somit müssen die Datensätze ausgelagert werden. Benenne ich die Auslagerungsdatei mal "buch_db.csv".
    Wie ich da die textbasierten Inputfelder speichern würde, ist mir klar, da ich es bereits bei anderen Scripten gemacht habe.
    Wie sieht es da aus mit "Checkbox1", was muss in die buch_db.csv geschrieben werden, wenn es angeharkt ist und was wenn es nicht angeharkt ist? Wenn die Frage ausreichend gelöst ist, bin ich schon mal einen Schritt weiter.

    Mal zwischendurch: "K-O-P-F-K-I-N-O"

    Ein weiteres Problem ist es, die Daten dann von der "buch_db.csv" ins Array und dann ins Inputfeld zurück zu bekommen.

    Soweit sollte es erst einmal reichen.
    Wenn dieses Projekt fertig ist und alle Beeidigten dann nichts dagegen haben, würde ich das ganze gerne so dokumentieren, das es von jedem verstanden wird. Vielleicht wird es dann ein Tutorial. ;)

    So sollte die buch_db.csv doch mit einem Datensatz aussehen, oder? Nur das "X" an fünfter Stelle ist erraten, da es sich um das o. g. Problem der Checkbox1 ist.

    Spoiler anzeigen
    [autoit]


    Das Wesen | Strobel, Arno | Fischer Verlag | 05.11.2010 | X | 8,95| Taschenbuch | 3596186323 | 9783596186327 | 368 | Maria Musterfrau | 31.02.2013 | 31.03.2013 | Regal-B , Fach 3 | Strobel , Das Wesen , Thriller , | gelesen von Mara Sörens, Ina Müller | leer | http://www.buecher.de/shop/buecher/d…od_id/29908840/ | Ja | 5

    [/autoit]

    Lieb wäre, wenn ich bezogene Beispiele zu Eurer Hilfe beifügt. Was Arrays betrifft bin ich etwas blond. ;)

    Ich wünsche allen ein schönes Wochenende

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • An dieser Stelle würde ich dich Alina gerne mal auf einen wahrscheinlich längst von dir vergessenen Thread hier im Forum aufmerksam machen. Dort wurde eine ganze Reihe an Alternativen aufgezeigt wie man auch in Autoit "schön" mit großen Datenmengen/Listen hantieren kann - ohne Arrays. ;)
    Du kannst dir damit ganz sicher etwas passendes basteln... :whistling:

    LG
    Christoph :)

    • Offizieller Beitrag

    RR04 hatte in Post#4 schonmal auf mein Listview-Datenbank-Beispiel hingewiesen, aber der Link funktioniert nicht.
    Deshalb hier mal der richtige Link dorthin: Listview-Datenbank-Beispiel
    Eigentlich ist in dem Beispiel schon alles vorhanden. Du musst bloß die Anzahl der Spalten anpassen und die Spaltenüberschriften ändern.
    Das Script ist auch reichlich kommentiert. Wenn dann noch Fragen sind...

  • Hallo Alina,

    fangen wir mal vorne an....
    Das "Grundgerüst", also die GUI zur Datenein- und ausgabe hast du schon, ggf. werden wir das noch etwas modifizieren müssen, aber dazu später^^

    Folgender Ansatz.:
    Du füllst die GUI mit "neuen" Buch-Daten, um erstmal die Datei zu erstellen.
    Der Button dazu ist "Neues Buch erfassen". Wenn man dort draufklickt, sollen sämtliche Daten aus der Eingabemaske in die Datei geschrieben werden.

    Dazu liest man sämtliche Inputfelder und Checkboxen mit

    [autoit]

    guictrlread()

    [/autoit]

    aus, fügt sie per

    [autoit]

    & "|" &

    [/autoit]

    zusammen und schreibt diesen String per

    [autoit]

    Filewrite()

    [/autoit]

    an das Ende der Datei buch_db.csv.
    Ist die Checkbox angehakt, schreibst du einfach ein x in die Datei....
    Ich würde die Control-ID´s sämtlicher Inputfelder zusammenfassen in einem Array. Warum? Weil du dann ganz einfach in einer 3-zeiligen Schleife den kompletten "Datenbankstring" aufbauen kannst.


    Ich habe jetzt dein Programm mal etwas angepasst (Koda macht das nicht "schön") und um ca. 50 Zeilen erweitert, damit du weiterspielen kannst und siehst, wie man so etwas ohne viel knowhow aufbauen kann^^
    Die Buttons, die man benutzen kann, sind grün.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    dim $input[30] ;maximale Anzahl Felder, das sollte reichen^^
    dim $label[30] ;sollten so viele wie input sein
    dim $Checkbox[10] ;anzahl checkboxen

    [/autoit] [autoit][/autoit] [autoit]

    global $Dateiname = "buch_db.csv"
    global $inhalt ;Dateiinhalt von $Dateiname
    global $zeile ;Zeileninhalt (Array)
    global $Buchnummer ; na was wohl, die angezeigte.....Buchnummer^^

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Bookmanagment", 743, 588, 192, 124) ;Gui

    [/autoit] [autoit][/autoit] [autoit]

    ;inputs
    $input[0] = GUICtrlCreateInput("", 1, 1, 1, 1) ;Datenbank ?! ^^
    $input[1] = GUICtrlCreateInput("", 136, 145, 601, 28) ;Buchtitel
    $input[2] = GUICtrlCreateInput("", 136, 176, 601, 28) ;Autor
    $input[3] = GUICtrlCreateInput("", 136, 208, 601, 28) ;Verlag
    $input[4] = GUICtrlCreateInput("", 136, 240, 73, 28) ;Erscheinungsdatum
    $input[5] = GUICtrlCreateInput("", 466, 239, 57, 28) ;Preis
    $input[6] = GUICtrlCreateInput("", 136, 272, 113, 28) ;ISBN10
    $input[7] = GUICtrlCreateInput("", 320, 272, 113, 28) ;ISBN13
    $input[8] = GUICtrlCreateInput("", 629, 239, 108, 28) ;Einband
    $input[9] = GUICtrlCreateInput("", 525, 272, 105, 28) ;Seiten
    $input[10] = GUICtrlCreateInput("", 136, 304, 297, 21) ;verliehen an
    $input[11] = GUICtrlCreateInput("", 522, 302, 78, 28) ;verliehen am
    $input[12] = GUICtrlCreateInput("", 661, 302, 75, 28) ;verliehen bis
    $input[13] = GUICtrlCreateInput("", 136, 328, 297, 21) ;Lagerplatz
    $input[14] = GUICtrlCreateInput("", 200, 352, 537, 21) ;Schlagwörter
    $input[15] = GUICtrlCreateInput("", 200, 376, 537, 28) ;Info1
    $input[16] = GUICtrlCreateInput("", 200, 408, 537, 28) ;Info2
    $input[17] = GUICtrlCreateInput("", 200, 440, 537, 21) ;Kaufmöglichkeit
    $input[19] = GUICtrlCreateInput("", 200, 464, 49, 21) ;gelesen
    $input[20] = GUICtrlCreateInput("", 304, 464, 17, 28) ;sterne

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;labels
    $label[0] = GUICtrlCreateLabel("Anzahl Bücher :", 5, 15, 150, 24)
    $label[1] = GUICtrlCreateLabel("Buchtitel :", 5, 147, 62, 24)
    $label[2] = GUICtrlCreateLabel("Buchautor :", 5, 178, 71, 24)
    $label[3] = GUICtrlCreateLabel("Verlag :", 5, 210, 51, 24)
    $label[4] = GUICtrlCreateLabel("Erscheinungsdatum :", 5, 242, 129, 24)
    $label[5] = GUICtrlCreateLabel("Preis in € :", 399, 242, 68, 24)
    $label[6] = GUICtrlCreateLabel("ISBN-10 :", 5, 277, 60, 24)
    $label[8] = GUICtrlCreateLabel("ISBN-13 :", 258, 274, 60, 24)
    $label[7] = GUICtrlCreateLabel("Einband :", 569, 242, 61, 24)
    $label[9] = GUICtrlCreateLabel("Seiten :", 464, 272, 50, 24)
    $label[10] = GUICtrlCreateLabel("ausgeliehen an :", 5, 306, 103, 24)
    $label[11] = GUICtrlCreateLabel("am :", 464, 304, 30, 24)
    $label[12] = GUICtrlCreateLabel("bis :", 629, 305, 30, 24)
    $label[13] = GUICtrlCreateLabel("Lagerplatz", 5, 329, 66, 24)
    $label[14] = GUICtrlCreateLabel("Schlagwörter :", 5, 352, 89, 24)
    $label[15] = GUICtrlCreateLabel("Information - 1 :", 5, 380, 95, 24)
    $label[16] = GUICtrlCreateLabel("Information - 2 :", 5, 408, 95, 24)
    $label[17] = GUICtrlCreateLabel("Kaufmöglichkeit :", 5, 440, 106, 24)
    $label[18] = GUICtrlCreateLabel("B U C H V E R W A L T U N G ", 264, 8, 267, 27)
    $label[19] = GUICtrlCreateLabel("gelesen ?", 5, 464, 64, 24)
    $label[20] = GUICtrlCreateLabel("von 5 Sternen", 322, 466, 87, 24)
    $label[21] = GUICtrlCreateLabel("vormerken", 240, 242, 68, 24)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;alle schriftarten setzen für inputs und label
    for $i = 0 to UBound($input) - 1 ;inputs und/oder labels
    GUICtrlSetFont($input[$i], 12, 400, 0, "Arial Narrow")
    GUICtrlSetFont($label[$i], 12, 400, 0, "Arial Narrow")
    next

    [/autoit] [autoit][/autoit] [autoit]

    $Checkbox[0] = GUICtrlCreateCheckbox("", 220, 245, 17, 17)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Button1 = GUICtrlCreateButton("Buch suchen", 8, 48, 123, 25)
    $Button2 = GUICtrlCreateButton("Neues Buch erfassen", 440, 48, 115, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button3 = GUICtrlCreateButton("Sortieren nach Autor", 8, 80, 123, 25)
    $Button4 = GUICtrlCreateButton("aktuelles Buch bearbeiten", 256, 48, 179, 25)
    $Button5 = GUICtrlCreateButton("Sortieren nach Titel", 136, 80, 115, 25)
    $Button6 = GUICtrlCreateButton("sortieren nach Erscheinungsdatum", 256, 80, 179, 25)
    $Button7 = GUICtrlCreateButton("Speichern", 608, 112, 107, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button8 = GUICtrlCreateButton("vorgemerkte Bücher", 440, 80, 115, 25)
    $Button9 = GUICtrlCreateButton("Schlagwortsuche", 136, 48, 115, 25)
    $Button10 = GUICtrlCreateButton("aktuelle Buch drucken", 280, 496, 195, 25)
    $Button11 = GUICtrlCreateButton("Erste Buch", 5, 496, 101, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button12 = GUICtrlCreateButton("vorheriger Buch", 128, 496, 113, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button13 = GUICtrlCreateButton("nächster Buch", 504, 496, 113, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button14 = GUICtrlCreateButton("Letztes Buch", 640, 496, 99, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button15 = GUICtrlCreateButton("Liste alle Bücher ausgeben", 560, 48, 179, 25)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    _Einlesen_Datei() ;liest die Daten-Datei ein

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn mit einem leeren Datensatz gestartet werden soll, die nächsten 2 Zeilen auskommentieren
    $Buchnummer = 1 ;erstes Buch anzeigen
    _Anzeige_Datensatz_nr($Buchnummer) ;erstes Buch anzeigen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button7 ;speichern
    _Speichern_in_Datei()
    case $Button2 ;Neues Buch
    _Anzeige_leeren() ;leerer Datensatz
    case $Button11 ;erstes Buch
    $Buchnummer = 1
    _Anzeige_Datensatz_nr($Buchnummer)
    case $Button12 ;vorheriges Buch
    $Buchnummer = $Buchnummer - 1
    _Anzeige_Datensatz_nr($Buchnummer)
    case $Button13 ;nächstes Buch
    $Buchnummer = $Buchnummer + 1
    _Anzeige_Datensatz_nr($Buchnummer)
    case $Button14 ;letztes Buch
    $Buchnummer = UBound($zeile) - 2
    _Anzeige_Datensatz_nr($Buchnummer)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func _Einlesen_Datei() ;liest die Daten-Datei ein
    $inhalt = FileRead($Dateiname) ;der komplette dateiinhalt
    if $inhalt = "" then $inhalt = _neue_Datei() ;wenn datei leer, dann neue Datendatei erstellen
    $zeile = StringSplit($inhalt, @crlf, 3) ;erstellt ein array aus Datenzeilen
    GUICtrlSetData($label[0], "Anzahl Bücher : " & UBound($zeile) - 2)
    endfunc ;==>_Einlesen_Datei

    [/autoit] [autoit][/autoit] [autoit]

    func _Anzeige_Datensatz_nr($nummer) ;zeigt die Daten an
    if UBound($zeile) <= 2 then return ;wenn noch kein buch eingegeben
    if $nummer < 1 then $nummer = UBound($zeile) - 2 ;wenn kleiner als erstes buch =>letztes Buch anzeigen
    if $nummer > UBound($zeile) - 2 then $nummer = 1 ;wenn grösser als letztes Buch => erstes Buch anzeigen
    $Buchnummer = $nummer
    $feld = StringSplit($zeile[$nummer], "|", 3) ;Array aus den einzelnen Feldern in der Datenzeile
    for $i = 0 to UBound($input) - 1 ;alle inputfelder füllen
    GUICtrlSetData($input[$i], $feld[$i]) ;Feldinhalt in input schreiben
    Next
    for $i = 0 to UBound($Checkbox) - 1 ;checkboxen füllen
    $status = $feld[$i + UBound($input)]
    GUICtrlSetState($Checkbox[$i], $status) ;Status der checkboxen setzen
    Next
    endfunc ;==>_Anzeige_Datensatz_nr

    [/autoit] [autoit][/autoit] [autoit]

    func _Speichern_in_Datei() ;speichert die Daten in eine Datei
    $Datensatz = "" ;
    for $i = 0 to UBound($input) - 1 ;alle Input-Felder zusammenfassen
    $Datensatz = $Datensatz & GUICtrlRead($input[$i]) & "|" ;in eine Zeile
    Next
    for $i = 0 to UBound($Checkbox) - 1 ;alle Checkbox-Felder zusammenfassen
    $Datensatz = $Datensatz & GUICtrlRead($Checkbox[$i]) & "|" ;Status der checkboxen speichern
    Next
    if StringInStr($inhalt, $Datensatz) = 0 or $inhalt = "" then ;nur wenn Datensatz noch nicht vorhanden oder datei leer
    FileWrite($Dateiname, $Datensatz & @crlf) ;Datensatzzeile in Datei schreiben
    $inhalt = $inhalt & $Datensatz ;auch in den Speicher schreiben
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $inhalt = ' & $inhalt & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    MsgBox(0, "Buchverwaltung", "Datensatz gespeichert!", 1)
    Else
    MsgBox(0, "Buchverwaltung", "Datensatz bereits vorhanden")
    endif
    _Einlesen_Datei() ;alle Daten auf den neuesten Stand bringen
    EndFunc ;==>_Speichern_in_Datei

    [/autoit] [autoit][/autoit] [autoit]

    func _neue_Datei() ;speichert die Daten in eine Datei
    $Datensatz = "" ;
    for $i = 0 to UBound($input) - 1 ;alle Label zusammenfassen
    $Datensatz = $Datensatz & GUICtrlRead($label[$i]) & "|" ;in eine Zeile
    Next
    for $i = 0 to UBound($Checkbox) - 1 ;alle Checkbox-Felder zusammenfassen
    $Datensatz = $Datensatz & GUICtrlRead($Checkbox[$i]) & "|" ;Status der checkboxen speichern
    Next
    FileWrite($Dateiname, $Datensatz & @crlf) ;Datensatzzeile in Datei schreiben
    _Einlesen_Datei()
    MsgBox(0, "Buchverwaltung", "Die Datei " & $Dateiname & " war nicht vorhanden oder leer!" & @crlf & "Es wurde eine neue Buchdatei unter dem Namen " & $Dateiname & " angelegt!")
    EndFunc ;==>_neue_Datei

    [/autoit] [autoit][/autoit] [autoit]

    func _Anzeige_leeren()
    for $i = 0 to UBound($input) - 1 ;alle inputfelder füllen
    GUICtrlSetData($input[$i], "") ;Feldinhalt in input schreiben
    Next
    for $i = 0 to UBound($Checkbox) - 1
    $status = $GUI_UNCHECKED
    GUICtrlSetState($Checkbox[$i], $status) ;Status der checkboxen setzen
    Next
    endfunc ;==>_Anzeige_leeren
    ;==>_Speichern_in_Datei

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    //EDIT habe gerade gemerkt, das Excel die csv nicht getrennt, sondern als kompletten Text einliest, OpenOffice ist wieder mal besser und bietet beim Einlesen einen Filter an....
    Wer unter Windows die csv mit Openoffice verknüpft hat, kann mit einem einfachen

    [autoit]

    shellexecute($dateiname)

    [/autoit]

    mit OpenOffice Drucken, sortieren, Filtern uswusf :P

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    4 Mal editiert, zuletzt von Andy (23. November 2013 um 18:24)

  • Hallo Andy.

    Ersteinmal Danke für geschriebenes. ;) An Alle versteht sich.

    Habe mir die letzten Stunden Dein Script durchgeschaut und schon mal eine Sache mehr zugefüght.

    Jetzt kann man Datensätze bearbeiten.
    Ich siehe der DB, den zu bearbeitenden Datensatz "unterm Hintern weg" und schreibe ihn neu.
    Siehe Zeile 136 bis 142

    WICHTIG !!!
    zum ändern zu dem Buch gehen was man bearbeiten möchte, die Bearbeitung durchführen und dann den Button drücken "aktuelles Buch bearbeiten".

    Gibt sicherlich eine bessere Lösung und ich bin allem gegenüber offen.

    Derzeitig sieht es so aus:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    dim $input[30] ;maximale Anzahl Felder, das sollte reichen^^
    dim $label[30] ;sollten so viele wie input sein
    dim $Checkbox[10] ;anzahl checkboxen

    [/autoit] [autoit][/autoit] [autoit]

    global $Dateiname = "buch_db.csv"
    global $inhalt ;Dateiinhalt von $Dateiname
    global $zeile ;Zeileninhalt (Array)
    global $Buchnummer ; na was wohl, die angezeigte.....Buchnummer^^

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Bookmanagment", 743, 588, 192, 124) ;Gui

    [/autoit] [autoit][/autoit] [autoit]

    ;inputs
    $input[0] = GUICtrlCreateInput("", 1, 1, 1, 1) ;Datenbank ?! ^^
    $input[1] = GUICtrlCreateInput("", 136, 145, 601, 28) ;Buchtitel
    $input[2] = GUICtrlCreateInput("", 136, 176, 601, 28) ;Autor
    $input[3] = GUICtrlCreateInput("", 136, 208, 601, 28) ;Verlag
    $input[4] = GUICtrlCreateInput("", 136, 240, 80, 28) ;Erscheinungsdatum
    $input[5] = GUICtrlCreateInput("", 466, 239, 57, 28) ;Preis
    $input[6] = GUICtrlCreateInput("", 136, 272, 113, 28) ;ISBN10
    $input[7] = GUICtrlCreateInput("", 320, 272, 113, 28) ;ISBN13
    $input[8] = GUICtrlCreateInput("", 629, 239, 108, 28) ;Einband
    $input[9] = GUICtrlCreateInput("", 525, 272, 105, 28) ;Seiten
    $input[10] = GUICtrlCreateInput("", 136, 304, 297, 21) ;verliehen an
    $input[11] = GUICtrlCreateInput("", 522, 302, 78, 28) ;verliehen am
    $input[12] = GUICtrlCreateInput("", 661, 302, 75, 28) ;verliehen bis
    $input[13] = GUICtrlCreateInput("", 136, 328, 297, 21) ;Lagerplatz
    $input[14] = GUICtrlCreateInput("", 200, 352, 537, 21) ;Schlagwörter
    $input[15] = GUICtrlCreateInput("", 200, 376, 537, 28) ;Info1
    $input[16] = GUICtrlCreateInput("", 200, 408, 537, 28) ;Info2
    $input[17] = GUICtrlCreateInput("", 200, 440, 537, 21) ;Kaufmöglichkeit
    $input[19] = GUICtrlCreateInput("", 200, 464, 49, 21) ;gelesen
    $input[20] = GUICtrlCreateInput("", 304, 464, 17, 28) ;sterne

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;labels
    $label[0] = GUICtrlCreateLabel("Anzahl Bücher :", 5, 15, 150, 24)
    $label[1] = GUICtrlCreateLabel("Buchtitel :", 5, 147, 62, 24)
    $label[2] = GUICtrlCreateLabel("Buchautor :", 5, 178, 71, 24)
    $label[3] = GUICtrlCreateLabel("Verlag :", 5, 210, 51, 24)
    $label[4] = GUICtrlCreateLabel("Erscheinungsdatum :", 5, 242, 129, 24)
    $label[5] = GUICtrlCreateLabel("Preis in € :", 399, 242, 68, 24)
    $label[6] = GUICtrlCreateLabel("ISBN-10 :", 5, 277, 60, 24)
    $label[8] = GUICtrlCreateLabel("ISBN-13 :", 258, 274, 60, 24)
    $label[7] = GUICtrlCreateLabel("Einband :", 569, 242, 61, 24)
    $label[9] = GUICtrlCreateLabel("Seiten :", 464, 272, 50, 24)
    $label[10] = GUICtrlCreateLabel("ausgeliehen an :", 5, 306, 103, 24)
    $label[11] = GUICtrlCreateLabel("am :", 464, 304, 30, 24)
    $label[12] = GUICtrlCreateLabel("bis :", 629, 305, 30, 24)
    $label[13] = GUICtrlCreateLabel("Lagerplatz", 5, 329, 66, 24)
    $label[14] = GUICtrlCreateLabel("Schlagwörter :", 5, 352, 89, 24)
    $label[15] = GUICtrlCreateLabel("Information - 1 :", 5, 380, 95, 24)
    $label[16] = GUICtrlCreateLabel("Information - 2 :", 5, 408, 95, 24)
    $label[17] = GUICtrlCreateLabel("Kaufmöglichkeit :", 5, 440, 106, 24)
    $label[18] = GUICtrlCreateLabel("B U C H V E R W A L T U N G ", 264, 8, 267, 27)
    $label[19] = GUICtrlCreateLabel("gelesen ?", 5, 464, 64, 24)
    $label[20] = GUICtrlCreateLabel("von 5 Sternen", 322, 466, 87, 24)
    $label[21] = GUICtrlCreateLabel("vormerken", 240, 242, 68, 24)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;alle schriftarten setzen für inputs und label
    for $i = 0 to UBound($input) - 1 ;inputs und/oder labels
    GUICtrlSetFont($input[$i], 12, 400, 0, "Arial Narrow")
    GUICtrlSetFont($label[$i], 12, 400, 0, "Arial Narrow")
    next

    [/autoit] [autoit][/autoit] [autoit]

    $Checkbox[0] = GUICtrlCreateCheckbox("", 220, 245, 17, 17)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Button1 = GUICtrlCreateButton("Buch suchen", 8, 48, 123, 25)
    $Button2 = GUICtrlCreateButton("Neues Buch erfassen", 440, 48, 115, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button3 = GUICtrlCreateButton("Sortieren nach Autor", 8, 80, 123, 25)
    $Button4 = GUICtrlCreateButton("aktuelles Buch bearbeiten", 256, 48, 179, 25)
    GUICtrlSetBkColor(-1, 0xFF0000)
    $Button5 = GUICtrlCreateButton("Sortieren nach Titel", 136, 80, 115, 25)
    $Button6 = GUICtrlCreateButton("sortieren nach Erscheinungsdatum", 256, 80, 179, 25)
    $Button7 = GUICtrlCreateButton("Speichern", 608, 112, 107, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button8 = GUICtrlCreateButton("vorgemerkte Bücher", 440, 80, 115, 25)
    $Button9 = GUICtrlCreateButton("Schlagwortsuche", 136, 48, 115, 25)
    $Button10 = GUICtrlCreateButton("aktuelle Buch drucken", 280, 496, 195, 25)
    $Button11 = GUICtrlCreateButton("Erste Buch", 5, 496, 101, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button12 = GUICtrlCreateButton("vorheriger Buch", 128, 496, 113, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button13 = GUICtrlCreateButton("nächster Buch", 504, 496, 113, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button14 = GUICtrlCreateButton("Letztes Buch", 640, 496, 99, 25)
    GUICtrlSetBkColor(-1, 0x00FF00)
    $Button15 = GUICtrlCreateButton("Liste alle Bücher ausgeben", 560, 48, 179, 25)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _Einlesen_Datei() ;liest die Daten-Datei ein

    [/autoit] [autoit][/autoit] [autoit]

    ;wenn mit einem leeren Datensatz gestartet werden soll, die nächsten 2 Zeilen auskommentieren
    $Buchnummer = 1 ;erstes Buch anzeigen
    _Anzeige_Datensatz_nr($Buchnummer) ;erstes Buch anzeigen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button7 ;speichern
    _Speichern_in_Datei()
    case $Button2 ;Neues Buch
    _Anzeige_leeren() ;leerer Datensatz
    case $Button11 ;erstes Buch
    $Buchnummer = 1
    _Anzeige_Datensatz_nr($Buchnummer)
    case $Button12 ;vorheriges Buch
    $Buchnummer = $Buchnummer - 1
    _Anzeige_Datensatz_nr($Buchnummer)
    case $Button13 ;nächstes Buch
    $Buchnummer = $Buchnummer + 1
    _Anzeige_Datensatz_nr($Buchnummer)
    case $Button14 ;letztes Buch
    $Buchnummer = UBound($zeile) - 2
    _Anzeige_Datensatz_nr($Buchnummer)
    case $Button4 ; aktuelles Buch Bearbeiten
    _Bearbeiten_Datensatz_nr($Buchnummer)

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func _Bearbeiten_Datensatz_nr($Buchnummer)
    FileOpen($Dateiname,1) ; *.db öffen
    _FileWriteToLine($Dateiname, $Buchnummer+1, '', 1) ; in *.db die Zeile mit dem zu bearbeitenden Datensatz löschen
    FileClose($Dateiname) ; *.db schließen
    sleep(500) ; kleine Pause
    _Speichern_in_Datei() ; akutelle bzw. bearbeiteten Datensatz speichern.
    endfunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func _Einlesen_Datei() ;liest die Daten-Datei ein
    $inhalt = FileRead($Dateiname) ;der komplette dateiinhalt
    if $inhalt = "" then $inhalt = _neue_Datei() ;wenn datei leer, dann neue Datendatei erstellen
    $zeile = StringSplit($inhalt, @crlf, 3) ;erstellt ein array aus Datenzeilen
    GUICtrlSetData($label[0], "Anzahl Bücher : " & UBound($zeile) - 2)
    endfunc ;==>_Einlesen_Datei

    [/autoit] [autoit][/autoit] [autoit]

    func _Anzeige_Datensatz_nr($nummer) ;zeigt die Daten an
    if UBound($zeile) <= 2 then return ;wenn noch kein buch eingegeben
    if $nummer < 1 then $nummer = UBound($zeile) - 2 ;wenn kleiner als erstes buch =>letztes Buch anzeigen
    if $nummer > UBound($zeile) - 2 then $nummer = 1 ;wenn grösser als letztes Buch => erstes Buch anzeigen
    $Buchnummer = $nummer
    $feld = StringSplit($zeile[$nummer], "|", 3) ;Array aus den einzelnen Feldern in der Datenzeile
    for $i = 0 to UBound($input) - 1 ;alle inputfelder füllen
    GUICtrlSetData($input[$i], $feld[$i]) ;Feldinhalt in input schreiben
    Next
    for $i = 0 to UBound($Checkbox) - 1 ;checkboxen füllen
    $status = $feld[$i + UBound($input)]
    GUICtrlSetState($Checkbox[$i], $status) ;Status der checkboxen setzen
    Next
    endfunc ;==>_Anzeige_Datensatz_nr

    [/autoit] [autoit][/autoit] [autoit]

    func _Speichern_in_Datei() ;speichert die Daten in eine Datei
    $Datensatz = "" ;
    for $i = 0 to UBound($input) - 1 ;alle Input-Felder zusammenfassen
    $Datensatz = $Datensatz & GUICtrlRead($input[$i]) & "|" ;in eine Zeile
    Next
    for $i = 0 to UBound($Checkbox) - 1 ;alle Checkbox-Felder zusammenfassen
    $Datensatz = $Datensatz & GUICtrlRead($Checkbox[$i]) & "|" ;Status der checkboxen speichern
    Next
    if StringInStr($inhalt, $Datensatz) = 0 or $inhalt = "" then ;nur wenn Datensatz noch nicht vorhanden oder datei leer
    FileWrite($Dateiname, $Datensatz & @crlf) ;Datensatzzeile in Datei schreiben
    $inhalt = $inhalt & $Datensatz ;auch in den Speicher schreiben
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $inhalt = ' & $inhalt & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    MsgBox(0, "Buchverwaltung", "Datensatz gespeichert!", 1)
    Else
    MsgBox(0, "Buchverwaltung", "Datensatz bereits vorhanden")
    endif
    _Einlesen_Datei() ;alle Daten auf den neuesten Stand bringen
    EndFunc ;==>_Speichern_in_Datei

    [/autoit] [autoit][/autoit] [autoit]

    func _neue_Datei() ;speichert die Daten in eine Datei
    $Datensatz = "" ;
    for $i = 0 to UBound($input) - 1 ;alle Label zusammenfassen
    $Datensatz = $Datensatz & GUICtrlRead($label[$i]) & "|" ;in eine Zeile
    Next
    for $i = 0 to UBound($Checkbox) - 1 ;alle Checkbox-Felder zusammenfassen
    $Datensatz = $Datensatz & GUICtrlRead($Checkbox[$i]) & "|" ;Status der checkboxen speichern
    Next
    FileWrite($Dateiname, $Datensatz & @crlf) ;Datensatzzeile in Datei schreiben
    _Einlesen_Datei()
    MsgBox(0, "Buchverwaltung", "Die Datei " & $Dateiname & " war nicht vorhanden oder leer!" & @crlf & "Es wurde eine neue Buchdatei unter dem Namen " & $Dateiname & " angelegt!")
    EndFunc ;==>_neue_Datei

    [/autoit] [autoit][/autoit] [autoit]

    func _Anzeige_leeren()
    for $i = 0 to UBound($input) - 1 ;alle inputfelder füllen
    GUICtrlSetData($input[$i], "") ;Feldinhalt in input schreiben
    Next
    for $i = 0 to UBound($Checkbox) - 1
    $status = $GUI_UNCHECKED
    GUICtrlSetState($Checkbox[$i], $status) ;Status der checkboxen setzen
    Next
    endfunc ;==>_Anzeige_leeren
    ;==>_Speichern_in_Datei

    [/autoit]

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • howdy...

    also ich persönlich würde dir doch eher die SQL variante dafür empfehlen.. und sich in sql einzulesen ist nicht sonderlich schwer

    wenn du dann etwas in der materie bist könntest du dann auch leicht das ganze mit einer web-datenbank synchronisieren und dann auf einer webseite anzeigen lassen ob ein bestimmtes buch verfügbar ist oder wenn nicht, wann es frei wird

    hab ursprünglich mit php und mysql angefangen und finde das man es so ganz gut realisieren kann

    ich empfehle dir die SQLite UDF und dazugehörige dll

    mfg
    sgtigram

  • Hi,

    wurd hier zwar schon oft erwähnt, aber ich würds auch mit MySQL lösen.

    Der Vorteil: Du hast keine unnötigen Files rumfliegen ;)

    Die ID würd ich aber als "autoincrement" (und als "Primary Key") deklarieren , des weiteren könntest du die Daten abfragen und ggf einen Parser dafür basteln, der dir die Daten in ein Web-gängiges Format umwandelt (für Webseiten-Übersicht (dann ggf mit Apache (is nich so schwer wies klingt, hab ich auch schon hinbekommen :D))).

    €dit: "Parser" für die, die mit PHP oder sonstigem nix anfangen können (ich z.b. :D)

    Ich hätte sogar schon eine Idee dafür, aber ist nicht mein Projekt :)

    Grüße,
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • So und um das verwirren noch komplett zu machen. Dazu würde ich garnicht Autoit nehmen, sondern einfach Access.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • SO !!!
    Nichts SQL, PHP, HTML, usw. es bleibt wie es ist!

    Ich möchte dieses Projekt jetzt so weiter machen, wie es angefangen hat. ;)
    Nennt es: Frau ebend !

    Access ist was feines und ich bekomme da auch viel mit hin, aber ich möchte
    es hier nicht einsetzen. Ich bin u. a. in diesem Forum, um auch zu lernen. ;)
    Durch die Hilfe die ich hier bekomme, lerne ich nämlich viel, da ich versuche
    zum Beispiel auch die Scripte die ihr postet zu verstehen. Das ist aber nicht
    immer leicht, wenn man im Bezug auf Programmieren/Scripten vor AutoIt
    nur die gute alte Batch-Dateien (*.bat) im cmd angewendet hat.
    Das Script von Andy (Posting 15) kostete mich schon so einige Nerven, was das
    Verstehen betrifft. Aber ich habe schon mal zu 80% bis 90% den Durchblick.

    Was soll ich jetzt noch schreiben? Nichts, ich gehe einen Tee trinken und dann
    die Zeitung lesen. Sportteil als estes, denn gestern war bei uns in der Arena die
    Hölle los. Nordderbby der 1. Handballbundesliga brachte fast die Halle zum einstürzen !!!

    Bis später. *winkt*

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl