Servus zusammen,
zunächst einmal Danke für die vielen Beiträge in dem Forum - das hat mir schon sehr oft geholfen. Jetzt stehe ich aber selber vor einem Problem, zu dem ich noch nichts finden konnte und deshalb verfasse ich hier mal meinen ersten Beitrag.
Aber fangen wir mal von vorne an...
Ich möchte Messdaten aus einer MySQL-Datenbank auslesen, wobei in der Tabellen die folgenden Spalten vorhanden sind: id, time, machine_id, tool_id, input_type, input_content, project_id.
Die Daten sollen in einem Graphen (Y-Achse: Double, X-Achse: Date) dargestellt werden. Dabei möchte ich aber über Comboboxen nach project_id und tool_id links und tool_id rechts filtern können. Es gibt also 3 ComboBoxen die enstrechend cbox_ident, cbox_tools_left und cbox_tools_right heißen.
Wenn eine Maschine ausgewählt wird, wird cbox_ident befüllt:
Bei dem Change-Event von cbox_ident werden cbox_tools_left und cbox_tools_right befüllt, da für bestimmte Idente nur bestimmte Tools verwendet werden:
Wobei loadTools() so aussieht:
In Datenbankabfrage_Visualisierung werden abhängig von gewähltem Ident und gewählten Tools die eigentlichen Daten aus der Datenbank abgefragt, in DataTables gespeichert und anschließend im Chart dargestellt.
Nun zu meinem Problem:
Es funktioniert soweit alles gut. Wenn ich aber, nachdem ich die ComboBoxen für die Tools befüllt habe, über das DropDown ein Tool anklicke, übernimmt der das kurz, aber danach wird automatisch auf SelectedIndex = -1 gestellt. Es wird also wie im unten stehenden Code das SlectedIndexChanged Event zweimal ausgeführt - einmal mit dem von mir ausgewählten Tool und dann nochmal mit dem automatisch gesetzten Index -1.
Ich kann mir einfach nicht erklären, warum auf einmal der Index von der ComboBox automatisch auf -1 gesetzt wird, ohne dass ich irgendwo einen entsprechenden Befehl gebe.
Hat einer von Euch schonmal eine ähnliche Erfahrung gemacht? Oder ist das automatische Setzen auf Index -1 möglicherweise eine "Sicherheitsvorkehrung" für irgendwas?
Ich stehe echt auf dem Schlauch. Wäre cool, wenn Ihr mich dabei unterstützen könntet.
Ich hoffe, ich habe mein Problem verständlich rüberbringen können. Ansonsten gebt gerne Bescheid, und ich versuche es nochmal besser oder detaillierter zu erklären.
Danke vorab für Euren Support und Gruß
Jonas
zunächst einmal Danke für die vielen Beiträge in dem Forum - das hat mir schon sehr oft geholfen. Jetzt stehe ich aber selber vor einem Problem, zu dem ich noch nichts finden konnte und deshalb verfasse ich hier mal meinen ersten Beitrag.
Aber fangen wir mal von vorne an...
Ich möchte Messdaten aus einer MySQL-Datenbank auslesen, wobei in der Tabellen die folgenden Spalten vorhanden sind: id, time, machine_id, tool_id, input_type, input_content, project_id.
Die Daten sollen in einem Graphen (Y-Achse: Double, X-Achse: Date) dargestellt werden. Dabei möchte ich aber über Comboboxen nach project_id und tool_id links und tool_id rechts filtern können. Es gibt also 3 ComboBoxen die enstrechend cbox_ident, cbox_tools_left und cbox_tools_right heißen.
Wenn eine Maschine ausgewählt wird, wird cbox_ident befüllt:
VB.NET-Quellcode
-
- Sub loadIdents()
- 'Fill cbox_ident
- Dim ident As String
- Dim list_ident As New List(Of String)
- list_ident.Clear()
- list_ident.Add("All idents")
- Try
- con.Open()
- cmd.CommandText = "Select project_id FROM cdb.userinputlog WHERE machine_id ='" & machineID & "';"
- reader = cmd.ExecuteReader
- Do While reader.Read
- ident = reader("project_id")
- list_ident.Add(ident)
- Loop
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- con.Close()
- 'Duplikate entfernen und in cbox schreiben
- Dim list_ident_clear As New List(Of String)
- list_ident_clear = list_ident.Distinct().ToList
- cbox_ident.DataSource = list_ident_clear
- End Sub
Bei dem Change-Event von cbox_ident werden cbox_tools_left und cbox_tools_right befüllt, da für bestimmte Idente nur bestimmte Tools verwendet werden:
Wobei loadTools() so aussieht:
VB.NET-Quellcode
- Sub loadTools()
- 'Ident
- If cbox_ident.Text = "All idents" Then
- commandStringIdents = "IS NOT NULL"
- Else
- commandStringIdents = "= '" & cbox_ident.Text & "'"
- End If
- 'Fill cbox_tool left
- Dim tool As String
- Dim list_tools As New List(Of String)
- list_tools.Clear()
- list_tools.Add("All tools")
- Try
- con.Open()
- cmd.CommandText = "Select tool_id FROM cdb.userinputlog WHERE machine_id ='" & machineID & "' AND project_id " & commandStringIdents & " AND input_type = 'bending_K_0_left';"
- reader = cmd.ExecuteReader
- Do While reader.Read
- tool = reader("tool_id")
- list_tools.Add(tool)
- Loop
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- con.Close()
- 'Duplikate entfernen und in cbox schreiben
- Dim list_tools_clear As New List(Of String)
- list_tools_clear = list_tools.Distinct().ToList
- cbox_tools_left.DataSource = list_tools_clear
- 'Fill cbox_tool right
- list_tools.Clear()
- list_tools.Add("All tools")
- Try
- con.Open()
- cmd.CommandText = "Select tool_id FROM cdb.userinputlog WHERE machine_id ='" & machineID & "' AND project_id " & commandStringIdents & " AND input_type = 'bending_K_0_right';"
- reader = cmd.ExecuteReader
- Do While reader.Read
- tool = reader("tool_id")
- list_tools.Add(tool)
- Loop
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- con.Close()
- 'Duplikate entfernen und in cbox schreiben
- list_tools_clear.Clear()
- list_tools_clear = list_tools.Distinct().ToList
- cbox_tools_right.DataSource = list_tools_clear
- End Sub
In Datenbankabfrage_Visualisierung werden abhängig von gewähltem Ident und gewählten Tools die eigentlichen Daten aus der Datenbank abgefragt, in DataTables gespeichert und anschließend im Chart dargestellt.
Nun zu meinem Problem:
Es funktioniert soweit alles gut. Wenn ich aber, nachdem ich die ComboBoxen für die Tools befüllt habe, über das DropDown ein Tool anklicke, übernimmt der das kurz, aber danach wird automatisch auf SelectedIndex = -1 gestellt. Es wird also wie im unten stehenden Code das SlectedIndexChanged Event zweimal ausgeführt - einmal mit dem von mir ausgewählten Tool und dann nochmal mit dem automatisch gesetzten Index -1.
Ich kann mir einfach nicht erklären, warum auf einmal der Index von der ComboBox automatisch auf -1 gesetzt wird, ohne dass ich irgendwo einen entsprechenden Befehl gebe.
Hat einer von Euch schonmal eine ähnliche Erfahrung gemacht? Oder ist das automatische Setzen auf Index -1 möglicherweise eine "Sicherheitsvorkehrung" für irgendwas?
Ich stehe echt auf dem Schlauch. Wäre cool, wenn Ihr mich dabei unterstützen könntet.
Ich hoffe, ich habe mein Problem verständlich rüberbringen können. Ansonsten gebt gerne Bescheid, und ich versuche es nochmal besser oder detaillierter zu erklären.
Danke vorab für Euren Support und Gruß
Jonas