Gui Problem => Felder füllen

  • Guten Morgen AutoIT Programmierer,

    ich möchte Daten in eine Mysql Daten schreiben, auslesen und weiterverarbeiten.
    Dies funktioniert in meinem Script auch schon sehr gut.
    Ich möchte nun Felder aus der Datenbank auslesen und diese beim klick auf "Button1" mit dem, in der Datenbank hinterlegten Eintrag an der entsprechenden Stelle füllen.

    Testweise funktioniert es schon, nur ich habe als Ausgabe eine MSG Box gewählt.

    (Script Auszug)

    [autoit]


    ; bei klick auf "load"
    Case $msg = $load
    ; function LoadEntry ausführen und Ausgewählten Eintrag + ID ausgeben.
    LoadEntry()

    [/autoit]

    Mein Script.

    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiToolbar.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <ToolbarConstants.au3>
    #include <WindowsConstants.au3>
    #include "mysql.au3"

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

    ; *. ini file !
    $ini = "test.ini"
    ; Funktionen

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

    ; ini file auslesen und füllen
    Func ReadSection ($isection)
    Dim $section, $sectiong
    $section = IniReadSection ($ini, $isection)
    For $i=1 To $section[0][0]
    $sectiong = $sectiong & $section[$i][1] & "|"
    Next
    Return $sectiong
    EndFunc

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

    ; mysql connect

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

    $UserName = "root"
    $Password = ""
    $Database = "auto"
    $MySQLServerName = "localhost"
    $table = "form"

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

    $sql = _MySQLConnect($UserName,$Password,$Database,$MySQLServerName)

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

    ; Felder erstellen
    $ortr = ReadSection("ort")
    $smt = ReadSection("test2")

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

    ; MYSQL Tabelleneinträge laden, wenn vorhanden
    Func DisplayTable()
    $NameList = ""
    $SQLCode = "SELECT * FROM form"
    $TableContents = _Query ($sql, $SQLCode)
    With $TableContents
    While Not .EOF
    ;$NameList &= .Fields ("form_id").value & "." & .Fields ("form_name").value & "|"
    $NameList &= .Fields ("form_name").value & "|"
    .MoveNext
    WEnd
    EndWith
    Return $NameList
    EndFunc

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

    $test = "Bitte Ort auswählen"

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

    $lod = DisplayTable()

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("test form", 635, 513, 188, 139)
    $Group1 = GUICtrlCreateGroup("Test Gruppe", 16, 136, 601, 345)
    $speichern = GUICtrlCreateButton("speichern", 232, 432, 121, 33, 0)
    $Label1 = GUICtrlCreateLabel("Name", 48, 176, 32, 17)
    $name = GUICtrlCreateInput("", 112, 176, 137, 21)
    $Ort_label = GUICtrlCreateLabel("Ort", 48, 208, 18, 17)
    $ort = GUICtrlCreateCombo($test, 112, 208, 145, 25)
    $ortset = GUICtrlSetData(-1,$ortr)
    $Label2 = GUICtrlCreateLabel("test2", 48, 240, 55, 17)
    $test2 = GUICtrlCreateCombo("Bitte test2 wählen", 112, 240, 145, 25)
    GUICtrlSetData(-1,$smt)
    $lli = GUICtrlCreateCombo("Eintrag laden", 120, 48, 145, 25)
    GUICtrlSetData(-1,$lod)
    $load = GUICtrlCreateButton("Button1", 272, 48, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $msg = GUIGetMsg()

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

    ; Ausgewählten Eintrag laden
    Func LoadEntry()
    $lentry = ""
    $SQLCode = "SELECT * FROM form WHERE form_name = '"& GUICtrlRead($lli) &"'"
    $TableContents = _Query ($sql, $SQLCode)
    With $TableContents
    $lentry &= .Fields ("form_id").value & "." & .Fields ("form_name").value
    EndWith
    MsgBox(0,"bla",$lentry)
    EndFunc

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $speichern
    ; mysql felder
    Dim $test[4]
    $test[0] = "form_id"
    $test[1] = "form_name"
    $test[2] = "form_ort"
    $test[3] = "form_test2"
    ; form_id form_name form_ort form_test2
    ; form variablen
    Dim $values[4]
    $values[0] = ""
    $values[1] = GUICtrlRead($name)
    $values[2] = GUICtrlRead($ort)
    $values[3] = GUICtrlRead($test2)

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

    _AddRecord($sql, $table, $test, $values)
    MsgBox(0, 'Test', "Eintrag erfolgreich angelegt")
    Case $msg = $load
    LoadEntry()
    EndSelect
    WEnd

    [/autoit]


    Ich hoffe auf Denkanstöße bezogen auf mein Problem und bedanke mich an dieser Stelle schonmal recht herzlich.

    3 Mal editiert, zuletzt von eketrix (15. März 2010 um 12:22)

  • Ups... :) mit normalen Input Feldern funktioniert es, aber wie geht das ganze bei Kombo Boxen?
    (die normale Auswahl soll erhalten bleiben)

    2 Mal editiert, zuletzt von eketrix (15. März 2010 um 11:19)

  • Hallo eketrix,

    es gibt mehrere Möglichkeiten:

    • mit GuiCtrRead Kombo auslesen, Wert anhängen und danach mit GuiCtrlSetData Kombo neu füllen.
    • _GUICtrlComboBox_AddString

    mfg (Auto)Bert

  • Funktion GUICtrlSetData
    Für Combo oder List-Controls:
    Wenn "data" mit einem bereits existierenden Eintrag übereinstimmt, wird dieser als Standard (default) verwendet.
    Wenn "data" mit dem über GUIDataSeparatorChar definierten Zeichen beginnt oder einen leeren String ist (""), wird die vorherige Liste gelöscht.

    Grml... da steht es JA!
    Das hatte ich gesucht :)