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
#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>
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]
#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
_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)
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
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)
Case $List1
Dim $aArray_var1[1]
Dim $aArray_list1[1]
$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)
$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()")
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
_ArrayDelete($aArray_var1,0)
;_ArrayDisplay($aArray_var1, "1")
_ArrayDelete($aArray_list1,0)
;_ArrayDisplay($aArray_list1, "2")
;----array zusammenführen----
[/autoit] [autoit][/autoit] [autoit]_ArrayConcatenate($aArray_var1, $aArray_list1)
$aArray_var1 = _ArrayUnique($aArray_var1)
_ArrayDelete($aArray_var1, 0)
_ArraySort($aArray_var1)
_GUICtrlEdit_SetText($Edit2, $strData_TB_Text)
_ArrayDisplay($aArray_var1, 'all')
_GUI_Var_List()
[/autoit] [autoit][/autoit] [autoit];----
;ClipPut($wert1)
EndSwitch
WEnd
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _GUI_Var_List()
[/autoit] [autoit][/autoit] [autoit]Dim $Labels_var[100]
Dim $Inputs_var[100]
$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], ![]()
$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
;$x += 150
;If $x + 120 > 600 Then
$y_l += 20
$y_i += 20
;$x = 20
;EndIf
Next
$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
WEnd
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]#Region Textdatei
#CS
Func _File_01()
$DATAC2 = ""
$sString = ""
$file = (@ScriptDir & "\TB.txt")
If Not _FileReadToArray($file,$aRecords) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
For $x = 1 to $aRecords[0]
;Msgbox(0,'Record:' & $x, $aRecords[$x])
$sString &= $aRecords[$x]
Next
;MsgBox(0,"", $sString)
$DATAC2 = $sString
EndFunc
#CE
#EndRegion Textdatei
;------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)
With $adoRs
If .RecordCount Then
While Not .EOF
$_output = $_output & .Fields($_field).Value & @CRLF
.MoveNext
WEnd
EndIf
EndWith
$adoCon.Close
Return $_output
EndFunc ;==>_ReadOneFld
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)
With $adoRs
If .RecordCount Then
While Not .EOF
$_output = $_output & .Fields($_field).Value & "|" ;@CRLF
.MoveNext
WEnd
EndIf
EndWith
$adoCon.Close
Return $_output
EndFunc ;==>_ReadOneFld
danke ![]()
gruß gmmg