dynamisch erzeugte Input / Combo Box auslesen?

  • Hallo Zusammen,

    ich habe einen vielzahl von Textvorlagen /Textbausteine, in denen es bestimmte Platzhalter (siehe Beispiel) gibt!
    Dies sollen nun aus dem Text ausgelesen werden ( $aArray_var = _StringBetween($strData_TB_Text, '{var:', '}') und auf einer zusätzlichen GUI als Input oder Listbox dynamisch erstellt werden ... und nach ausfüllen dieser, dann wieder in den Text schreiben ...

    wer kann mir einen denkanstoss geben, komme grad nicht weiter?

    Textbeispiel: {var:Kundennachname}

    Spoiler anzeigen


    {list:Anrede:Frau=Sehr geehrte Frau#Herr=Sehr geehrter Herr} {var:Kundennachname},

    vielen Dank für Ihre Email.

    Bitte fügen Sie uns immer die vorangegangene eMail-Korrespondenz ein, nur so
    können wir eine schnelle Bearbeitung Ihrer eMail gewährleisten.

    Vielen Dank für Ihre Unterstützung.

    Gern beantworten wir Ihnen weitere Fragen auch telefonisch.
    Sie erreichen uns täglich von 08.00 - 24.00 Uhr.

    Freundliche Grüße


    hier das script :)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>
    #include <File.au3>
    #Include <GuiButton.au3>
    #Include <GuiComboBox.au3>
    #include <GuiEdit.au3>
    #include <String.au3>
    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <Array.au3>

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

    Dim $aRecords, $sString, $DATAC2, $List1, $query1, $strData_kat_1, $query_name, $strData_Name, $query_name_TB_Text, $strData_TB_Text
    Local $aArray_var, $aArray_list

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

    #Region DB_Variablen
    ;=========Datenbank=Variablen========
    $dbname = "D:\TB.mdb"
    ;====================================
    $tblname_1 = "TB_Baustein"
    $fldname_tbl1_1 = "Name"
    $format = "Text(50)"
    $fldname_tbl1_2 = "Kategorie"
    $format = "Text(50)"
    $fldname_tbl1_3 = "TB_Text"
    $format = "Memo"
    ;====================================
    $tblname_2 = "TB_Kategorie"
    $fldname_tbl2_1 = "ID"
    $format = "Text(50)"
    $fldname_tbl2_2 = "Kategorie"
    $format = "Text(50)"
    ;====================================
    #EndRegion DB_Variablen

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

    _GUI()

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

    Func _GUI()

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

    $gui_tb = GUICreate("TB", 600, 700,-1,-1) ;,0x80000000)
    $lb1 = GUICtrlCreateLabel("Kategorie", 10, 20)
    ;--------------
    $cmb = GUICtrlCreateCombo("", 80, 20,280,20) ; create first item
    $query_kat = "SELECT Kategorie FROM " & $tblname_2 ; & " WHERE PC = " & "'" & @UserName & "'"
    $strData_kat_1 = _ReadOneFld_Combo($query_kat, $dbname, $fldname_tbl2_2)
    GUICtrlSetData($cmb, $strData_kat_1, "Alle Kategorien") ; add other item snd set a new default
    ;----------------
    ;$telEdit1 = _GUICtrlEdit_Create($gui_tb, "erf", 80, 80, 200, 300)
    $lb2 = GUICtrlCreateLabel("Auswahl", 10, 80)
    $List1 = GUICtrlCreateList("", 80, 80, 390, 214)
    $query_name = "SELECT Name FROM " & $tblname_1
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    GUICtrlSetData($List1, $strData_Name)
    $Edit2 = _GUICtrlEdit_Create($gui_tb, "", 40, 300, 490, 350, $ES_MULTILINE + $ES_READONLY + $WS_VSCROLL)
    GUISetState(@SW_SHOW)

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

    While 1
    ;$windowtext = _WinAPI_GetWindowText($hWnd)
    ;IF $windowtext = "TB" Then GUISetState(@SW_SHOW)
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ;GUIDelete($gui_tb)
    Exit;Loop
    EndIf
    Switch $msg

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

    Case $cmb
    _GUICtrlListBox_ResetContent($List1)
    $wert_cmb = GUICtrlRead($cmb)
    ;----db lesen---
    $query_id = "SELECT ID FROM " & $tblname_2 & " WHERE " & $tblname_2 & "." & $fldname_tbl2_2 & " = '" & $wert_cmb & "'"
    $strData_id = _ReadOneFld($query_id, $dbname, $fldname_tbl2_1)
    $strData_id = StringStripWS($strData_id,8)
    ;---------------
    ; alle einträge der kategorie mit ensprechender id auflisten
    IF $strData_id = "1" Then
    $query_name = "SELECT Name FROM " & $tblname_1
    Else
    $query_name = "SELECT Name FROM " & $tblname_1 & " WHERE " & $tblname_1 & "." & $fldname_tbl1_2 & " = '" & $strData_id &"'"
    EndIf
    ;$query_name = "SELECT Name FROM TB_Baustein WHERE TB_Baustein.Kategorie = '" & $strData_id &"'"
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    ;MsgBox(0,$strData_id ,$strData_Name)
    GUICtrlSetData($List1, $strData_Name)

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

    Case $List1

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

    $strData_TB_Text = ""
    $wert_list1 = GUICtrlRead($List1);StringStripWS (GUICtrlRead($List1),1)
    ;MsgBox(0,"1",$wert_list1)
    ;---------------
    $query_name_TB_Text = "SELECT TB_Text FROM " & $tblname_1 & " WHERE " & $fldname_tbl1_1 & ' = "' & $wert_list1 & '"'
    ;ConsoleWrite ($query_name_TB_Text & @CRLF)
    $strData_TB_Text = _ReadOneFld($query_name_TB_Text, $dbname, $fldname_tbl1_3)
    ;MsgBox(0,"2" ,$strData_TB_Text)
    ;GUICtrlSetData($Edit2, $strData_TB_Text)
    $aArray_var = _StringBetween($strData_TB_Text, '{var:', '}')
    _ArrayDisplay($aArray_var, 'var')
    MsgBox(0,"",@error)
    If @error <> 1 Then _GUI_Var_List()
    $aArray_list = _StringBetween($strData_TB_Text, '{list:', '}')
    ;_ArrayDisplay($aArray_list, 'Default Search')

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

    ;$before = "fexp=1234,5678&algorithm"
    ;$replace_with = "907605"
    ;$after = StringReplace(StringRegExpReplace($before, "(fexp=)(.*)(&algorithm)", "$1 " & $replace_with & "$3"), "= ", "=")
    ;$after = StringRegExpReplace($before, "(fexp=)(.*)(&algorithm)", "${1}" & $replace_with & "$3")
    ;MsgBox(0, "Test", $after)

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

    _GUICtrlEdit_SetText($Edit2, $strData_TB_Text)
    ;----
    ;ClipPut($wert1)

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

    EndSwitch
    WEnd

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

    EndFunc

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

    Func _GUI_Var_List()

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

    _ArrayDisplay($aArray_var, 'Default Search')
    $gui_var = GUICreate("TEST", 400, 300, -1, -1)
    ;GUICtrlSetData($Labels[$aArray_var])
    GUISetState(@SW_SHOW)
    ;Dim $Labels[$objItem]
    Dim $objItem, $Labels, $i, $l, $n

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

    If IsObj($aArray_var) Then
    MsgBox(0,"","test1")
    For $objItem In $aArray_var
    MsgBox(0,"",$objItem)
    ;$aLabels[$i][0] = $objItem.Name
    ;$aLabels[$i][1] = $objItem.VolumeName
    ;GUICtrlCreateLabel($aLabels[$i][0] & " -> " & $aLabels[$i][1], 50, $l)
    $i += 1
    $l += 25
    Next
    EndIf
    ;ReDim $aLabels[$i][2]

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GUIDelete($gui_var)
    ExitLoop
    EndIf

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

    WEnd

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

    EndFunc

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

    #Region Textdatei
    #CS
    Func _File_01()

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

    $DATAC2 = ""
    $sString = ""
    $file = (@ScriptDir & "\TB.txt")

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

    If Not _FileReadToArray($file,$aRecords) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf

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

    For $x = 1 to $aRecords[0]
    ;Msgbox(0,'Record:' & $x, $aRecords[$x])
    $sString &= $aRecords[$x]
    Next
    ;MsgBox(0,"", $sString)
    $DATAC2 = $sString

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

    EndFunc
    #CE
    #EndRegion Textdatei

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

    ;------access DB auslesen -------------
    Func _ReadOneFld($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & @CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

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

    Func _ReadOneFld_Combo($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & "|" ;@CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

    [/autoit]

    im anhang ist die TB.mdb als zip, in dieser sind paar Texte mit Variablen zum testen hinterlegt!
    vielleicht kann sich das mal einer ansehen!

    danke

    Gruß gmmg :)

  • Kanns du damit machen:

    [autoit]

    StringReplace

    [/autoit]

    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.

  • chip
    ja... an die funktion "StringReplace" hab ich auch gedacht, mir fehlt aber der ansatz,
    wie ich die label und inputboxen dynamisch auf die 2. GUI bekomme!

    beispiel:
    zu ersetzen ist folgender textabschnitt "{var:Kundennachname}"
    1. ich müsste ja die funktion $aArray_var = _StringBetween($strData_TB_Text, '{var:', '}') benutzen, um das label "Kundennachname" und die Inputbox "xyz" zu definieren!
    2. das ganze auf der 2. GUI platzieren
    3. inputfelder ausfüllen und über StringReplace zurück in den text schreiben! um StringReplace benutzen zu können, müsste man aber noch sicherstellen, das der ganze string "{var:Kundennachname}" dann ersetzt wird, sonst bleibt dieser ja im text erhalten! :P

    danke

    soooo ... komme der lösung ein stückchen näher :)
    replacestring über array & schleife erstellt ... und labels auf GUI plaziert!

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>
    #include <File.au3>
    #Include <GuiButton.au3>
    #Include <GuiComboBox.au3>
    #include <GuiEdit.au3>
    #include <String.au3>
    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <Array.au3>

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

    Dim $aRecords, $sString, $DATAC2, $List1, $query1, $strData_kat_1, $query_name, $strData_Name, $query_name_TB_Text, $strData_TB_Text
    Local $aArray_var, $aArray_list

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

    #Region DB_Variablen
    ;=========Datenbank=Variablen========
    $dbname = "D:\TB.mdb"
    ;====================================
    $tblname_1 = "TB_Baustein"
    $fldname_tbl1_1 = "Name"
    $format = "Text(50)"
    $fldname_tbl1_2 = "Kategorie"
    $format = "Text(50)"
    $fldname_tbl1_3 = "TB_Text"
    $format = "Memo"
    ;====================================
    $tblname_2 = "TB_Kategorie"
    $fldname_tbl2_1 = "ID"
    $format = "Text(50)"
    $fldname_tbl2_2 = "Kategorie"
    $format = "Text(50)"
    ;====================================
    #EndRegion DB_Variablen

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

    _GUI()

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

    Func _GUI()

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

    $gui_tb = GUICreate("TB", 600, 700,-1,-1) ;,0x80000000)
    $lb1 = GUICtrlCreateLabel("Kategorie", 10, 20)
    ;--------------
    $cmb = GUICtrlCreateCombo("", 80, 20,280,20) ; create first item
    $query_kat = "SELECT Kategorie FROM " & $tblname_2 ; & " WHERE PC = " & "'" & @UserName & "'"
    $strData_kat_1 = _ReadOneFld_Combo($query_kat, $dbname, $fldname_tbl2_2)
    GUICtrlSetData($cmb, $strData_kat_1, "Alle Kategorien") ; add other item snd set a new default
    ;----------------
    ;$telEdit1 = _GUICtrlEdit_Create($gui_tb, "erf", 80, 80, 200, 300)
    $lb2 = GUICtrlCreateLabel("Auswahl", 10, 80)
    $List1 = GUICtrlCreateList("", 80, 80, 390, 214)
    $query_name = "SELECT Name FROM " & $tblname_1
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    GUICtrlSetData($List1, $strData_Name)
    $Edit2 = _GUICtrlEdit_Create($gui_tb, "", 40, 300, 490, 350, $ES_MULTILINE + $ES_READONLY + $WS_VSCROLL)
    GUISetState(@SW_SHOW)

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

    While 1
    ;$windowtext = _WinAPI_GetWindowText($hWnd)
    ;IF $windowtext = "TB" Then GUISetState(@SW_SHOW)
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ;GUIDelete($gui_tb)
    Exit;Loop
    EndIf
    Switch $msg

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

    Case $cmb
    _GUICtrlListBox_ResetContent($List1)
    $wert_cmb = GUICtrlRead($cmb)
    ;----db lesen---
    $query_id = "SELECT ID FROM " & $tblname_2 & " WHERE " & $tblname_2 & "." & $fldname_tbl2_2 & " = '" & $wert_cmb & "'"
    $strData_id = _ReadOneFld($query_id, $dbname, $fldname_tbl2_1)
    $strData_id = StringStripWS($strData_id,8)
    ;---------------
    ; alle einträge der kategorie mit ensprechender id auflisten
    IF $strData_id = "1" Then
    $query_name = "SELECT Name FROM " & $tblname_1
    Else
    $query_name = "SELECT Name FROM " & $tblname_1 & " WHERE " & $tblname_1 & "." & $fldname_tbl1_2 & " = '" & $strData_id &"'"
    EndIf
    ;$query_name = "SELECT Name FROM TB_Baustein WHERE TB_Baustein.Kategorie = '" & $strData_id &"'"
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    ;MsgBox(0,$strData_id ,$strData_Name)
    GUICtrlSetData($List1, $strData_Name)

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

    Case $List1

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

    $strData_TB_Text = ""
    $wert_list1 = GUICtrlRead($List1);StringStripWS (GUICtrlRead($List1),1)
    ;MsgBox(0,"1",$wert_list1)
    ;---------------
    $query_name_TB_Text = "SELECT TB_Text FROM " & $tblname_1 & " WHERE " & $fldname_tbl1_1 & ' = "' & $wert_list1 & '"'
    ;ConsoleWrite ($query_name_TB_Text & @CRLF)
    $strData_TB_Text = _ReadOneFld($query_name_TB_Text, $dbname, $fldname_tbl1_3)
    ;MsgBox(0,"2" ,$strData_TB_Text)
    ;GUICtrlSetData($Edit2, $strData_TB_Text)
    $aArray_var = _StringBetween($strData_TB_Text, '{var:', '}')
    ;_ArrayDisplay($aArray_var, 'var')
    If @error <> 1 Then
    #CS _ArrayDisplay($aArray_var, 'variablen')
    ;schleife durch das array um den replacestring zu generieren
    For $r = 0 To UBound($aArray_var) - 1
    $replacestring = '{var:' & $aArray_var[$r] & '}'
    MsgBox(0,"",$replacestring)
    Next
    #CE

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

    _GUI_Var_List()
    EndIf

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

    ;MsgBox(0,"",@error)
    ;If @error <> 1 Then _GUI_Var_List()
    ;$aArray_list = _StringBetween($strData_TB_Text, '{list:', '}')
    ;_ArrayDisplay($aArray_list, 'Default Search')

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

    ;$before = "fexp=1234,5678&algorithm"
    ;$replace_with = "907605"
    ;$after = StringReplace(StringRegExpReplace($before, "(fexp=)(.*)(&algorithm)", "$1 " & $replace_with & "$3"), "= ", "=")
    ;$after = StringRegExpReplace($before, "(fexp=)(.*)(&algorithm)", "${1}" & $replace_with & "$3")
    ;MsgBox(0, "Test", $after)

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

    _GUICtrlEdit_SetText($Edit2, $strData_TB_Text)
    ;----
    ;ClipPut($wert1)

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

    EndSwitch
    WEnd

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

    EndFunc

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

    Func _GUI_Var_List()

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

    $aArray_var = _ArrayUnique($aArray_var)
    Dim $Labels[100]

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

    $gui_var = GUICreate("label array", 600, 400)

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

    $x = 20
    $y = 70
    For $n = 1 To UBound($aArray_var) - 1
    $Labels[$n] = GUICtrlCreateLabel($aArray_var[$n], $x, $y, 200, 20)
    ;$x += 150
    ;If $x + 120 > 600 Then
    $y += 20
    $x = 20
    ;EndIf
    Next
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GUIDelete($gui_var)
    ExitLoop
    EndIf

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

    WEnd

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

    EndFunc

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

    #Region Textdatei
    #CS
    Func _File_01()

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

    $DATAC2 = ""
    $sString = ""
    $file = (@ScriptDir & "\TB.txt")

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

    If Not _FileReadToArray($file,$aRecords) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf

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

    For $x = 1 to $aRecords[0]
    ;Msgbox(0,'Record:' & $x, $aRecords[$x])
    $sString &= $aRecords[$x]
    Next
    ;MsgBox(0,"", $sString)
    $DATAC2 = $sString

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

    EndFunc
    #CE
    #EndRegion Textdatei

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

    ;------access DB auslesen -------------
    Func _ReadOneFld($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & @CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

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

    Func _ReadOneFld_Combo($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & "|" ;@CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

    [/autoit]

    gruß gmmg

    6 Mal editiert, zuletzt von gmmg (18. April 2012 um 16:50)

  • update!

    arrays werden zusammengeführt!

    derzeit wird ja nur der text aus stringbetween ins array geschrieben!
    hat einer eine idee, wie man hier auch noch den "start search string" & "end search string" mit anfügen kann?

    folgend das script ...

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>
    #include <File.au3>
    #Include <GuiButton.au3>
    #Include <GuiComboBox.au3>
    #include <GuiEdit.au3>
    #include <String.au3>
    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <Array.au3>

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

    Dim $aRecords, $sString, $DATAC2, $List1, $query1, $strData_kat_1, $query_name, $strData_Name, $query_name_TB_Text, $strData_TB_Text
    Local $aArray_var, $aArray_list

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

    #Region DB_Variablen
    ;=========Datenbank=Variablen========
    $dbname = "D:\TB.mdb"
    ;====================================
    $tblname_1 = "TB_Baustein"
    $fldname_tbl1_1 = "Name"
    $format = "Text(50)"
    $fldname_tbl1_2 = "Kategorie"
    $format = "Text(50)"
    $fldname_tbl1_3 = "TB_Text"
    $format = "Memo"
    ;====================================
    $tblname_2 = "TB_Kategorie"
    $fldname_tbl2_1 = "ID"
    $format = "Text(50)"
    $fldname_tbl2_2 = "Kategorie"
    $format = "Text(50)"
    ;====================================
    #EndRegion DB_Variablen

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

    _GUI()

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

    Func _GUI()

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

    $gui_tb = GUICreate("TB", 600, 700,-1,-1) ;,0x80000000)
    $lb1 = GUICtrlCreateLabel("Kategorie", 10, 20)
    ;--------------
    $cmb = GUICtrlCreateCombo("", 80, 20,280,20) ; create first item
    $query_kat = "SELECT Kategorie FROM " & $tblname_2 ; & " WHERE PC = " & "'" & @UserName & "'"
    $strData_kat_1 = _ReadOneFld_Combo($query_kat, $dbname, $fldname_tbl2_2)
    GUICtrlSetData($cmb, $strData_kat_1, "Alle Kategorien") ; add other item snd set a new default
    ;----------------
    ;$telEdit1 = _GUICtrlEdit_Create($gui_tb, "erf", 80, 80, 200, 300)
    $lb2 = GUICtrlCreateLabel("Auswahl", 10, 80)
    $List1 = GUICtrlCreateList("", 80, 80, 390, 214)
    $query_name = "SELECT Name FROM " & $tblname_1
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    GUICtrlSetData($List1, $strData_Name)
    $Edit2 = _GUICtrlEdit_Create($gui_tb, "", 40, 300, 490, 350, $ES_MULTILINE + $ES_READONLY + $WS_VSCROLL)
    GUISetState(@SW_SHOW)

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

    While 1
    ;$windowtext = _WinAPI_GetWindowText($hWnd)
    ;IF $windowtext = "TB" Then GUISetState(@SW_SHOW)
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ;GUIDelete($gui_tb)
    Exit;Loop
    EndIf
    Switch $msg

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

    Case $cmb
    _GUICtrlListBox_ResetContent($List1)
    $wert_cmb = GUICtrlRead($cmb)
    ;----db lesen---
    $query_id = "SELECT ID FROM " & $tblname_2 & " WHERE " & $tblname_2 & "." & $fldname_tbl2_2 & " = '" & $wert_cmb & "'"
    $strData_id = _ReadOneFld($query_id, $dbname, $fldname_tbl2_1)
    $strData_id = StringStripWS($strData_id,8)
    ;---------------
    ; alle einträge der kategorie mit ensprechender id auflisten
    IF $strData_id = "1" Then
    $query_name = "SELECT Name FROM " & $tblname_1
    Else
    $query_name = "SELECT Name FROM " & $tblname_1 & " WHERE " & $tblname_1 & "." & $fldname_tbl1_2 & " = '" & $strData_id &"'"
    EndIf
    ;$query_name = "SELECT Name FROM TB_Baustein WHERE TB_Baustein.Kategorie = '" & $strData_id &"'"
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    ;MsgBox(0,$strData_id ,$strData_Name)
    GUICtrlSetData($List1, $strData_Name)

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

    Case $List1

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

    $strData_TB_Text = ""
    $wert_list1 = GUICtrlRead($List1);StringStripWS (GUICtrlRead($List1),1)
    ;MsgBox(0,"1",$wert_list1)
    ;---------------
    $query_name_TB_Text = "SELECT TB_Text FROM " & $tblname_1 & " WHERE " & $fldname_tbl1_1 & ' = "' & $wert_list1 & '"'
    ;ConsoleWrite ($query_name_TB_Text & @CRLF)
    $strData_TB_Text = _ReadOneFld($query_name_TB_Text, $dbname, $fldname_tbl1_3)
    ;MsgBox(0,"2" ,$strData_TB_Text)
    ;GUICtrlSetData($Edit2, $strData_TB_Text)
    $aArray_var = _StringBetween($strData_TB_Text, '{var:', '}')
    ;_ArrayDisplay($aArray_var, 'var')
    If @error <> 1 Then
    ;_ArrayDisplay($aArray_var, 'var')
    ;$aArray_var = _ArrayUnique($aArray_var)
    ;_GUI_Var_List()
    EndIf
    $aArray_list = _StringBetween($strData_TB_Text, '{list:', '}')
    ;_ArrayDisplay($aArray_list, 'list')
    If @error <> 1 Then
    ;_ArrayDisplay($aArray_list, 'list')
    ;$aArray_list = _ArrayUnique($aArray_list)
    ;_GUI_Var_List()
    EndIf
    ;array zusammenführen ...
    _ArrayConcatenate($aArray_var, $aArray_list)
    $aArray_var = _ArrayUnique($aArray_var)
    _ArrayDelete($aArray_var, 0)
    _ArraySort($aArray_var)
    _ArrayDisplay($aArray_var, 'var')
    _GUI_Var_List()
    _GUICtrlEdit_SetText($Edit2, $strData_TB_Text)
    ;----
    ;ClipPut($wert1)

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

    EndSwitch
    WEnd

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

    EndFunc

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

    Func _GUI_Var_List()

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

    Dim $Labels_var[100]
    Dim $Inputs_var[100]

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

    $gui_var = GUICreate("label array", 450, 400)
    ;----------
    $x_l = 20
    $y_l = 10
    ;----------
    $x_i = 200
    $y_i = 10
    ;----------
    For $n = 1 To UBound($aArray_var) - 1
    $Labels_var[$n] = GUICtrlCreateLabel($aArray_var[$n], $x_l, $y_l, 200, 20)
    ;If
    $Inputs_var[$n] = GUICtrlCreateInput("", $x_i, $y_i, 200, 20)
    ;$Inputs_var[$n] = GUICtrlCreateCombo("", $x_i, $y_i, 200, 20)
    ;$x += 150
    ;If $x + 120 > 600 Then
    $y_l += 20
    $y_i += 20
    ;$x = 20
    ;EndIf
    Next

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

    $btn_var = GUICtrlCreateButton("Button", 100, $y_l + 10, 80, 25)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GUIDelete($gui_var)
    ExitLoop
    EndIf

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

    WEnd

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

    EndFunc

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

    #Region Textdatei
    #CS
    Func _File_01()

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

    $DATAC2 = ""
    $sString = ""
    $file = (@ScriptDir & "\TB.txt")

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

    If Not _FileReadToArray($file,$aRecords) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf

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

    For $x = 1 to $aRecords[0]
    ;Msgbox(0,'Record:' & $x, $aRecords[$x])
    $sString &= $aRecords[$x]
    Next
    ;MsgBox(0,"", $sString)
    $DATAC2 = $sString

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

    EndFunc
    #CE
    #EndRegion Textdatei

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

    ;------access DB auslesen -------------
    Func _ReadOneFld($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & @CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

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

    Func _ReadOneFld_Combo($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & "|" ;@CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

    [/autoit]

    die testdatenbank ist im ersten post ... :)

    danke

    gruß gmmg

    3 Mal editiert, zuletzt von gmmg (19. April 2012 um 14:42)

  • hallo zusammen,

    habe nach listbox auswahl immer die gleichen einträge im array, finde aber den fehler nicht!
    beim ersten klick ist noch alles prima, wählt man einen zweiten eintrag aus, werden nicht die einträge der neuen listbox auswahl genommen!

    bitte um hilfe :)

    hab den fehler selbst endeckt ... muss die folgenden zwei arrays neu deklarieren!

    Dim $aArray_var1[1]
    Dim $aArray_list1[1]

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>
    #include <File.au3>
    #Include <GuiButton.au3>
    #Include <GuiComboBox.au3>
    #include <GuiEdit.au3>
    #include <String.au3>
    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <Array.au3>

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

    Dim $aRecords, $sString, $DATAC2, $List1, $query1, $strData_kat_1, $query_name, $strData_Name, $query_name_TB_Text, $strData_TB_Text
    Dim $aArray_var, $aArray_list, $aArray_var1[1], $aArray_list1[1]

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

    #Region DB_Variablen
    ;=========Datenbank=Variablen========
    $dbname = "D:\TB.mdb"
    ;====================================
    $tblname_1 = "TB_Baustein"
    $fldname_tbl1_1 = "Name"
    $format = "Text(50)"
    $fldname_tbl1_2 = "Kategorie"
    $format = "Text(50)"
    $fldname_tbl1_3 = "TB_Text"
    $format = "Memo"
    ;====================================
    $tblname_2 = "TB_Kategorie"
    $fldname_tbl2_1 = "ID"
    $format = "Text(50)"
    $fldname_tbl2_2 = "Kategorie"
    $format = "Text(50)"
    ;====================================
    #EndRegion DB_Variablen

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

    _GUI()

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

    Func _GUI()

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

    $gui_tb = GUICreate("TB", 600, 700,-1,-1) ;,0x80000000)
    $lb1 = GUICtrlCreateLabel("Kategorie", 10, 20)
    ;--------------
    $cmb = GUICtrlCreateCombo("", 80, 20,280,20) ; create first item
    $query_kat = "SELECT Kategorie FROM " & $tblname_2 ; & " WHERE PC = " & "'" & @UserName & "'"
    $strData_kat_1 = _ReadOneFld_Combo($query_kat, $dbname, $fldname_tbl2_2)
    GUICtrlSetData($cmb, $strData_kat_1, "Alle Kategorien") ; add other item snd set a new default
    ;----------------
    ;$telEdit1 = _GUICtrlEdit_Create($gui_tb, "erf", 80, 80, 200, 300)
    $lb2 = GUICtrlCreateLabel("Auswahl", 10, 80)
    $List1 = GUICtrlCreateList("", 80, 80, 390, 214)
    $query_name = "SELECT Name FROM " & $tblname_1
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    GUICtrlSetData($List1, $strData_Name)
    $Edit2 = _GUICtrlEdit_Create($gui_tb, "", 40, 300, 490, 350, $ES_MULTILINE + $ES_READONLY + $WS_VSCROLL)
    GUISetState(@SW_SHOW)

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

    While 1
    ;$windowtext = _WinAPI_GetWindowText($hWnd)
    ;IF $windowtext = "TB" Then GUISetState(@SW_SHOW)
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ;GUIDelete($gui_tb)
    Exit;Loop
    EndIf
    Switch $msg

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

    Case $cmb
    _GUICtrlListBox_ResetContent($List1)
    $wert_cmb = GUICtrlRead($cmb)
    ;----db lesen---
    $query_id = "SELECT ID FROM " & $tblname_2 & " WHERE " & $tblname_2 & "." & $fldname_tbl2_2 & " = '" & $wert_cmb & "'"
    $strData_id = _ReadOneFld($query_id, $dbname, $fldname_tbl2_1)
    $strData_id = StringStripWS($strData_id,8)
    ;---------------
    ; alle einträge der kategorie mit ensprechender id auflisten
    IF $strData_id = "1" Then
    $query_name = "SELECT Name FROM " & $tblname_1
    Else
    $query_name = "SELECT Name FROM " & $tblname_1 & " WHERE " & $tblname_1 & "." & $fldname_tbl1_2 & " = '" & $strData_id &"'"
    EndIf
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    GUICtrlSetData($List1, $strData_Name)

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

    Case $List1
    Dim $aArray_var1[1]
    Dim $aArray_list1[1]

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

    $wert_list1 = GUICtrlRead($List1);StringStripWS (GUICtrlRead($List1),1)
    ;MsgBox(0,"1",$wert_list1)
    ;---------------
    $query_name_TB_Text = "SELECT TB_Text FROM " & $tblname_1 & " WHERE " & $fldname_tbl1_1 & ' = "' & $wert_list1 & '"'
    $strData_TB_Text = _ReadOneFld($query_name_TB_Text, $dbname, $fldname_tbl1_3)

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

    $aArray_var = _StringBetween($strData_TB_Text, '{var:', '}')
    ;_ArrayDisplay($aArray_var, 'var_test')
    ;MsgBox(0,"", @error)
    If @error <> 1 Then
    ;_ArrayDisplay($aArray_var, 'var')
    ;$aArray_var = _ArrayUnique($aArray_var)
    ;_GUI_Var_List()
    For $x = 0 To UBound($aArray_var) -1
    $slv = StringLeft($aArray_var[$x],2)
    ;MsgBox(0,"",$slv)
    _ArrayAdd($aArray_var1, $slv & '|var|' & $aArray_var[$x])
    Next
    ;_ArrayDisplay($aArray_var1, "$avArray AFTER _ArrayInsert()")

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

    EndIf
    $aArray_list = _StringBetween($strData_TB_Text, '{list:', '}')
    ;_ArrayDisplay($aArray_list, 'list')
    ;MsgBox(0,"", @error)
    If @error <> 1 Then
    For $x = 0 To UBound($aArray_list) -1
    $sll = StringLeft($aArray_list[$x],2)
    ;MsgBox(0,"",$sll)
    _ArrayAdd($aArray_list1, $sll & '|list|' & $aArray_list[$x])
    Next
    ;_ArrayDisplay($aArray_list1, "$avArray AFTER _ArrayInsert()")
    EndIf

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

    _ArrayDelete($aArray_var1,0)
    ;_ArrayDisplay($aArray_var1, "1")
    _ArrayDelete($aArray_list1,0)
    ;_ArrayDisplay($aArray_list1, "2")

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

    ;----array zusammenführen----

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

    _ArrayConcatenate($aArray_var1, $aArray_list1)
    $aArray_var1 = _ArrayUnique($aArray_var1)
    _ArrayDelete($aArray_var1, 0)
    _ArraySort($aArray_var1)

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

    _GUICtrlEdit_SetText($Edit2, $strData_TB_Text)
    _ArrayDisplay($aArray_var1, 'all')

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

    _GUI_Var_List()

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

    ;----
    ;ClipPut($wert1)

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

    EndSwitch
    WEnd

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

    EndFunc

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

    Func _GUI_Var_List()

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

    Dim $Labels_var[100]
    Dim $Inputs_var[100]

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

    $gui_var = GUICreate("label array", 450, 400)
    ;----------
    $x_l = 20
    $y_l = 10
    ;----------
    $x_i = 200
    $y_i = 10
    ;----------
    For $n = 0 To UBound($aArray_var1) - 1
    $aArray_combo = ""
    $result = ""
    $res_v = StringInStr($aArray_var1[$n], "|var|")
    $res_l = StringInStr($aArray_var1[$n], "|list|")
    ;MsgBox(0,"test",$res_l & " " & $res_v)
    If $res_v > 0 Then
    $result = StringTrimLeft($aArray_var1[$n], 7)
    $Labels_var[$n] = GUICtrlCreateLabel($result, $x_l, $y_l, 200, 20)
    $Inputs_var[$n] = GUICtrlCreateInput("", $x_i, $y_i, 200, 20)
    EndIf
    If $res_l > 0 Then
    $result = StringTrimLeft($aArray_var1[$n], 8)
    $aArray_combo = _StringBetween($aArray_var1[$n], '|list|', ':')
    $Labels_var[$n] = GUICtrlCreateLabel($aArray_combo[0], $x_l, $y_l, 200, 20)
    $Inputs_var[$n] = GUICtrlCreateCombo("", $x_i, $y_i, 200, 20)
    EndIf

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

    ;$x += 150
    ;If $x + 120 > 600 Then
    $y_l += 20
    $y_i += 20
    ;$x = 20
    ;EndIf
    Next

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

    $btn_var = GUICtrlCreateButton("Button", 100, $y_l + 10, 80, 25)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GUIDelete($gui_var)
    ExitLoop
    EndIf

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

    WEnd

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

    EndFunc

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

    #Region Textdatei
    #CS
    Func _File_01()

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

    $DATAC2 = ""
    $sString = ""
    $file = (@ScriptDir & "\TB.txt")

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

    If Not _FileReadToArray($file,$aRecords) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf

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

    For $x = 1 to $aRecords[0]
    ;Msgbox(0,'Record:' & $x, $aRecords[$x])
    $sString &= $aRecords[$x]
    Next
    ;MsgBox(0,"", $sString)
    $DATAC2 = $sString

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

    EndFunc
    #CE
    #EndRegion Textdatei

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

    ;------access DB auslesen -------------
    Func _ReadOneFld($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & @CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

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

    Func _ReadOneFld_Combo($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & "|" ;@CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

    [/autoit]

    danke :P

    gruß gmmg

    Einmal editiert, zuletzt von gmmg (20. April 2012 um 15:11)

  • folgend noch die größenanpassung der gui an die einträge aus dem array ...

    [autoit]

    $gui_var = GUICreate("label array", 420 , UBound($aArray_var1) * 20 + 60, -1, -1, BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX))

    [/autoit]
  • Hallo Zusammen,

    wie kann ich dynamisch erstellten Combo und Inputfelder (siehe Bild2)auslesen?

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>
    #include <File.au3>
    #Include <GuiButton.au3>
    #Include <GuiComboBox.au3>
    #include <GuiEdit.au3>
    #include <String.au3>
    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <Array.au3>

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

    Dim $aRecords, $sString, $DATAC2, $List1, $query1, $strData_kat_1, $query_name, $strData_Name, $query_name_TB_Text, $strData_TB_Text
    Dim $aArray_var, $aArray_list, $aArray_var1[1], $aArray_list1[1]

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

    #Region DB_Variablen
    ;=========Datenbank=Variablen========
    $dbname = "D:\Data\Sonstiges\TB_test.mdb"
    ;====================================
    $tblname_1 = "TB_Baustein"
    $fldname_tbl1_1 = "Name"
    $format = "Text(50)"
    $fldname_tbl1_2 = "Kategorie"
    $format = "Text(50)"
    $fldname_tbl1_3 = "TB_Text"
    $format = "Memo"
    ;====================================
    $tblname_2 = "TB_Kategorie"
    $fldname_tbl2_1 = "ID"
    $format = "Text(50)"
    $fldname_tbl2_2 = "Kategorie"
    $format = "Text(50)"
    ;====================================
    #EndRegion DB_Variablen

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

    _GUI()

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

    Func _GUI()

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

    $gui_tb = GUICreate("TB", 600, 700,-1,-1) ;,0x80000000)
    $lb1 = GUICtrlCreateLabel("Kategorie", 10, 20)
    ;--------------
    $cmb = GUICtrlCreateCombo("", 80, 20,280,20) ; create first item
    $query_kat = "SELECT Kategorie FROM " & $tblname_2 ; & " WHERE PC = " & "'" & @UserName & "'"
    $strData_kat_1 = _ReadOneFld_Combo($query_kat, $dbname, $fldname_tbl2_2)
    GUICtrlSetData($cmb, $strData_kat_1, "Alle Kategorien") ; add other item snd set a new default
    ;----------------
    ;$telEdit1 = _GUICtrlEdit_Create($gui_tb, "erf", 80, 80, 200, 300)
    $lb2 = GUICtrlCreateLabel("Auswahl", 10, 80)
    $List1 = GUICtrlCreateList("", 80, 80, 390, 214)
    $query_name = "SELECT Name FROM " & $tblname_1
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    GUICtrlSetData($List1, $strData_Name)
    $Edit2 = _GUICtrlEdit_Create($gui_tb, "", 40, 300, 490, 350, $ES_MULTILINE + $ES_READONLY + $WS_VSCROLL)
    GUISetState(@SW_SHOW)

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

    While 1
    ;$windowtext = _WinAPI_GetWindowText($hWnd)
    ;IF $windowtext = "TB" Then GUISetState(@SW_SHOW)
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ;GUIDelete($gui_tb)
    Exit;Loop
    EndIf
    Switch $msg

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

    Case $cmb
    _GUICtrlListBox_ResetContent($List1)
    $wert_cmb = GUICtrlRead($cmb)
    ;----db lesen---
    $query_id = "SELECT ID FROM " & $tblname_2 & " WHERE " & $tblname_2 & "." & $fldname_tbl2_2 & " = '" & $wert_cmb & "'"
    $strData_id = _ReadOneFld($query_id, $dbname, $fldname_tbl2_1)
    $strData_id = StringStripWS($strData_id,8)
    ;---------------
    ; alle einträge der kategorie mit ensprechender id auflisten
    IF $strData_id = "1" Then
    $query_name = "SELECT Name FROM " & $tblname_1
    Else
    $query_name = "SELECT Name FROM " & $tblname_1 & " WHERE " & $tblname_1 & "." & $fldname_tbl1_2 & " = '" & $strData_id &"'"
    EndIf
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    GUICtrlSetData($List1, $strData_Name)

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

    Case $List1
    Dim $aArray_var1[1]
    Dim $aArray_list1[1]

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

    $wert_list1 = GUICtrlRead($List1);StringStripWS (GUICtrlRead($List1),1)
    ;MsgBox(0,"1",$wert_list1)
    ;---------------
    $query_name_TB_Text = "SELECT TB_Text FROM " & $tblname_1 & " WHERE " & $fldname_tbl1_1 & ' = "' & $wert_list1 & '"'
    $strData_TB_Text = _ReadOneFld($query_name_TB_Text, $dbname, $fldname_tbl1_3)

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

    $aArray_var = _StringBetween($strData_TB_Text, '{var:', '}')
    ;_ArrayDisplay($aArray_var, 'var_test')
    ;MsgBox(0,"", @error)
    If @error <> 1 Then
    ;_ArrayDisplay($aArray_var, 'var')
    ;$aArray_var = _ArrayUnique($aArray_var)
    ;_GUI_Var_List()
    For $x = 0 To UBound($aArray_var) -1
    $slv = StringLeft($aArray_var[$x],2)
    ;MsgBox(0,"",$slv)
    _ArrayAdd($aArray_var1, $slv & '|var|' & $aArray_var[$x])
    Next
    ;_ArrayDisplay($aArray_var1, "$avArray AFTER _ArrayInsert()")

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

    EndIf
    $aArray_list = _StringBetween($strData_TB_Text, '{list:', '}')
    ;_ArrayDisplay($aArray_list, 'list')
    ;MsgBox(0,"", @error)
    If @error <> 1 Then
    For $x = 0 To UBound($aArray_list) -1
    $sll = StringLeft($aArray_list[$x],2)
    ;MsgBox(0,"",$sll)
    _ArrayAdd($aArray_list1, $sll & '|list|' & $aArray_list[$x])
    Next
    ;_ArrayDisplay($aArray_list1, "$avArray AFTER _ArrayInsert()")
    EndIf

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

    _ArrayDelete($aArray_var1,0)
    ;_ArrayDisplay($aArray_var1, "1")
    _ArrayDelete($aArray_list1,0)
    ;_ArrayDisplay($aArray_list1, "2")

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

    ;----array zusammenführen----

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

    _ArrayConcatenate($aArray_var1, $aArray_list1)
    $aArray_var1 = _ArrayUnique($aArray_var1)
    _ArrayDelete($aArray_var1, 0)
    _ArraySort($aArray_var1)

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

    _GUICtrlEdit_SetText($Edit2, $strData_TB_Text)
    ;_ArrayDisplay($aArray_var1, 'all')

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

    IF UBound($aArray_var1) <> 0 Then _GUI_Var_List()

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

    ;----
    ;ClipPut($wert1)

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

    EndSwitch
    WEnd

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

    EndFunc

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

    Func _GUI_Var_List()

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

    Dim $Labels_var[100]
    Dim $Inputs_var[100]

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

    ;MsgBox(0,"",UBound($aArray_var1))

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

    $gui_var = GUICreate("label array", 420 , UBound($aArray_var1) * 20 + 60, -1, -1, BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX))
    ;----------
    $x_l = 20
    $y_l = 10
    ;----------
    $x_i = 200
    $y_i = 10
    ;----------

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

    For $n = 0 To UBound($aArray_var1) -1
    $sString = ""
    $aArray_combo = ""
    $result = ""
    $res_v = StringInStr($aArray_var1[$n], "|var|")
    $res_l = StringInStr($aArray_var1[$n], "|list|")
    ;MsgBox(0,"test",$res_l & " " & $res_v)
    If $res_v > 0 Then
    $result = StringTrimLeft($aArray_var1[$n], 7)
    $Labels_var[$n] = GUICtrlCreateLabel($result, $x_l, $y_l, 200, 20)
    $Inputs_var[$n] = GUICtrlCreateInput("", $x_i, $y_i, 200, 20)
    EndIf
    If $res_l > 0 Then
    $result = StringTrimLeft($aArray_var1[$n], 8)
    $aArray_combo = _StringBetween($aArray_var1[$n], '|list|', ':')
    ;MsgBox(0,"",$aArray_var1[$n])
    $Labels_var[$n] = GUICtrlCreateLabel($aArray_combo[0], $x_l, $y_l, 200, 20)
    $aArray_combo1 = _StringBetween($aArray_var1[$n], '#', '=')
    For $n1 = 0 To UBound($aArray_combo1) -1
    ;MsgBox(0,"", $aArray_combo1[$n1])
    $sString &= $aArray_combo1[$n1] & "|"
    Next
    $Inputs_var[$n] = GUICtrlCreateCombo("", $x_i, $y_i, 200, 20)
    GUICtrlSetData($Inputs_var[$n], $sString)
    EndIf

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

    ;$x += 150
    ;If $x + 120 > 600 Then
    $y_l += 20
    $y_i += 20
    ;$x = 20
    ;EndIf
    Next

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

    $btn_var = GUICtrlCreateButton("Button", 100, $y_l + 10, 80, 25)

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

    GUISetState(@SW_SHOW)
    WinSetOnTop ("label array","", 1)

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GUIDelete($gui_var)
    ExitLoop
    EndIf

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

    WEnd

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

    EndFunc

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

    #Region Textdatei
    #CS
    Func _File_01()

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

    $DATAC2 = ""
    $sString = ""
    $file = (@ScriptDir & "\TB.txt")

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

    If Not _FileReadToArray($file,$aRecords) Then
    MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf

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

    For $x = 1 to $aRecords[0]
    ;Msgbox(0,'Record:' & $x, $aRecords[$x])
    $sString &= $aRecords[$x]
    Next
    ;MsgBox(0,"", $sString)
    $DATAC2 = $sString

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

    EndFunc
    #CE
    #EndRegion Textdatei

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

    ;------access DB auslesen -------------
    Func _ReadOneFld($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & @CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

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

    Func _ReadOneFld_Combo($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & "|" ;@CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

    [/autoit]

    danke :)

    gruß gmmg

  • soooo ....

    habe mich nochmal an die dynamische zuordnung und das auslesen von input und combo boxen gewagt und folgendes ergebnis erzielt!
    das script liest aus einer DB texte (für z.b. eine textbausteinsoftware ) in den texten gibt es bestimmte variablen, die dann ausgelesen werden ...
    zum befüllen dieser wird dann ein dynamische gui erzeugt und danach wird der text vervollständigt ...

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>
    #include <File.au3>
    #Include <GuiButton.au3>
    #Include <GuiComboBox.au3>
    #include <GuiEdit.au3>
    #include <String.au3>
    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <Array.au3>

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

    Dim $aRecords, $sString, $DATAC2, $List1, $query1, $strData_kat_1, $query_name, $strData_Name, $query_name_TB_Text, $strData_TB_Text
    Dim $aArray_var, $aArray_list, $aArray_var1[1], $aArray_list1[1], $aArray_read[1], $_dbname, $_field, $_sql, $Edit2

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

    #Region DB_Variablen
    ;=========Datenbank=Variablen========
    $dbname = "D:\Data\Sonstiges\TB_test.mdb"
    ;====================================
    $tblname_1 = "TB_Baustein"
    $fldname_tbl1_1 = "Name"
    $format = "Text(50)"
    $fldname_tbl1_2 = "Kategorie"
    $format = "Text(50)"
    $fldname_tbl1_3 = "TB_Text"
    $format = "Memo"
    ;====================================
    $tblname_2 = "TB_Kategorie"
    $fldname_tbl2_1 = "ID"
    $format = "Text(50)"
    $fldname_tbl2_2 = "Kategorie"
    $format = "Text(50)"
    ;====================================
    #EndRegion DB_Variablen

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

    _GUI()

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

    Func _GUI()

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

    $gui_tb = GUICreate("TB", 600, 700,-1,-1) ;,0x80000000)
    $lb1 = GUICtrlCreateLabel("Kategorie", 10, 20)
    ;--------------
    $cmb = GUICtrlCreateCombo("", 80, 20,280,20) ; create first item
    $query_kat = "SELECT Kategorie FROM " & $tblname_2 ; & " WHERE PC = " & "'" & @UserName & "'"
    $strData_kat_1 = _ReadOneFld_Combo($query_kat, $dbname, $fldname_tbl2_2)
    GUICtrlSetData($cmb, $strData_kat_1, "Alle Kategorien") ; add other item snd set a new default
    ;----------------
    ;$telEdit1 = _GUICtrlEdit_Create($gui_tb, "erf", 80, 80, 200, 300)
    $lb2 = GUICtrlCreateLabel("Auswahl", 10, 80)
    $List1 = GUICtrlCreateList("", 80, 80, 390, 214)
    $query_name = "SELECT Name FROM " & $tblname_1
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    GUICtrlSetData($List1, $strData_Name)
    $Edit2 = _GUICtrlEdit_Create($gui_tb, "", 40, 300, 490, 350, $ES_MULTILINE + $ES_READONLY + $WS_VSCROLL)
    GUISetState(@SW_SHOW)

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

    While 1
    ;$windowtext = _WinAPI_GetWindowText($hWnd)
    ;IF $windowtext = "TB" Then GUISetState(@SW_SHOW)
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ;GUIDelete($gui_tb)
    Exit;Loop
    EndIf
    Switch $msg

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

    Case $cmb
    _GUICtrlListBox_ResetContent($List1)
    $wert_cmb = GUICtrlRead($cmb)
    ;----db lesen---
    $query_id = "SELECT ID FROM " & $tblname_2 & " WHERE " & $tblname_2 & "." & $fldname_tbl2_2 & " = '" & $wert_cmb & "'"
    $strData_id = _ReadOneFld($query_id, $dbname, $fldname_tbl2_1)
    $strData_id = StringStripWS($strData_id,8)
    ;---------------
    ; alle einträge der kategorie mit ensprechender id auflisten
    IF $strData_id = "1" Then
    $query_name = "SELECT Name FROM " & $tblname_1
    Else
    $query_name = "SELECT Name FROM " & $tblname_1 & " WHERE " & $tblname_1 & "." & $fldname_tbl1_2 & " = '" & $strData_id &"'"
    EndIf
    $strData_Name = _ReadOneFld_Combo($query_name, $dbname, $fldname_tbl1_1)
    GUICtrlSetData($List1, $strData_Name)

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

    Case $List1
    Dim $aArray_var1[1]
    Dim $aArray_list1[1]

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

    $wert_list1 = GUICtrlRead($List1);StringStripWS (GUICtrlRead($List1),1)
    ;MsgBox(0,"1",$wert_list1)
    ;---------------
    $query_name_TB_Text = "SELECT TB_Text FROM " & $tblname_1 & " WHERE " & $fldname_tbl1_1 & ' = "' & $wert_list1 & '"'
    $strData_TB_Text = _ReadOneFld($query_name_TB_Text, $dbname, $fldname_tbl1_3)

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

    $aArray_var = _StringBetween($strData_TB_Text, '{var:', '}')
    ;_ArrayDisplay($aArray_var, 'var_test')
    ;MsgBox(0,"", @error)
    If @error <> 1 Then
    ;_ArrayDisplay($aArray_var, 'var')
    ;$aArray_var = _ArrayUnique($aArray_var)
    ;_GUI_Var_List()
    For $x = 0 To UBound($aArray_var) -1
    $slv = StringLeft($aArray_var[$x],2)
    ;MsgBox(0,"",$slv)
    _ArrayAdd($aArray_var1, $slv & '|var|' & $aArray_var[$x])
    Next
    ;_ArrayDisplay($aArray_var1, "$avArray AFTER _ArrayInsert()")

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

    EndIf
    $aArray_list = _StringBetween($strData_TB_Text, '{list:', '}')
    ;_ArrayDisplay($aArray_list, 'list')
    ;MsgBox(0,"", @error)
    If @error <> 1 Then
    For $x = 0 To UBound($aArray_list) -1
    $sll = StringLeft($aArray_list[$x],2)
    ;MsgBox(0,"",$sll)
    _ArrayAdd($aArray_list1, $sll & '|list|' & $aArray_list[$x])
    Next
    ;_ArrayDisplay($aArray_list1, "$avArray AFTER _ArrayInsert()")
    EndIf

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

    _ArrayDelete($aArray_var1,0)
    ;_ArrayDisplay($aArray_var1, "1")
    _ArrayDelete($aArray_list1,0)
    ;_ArrayDisplay($aArray_list1, "2")

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

    ;----array zusammenführen----

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

    _ArrayConcatenate($aArray_var1, $aArray_list1)
    $aArray_var1 = _ArrayUnique($aArray_var1)
    _ArrayDelete($aArray_var1, 0)
    _ArraySort($aArray_var1)

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

    _GUICtrlEdit_SetText($Edit2, $strData_TB_Text)
    ;_ArrayDisplay($aArray_var1, 'all')

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

    IF UBound($aArray_var1) <> 0 Then _GUI_Var_List()

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

    ;----
    ;ClipPut($wert1)

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

    EndSwitch
    WEnd

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

    EndFunc

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

    Func _GUI_Var_List()

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

    Dim $Labels_var[100]
    Dim $Inputs_var[100]

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

    ;MsgBox(0,"",UBound($aArray_var1))

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

    $gui_var = GUICreate("label array", 420 , UBound($aArray_var1) * 20 + 60, -1, -1, BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX))
    ;----------
    $x_l = 20
    $y_l = 10
    ;----------
    $x_i = 200
    $y_i = 10
    ;----------

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

    For $n = 0 To UBound($aArray_var1) -1
    $sString = ""
    $aArray_combo = ""
    $result = ""
    $res_v = StringInStr($aArray_var1[$n], "|var|")
    $res_l = StringInStr($aArray_var1[$n], "|list|")
    ;MsgBox(0,"test",$res_l & " " & $res_v)
    If $res_v > 0 Then
    $result = StringTrimLeft($aArray_var1[$n], 7)
    $Labels_var[$n] = GUICtrlCreateLabel($result, $x_l, $y_l, 200, 20)
    $Inputs_var[$n] = GUICtrlCreateInput("", $x_i, $y_i, 200, 20)
    _ArrayAdd($aArray_read, $Inputs_var[$n] & '|' & "{var:" & $result & "}")
    EndIf
    If $res_l > 0 Then
    $result = StringTrimLeft($aArray_var1[$n], 8)
    $aArray_combo = _StringBetween($aArray_var1[$n], '|list|', ':')
    ;MsgBox(0,"",$aArray_var1[$n])
    $Labels_var[$n] = GUICtrlCreateLabel($aArray_combo[0], $x_l, $y_l, 200, 20)
    $aArray_combo1 = _StringBetween($aArray_var1[$n], '#', '=')
    For $n1 = 0 To UBound($aArray_combo1) -1
    ;MsgBox(0,"", $aArray_combo1[$n1])
    $sString &= $aArray_combo1[$n1] & "|"
    Next
    $Inputs_var[$n] = GUICtrlCreateCombo("", $x_i, $y_i, 200, 20)
    GUICtrlSetData($Inputs_var[$n], $sString)
    _ArrayAdd($aArray_read, $Inputs_var[$n] & '|' & "{list:" & $result & "}") ; {var:03 Filekey}
    EndIf

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

    ;$x += 150
    ;If $x + 120 > 600 Then
    $y_l += 20
    $y_i += 20
    ;$x = 20
    ;EndIf
    Next

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

    $btn_var = GUICtrlCreateButton("Button", 100, $y_l + 10, 80, 25)

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

    GUISetState(@SW_SHOW)
    WinSetOnTop ("label array","", 1)

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    GUIDelete($gui_var)
    ExitLoop
    EndIf
    Switch $msg

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

    Case $btn_var
    Dim $inputstring = ""
    For $x = 1 To UBound($aArray_read) -1
    $array_split = StringSplit($aArray_read[$x], "|")
    $inputstring = GUICtrlRead($array_split[1])
    $text = StringReplace($strData_TB_Text, $array_split[2], $inputstring)
    $strData_TB_Text = $text
    Next
    _GUICtrlEdit_SetText($Edit2, $text)
    GUIDelete($gui_var)
    ExitLoop
    ;_ArrayDisplay($aArray_read,"test")

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

    EndSwitch
    WEnd

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

    EndFunc

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

    ;------access DB auslesen -------------
    Func _ReadOneFld($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & @CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

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

    Func _ReadOneFld_Combo($_sql, $_dbname, $_field)
    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $_dbname)
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & "|" ;@CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

    [/autoit]

    gruß gmmg