2016-06-02 7 views
1

Ich versuche, einen Prozess-Scheduler als ein Projekt in der Schule in diesem Sommer zu erstellen und bin ziemlich neu in der Verwendung von VB. Derzeit habe ich eine Combobox an die "EmployeeBindingSource" gebunden, die Informationen für jeden einzelnen Mitarbeiter in einem Unternehmen enthält. Jedem Mitarbeiter wird für jeden Arbeitsplatz im Gebäude ein Fähigkeitslevel zugewiesen. Was ich tun möchte, ist, wenn ein Mitarbeiter mit der Fähigkeit "0" in der Montagestation aufgeführt ist, wenn ein Mitarbeiter ausgewählt wird, der der Montagestation zugewiesen wird, dieser bestimmte Mitarbeiter nicht in der Combobox erscheint.Filter-Datenfeld-Combobox basierend auf Wert in einer anderen Spalte aus dem gleichen Datensatz

Von einigen Recherchen glaube ich, dass, anstatt die Combobox an die Datenquelle im Designer zu binden, muss ich die einzelnen Kombinationsfelder im Code auf einem Formular laden zuweisen.

This is the access table that holds all the employee information

In der Tabelle können wir sehen, dass Steve ein Skill-Level von "0" in der Kategorie AS_Level (Montag) hat.

However, here we can see that he still appears as an option for the assembly area when creating a new project

Zeit all Daten geschieht im Designer für jedes Kombinationsfeld verbindlich und daher kein Code für die Daten ist verbindlich geschrieben. Momentan ist jedes Kombinationsfeld an die Spalte "Full_Name" in der Zugriffstabelle gebunden.

Wieder bin ich ziemlich neu in VB, also entschuldige ich mich, wenn das zu vage ist. Lassen Sie mich wissen, wenn ich weitere hilfreiche Informationen geben kann. Vielen Dank im Voraus.

Nachdem Sie den Code hier vorgeschlagen ist, was ich habe

provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
    datafile = "C:\Users\Jacob\Desktop\Halton\HaltonProject.accdb" 
    connString = provider & datafile 
    myConnection.ConnectionString = connString 
    myConnection.Open() 

    Dim str As String 
    str = "SELECT * FROM [Employee] WHERE (SP_Level <> '" & 0 & "')" 
    Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection) 
    Dim dr As OleDbDataReader = cmd.ExecuteReader 

    Dim userfound As Boolean = False 
    Dim Full_Name As String 

    While dr.Read 
     userfound = True 
     Full_Name = dr("Full_Name").ToString 
     SP_Emp1.Items.Add(Full_Name) 
     SP_Emp2.Items.Add(Full_Name) 
     SP_Emp3.Items.Add(Full_Name) 
     SP_Emp4.Items.Add(Full_Name) 
    End While 

    myConnection.Close() 

Works jetzt komplett!

+1

könnten Sie Ihren verbindlichen Code veröffentlichen, wird es hilfreich sein. Wenn Sie jedes Kombinationsfeld einzeln binden, können Sie eine where-Klausel hinzufügen, um die Informationen aus der Tabelle zu erhalten, in der der "x" -Parameter nicht 0 – abichango

+0

Derzeit bin ich für das Zuweisen der Bindung für jede Combobox im Designer selbst Klicken Sie auf die kleine Karotte in der oberen rechten Ecke und wählen Sie die Datenquelle, das Anzeigeelement und das Wertelement aus. Für Datenquelle verwende ich die "EmployeeBindingSource", die die Access-Tabelle angezeigt wird, und für beide Anzeigeelement und Wertelement verwende ich "Full_Name". Wäre so etwas der richtige Weg? 'Dim cmd As OleDbCommand = Neuer OleDbCommand (" SELECT * FROM [Mitarbeiter] WHERE ** Code hier **, myConnection) Dim dr Als OleDbDataReader = cmd.ExecuteReader' –

Antwort

1

Basierend auf Ihre Kommentare und Post, gehe ich davon aus, die Kontrollkästchen auf der linken Seite aktivieren/deaktivieren Sie die Auswahlfelder auf dieser Zeile, und da man sie individuell sind verbindlich, wenn Sie Ihre Abfrage ändern, so dass es wie folgt aussieht:

Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [Employee] WHERE AS_Level <> 0 , myConnection) Dim dr As OleDbDataReader = cmd.ExecuteReader 

Beachten Sie, dass die WHERE-Klausel je nach Ihren Anforderungen variieren kann, so könnte es WHERE AS_Level <> 0 oder WHERE SP_Level <> 0 und so weiter sein.

Ich habe noch nie eine Ole-Datenbank verwendet, also bin ich mir nicht ganz sicher über die Syntax, hoffe das hilft.

+0

Ja funktionieren die Checkboxen auf diese Weise. Ich glaube, das ist so. " der richtige Weg, aber ich bin mir auch unsicher über die Syntax. Das hilft aber sicherlich, danke! –

+0

Ich habe den ursprünglichen Beitrag mit dem Code aktualisiert, den ich jetzt benutze, der deinen Vorschlag widerspiegelt. Nur ein kleines Problem bleibt, das ich auch habe erklärt in der OP –

+0

sorry aber, was ist das andere Problem, das Sie haben ?? Vielleicht verstehe ich nicht die Frage selbst lol, ist es über die Bindung? – abichango

Verwandte Themen