2017-05-24 10 views
1

Ich verwende MS Access 2010, um Aufzeichnungen über Audits zu speichern, die in unserem Krankenhaus stattfinden. Ich versuche ein Formular zu erstellen, in dem die Audits entsprechend den ausgewählten Drop-Down-Optionen gefiltert werden.Cascading Combo-Box aktualisiert nicht die Optionen der zweiten Box

Ich möchte, dass die Specialty-Comboboxen aus Directorate kaskadiert werden. Wenn ich also die Direktion "Familie und öffentliche Gesundheit" auswähle, erscheinen in der Combo-Box nur die Specialties, die zu dieser Direktion gehören.

Meine ComboDirectorate Row Quelle ist SELECT [tblDirectorate]. [Direktion Key], [tblDirectorate]. [Direktion] FROM tblDirectorate;

Meine ComboSpecialty-Zeilenquelle ist SELECT tblSpecialty. [Specialty Key], tblSpecialty.Specialty FROM tblSpecialty;

Ich habe dann Nach einem Update-Code für ComboDirectorate:

Private Sub ComboDirectorate_AfterUpdate() 
Me.ComboSpecialty.RowSource = _ 
    & "SELECT [tblSpecialty].[Specialty Key], [tblSpecialty].[Specialty]" _ 
    & "FROM tblSpecialty WHERE [tblSpecialty].[Directorate] = " _ 
    & Me.ComboDirectorate 
Me.ComboSpecialty.Requery 
End Sub 

Dies scheint nicht auf die aufgeführten Spezialitäten beeinflussen zu lassen.

Ich habe versucht Putting in ‚‘ gemäß Can't get the cascading combo boxes to work

WHERE Directorate = '" & Nz(Me.ComboDirectorate) & "' " & _ 

Aber es immer noch nicht die Spezialitäten Liste entsprechend der gewählten Direktion.

Antwort

0

Antwort June7 die Verwendung von codierten ich folgendes:

Private Sub ComboSpecialty_GotFocus() 
    If IsNull(Me.ComboDirectorate) Then 
    Me.ComboSpecialty.RowSource = "SELECT [Specialty Key], Specialty FROM tblSpecialty" 
ElseIf Not IsNull(Me.ComboDirectorate) Then 
    Me.ComboSpecialty.RowSource = "SELECT [Specialty Key], Specialty FROM tblSpecialty WHERE Directorate = [ComboDirectorate]" 
End If 

Me.ComboSpecialty.Requery 
End Sub 

Wenn der Benutzer nicht einen Wert aus dem ersten Kombinationsfeld auswählt (ComboDirectorate) dann werden alle Werte in der zweiten Kombinationsfeld angezeigt werden (ComboSpecialty). Wenn in der ersten Box ein Wert ausgewählt ist, werden nur die zugehörigen Werte in der zweiten Combobox angezeigt.

0

Ich habe Combobox bekannt, um beschädigt zu werden, und ich musste neue Combobox erstellen. Überprüfen Sie jedoch zunächst, ob die Eigenschaften von BoundColumn und ColumnCount für jede Combobox korrekt festgelegt sind.

Stellen Sie sicher, dass der Wert von ComboDirectorate der gleiche Wert ist, der in tblSpecialty gespeichert ist - ich nehme an, dass es sich um PK/FK handelt.

Ich würde gesetzt ComboSpecialty RowSource zu:
SELECT [Specialty Key], Specialty FROM tblSpecialty WHERE Directorate = [ComboDirectorate];

Dann würde ich Code in ComboSpecialty GotFocus-Ereignis setzen.

Sub ComboSpecialty_GotFocus() 
Me.ComboSpecialty.Requery 
End Sub 

Beachten Sie, dass mit Lookup alias Kaskadierung Combobox wird in Continuous oder Datenblatt Form nicht schön arbeiten.

Berücksichtigen Sie in der Namenskonvention keine Leerzeichen oder Interpunktionszeichen/Sonderzeichen (Unterstriche nur Ausnahme).

+0

Danke für Ihre Hilfe. – rp809

+0

Gibt es eine Möglichkeit, es zu optimieren, so dass, wenn eine Direktion nicht ausgewählt ist, alle Spezialitäten aufgeführt sind? Momentan, wenn ComboSpecialty RowSource wie von Ihnen empfohlen eingestellt ist, erscheint nichts in der Spezialbox, wenn ich keine Direktion auswähle. Ich denke, wenn jemand nicht weiß, in welcher Direktion die Spezialität ist, aber die Spezialität kennt. – rp809

+0

Vielleicht ein Code in Richtung 'Private Sub ComboSpecialty_Click() Wenn Directorate =" "Dann Me.ComboSpecialty.RowSource =" SELECT tblSpecialty.[Specialty Key], tblSpecialty.Specialty VON tblSpecialty“ ElseIf Direktion <> "" Dann Me.ComboSpecialty.RowSource = "SELECT [Specialty Key], Spezialität aus tblSpecialty WHERE Direktion = [ComboDirectorate]" End If End Sub' – rp809

Verwandte Themen