Я работаю над базой данных, чтобы организовать ресурс документов для назначенных читателей для легкого доступа и просмотра в моем офисе.Cascading Combo Box Query for Union Query
Я перешел в каскадный скелет со списком с here, и я надеюсь получить рецензентов и получателей для фильтрации документов в подформе в соответствии с критериями. Проблема в основном связана с тем, что моя организация оставляет меня иметь разветвленное, а затем линейное дерево отношений, а не прямое линейное дерево отношений. Есть много полезных советов, но я просто не могу получить правильную комбинацию из-за этого, чтобы разрешить свое препятствие.
Дерево взаимосвязей выглядит следующим образом Тип бумаги> Подкомитет> Сессия> Работы. Я остановился на этом, потому что пересматриваю документы из одного источника (международный ресурс), который имеет два типа бумаги (рабочий и неофициальный) и имеет несколько подкомитетов (мой офис интересуется только двумя комитетами).
Каскад работает нормально, подчиненное устройство изначально корректно заполняется из запроса, но при выборе параметров запрос не может соответствовать критериям, так как они являются поисковыми значениями.
Запрос идентифицирована как qrylstpapers содержит следующие поля:
PaperTypeName, SubCommitteeName, SessionNumber, PaperNumber, Title, Subject, Origin.
Эти поля вытягиваются из таблиц PaperType подкомиссии, сессия, Papers
У меня есть два запроса, один для трудящегося и один для Неофициальные типы документов. У меня есть третий запрос для объединения двух.
Я думал, что запрос из запроса объединения упростит его, и, пока он заполняет подчиненную форму, сортировка не работает.
Команда Я использую в VBA для сортировки запроса запроса союза заключается в следующем:
Private Sub FilterPaperList()
Dim strRS As String
strRS = "SELECT qrylstpapers.Title, qrylstpapers.PaperTypeName FROM qrylstpapers"
If Not IsNull(Me.cboPaperNumberAssign) Then
strRS = strRS & " WHERE PaperNumber = " & Me.cboPaperNumberAssign
ElseIf Not IsNull(Me.cboSessionAssign) Then
strRS = strRS & " WHERE SessionNumber = " & Me.cboSessionAssign
ElseIf Not IsNull(Me.cboSubCommitteeAssign) Then
strRS = strRS & " WHERE SubCommitteeName = " & Me.cboSubCommitteeAssign
ElseIf Not IsNull(Me.cboPaperTypeAssign) Then
strRS = strRS & " WHERE PaperTypeName = " & Me.cboPaperTypeAssign
End If
strRS = strRS & " ORDER BY qrylstpapers.Title;"
Me.lstPapers.RowSource = strRS
Me.lstPapers.Requery
End Sub
Одна вещь, которую я действительно пытался что-то работал было указать «Me.cboPapertypeAssign.Column (1) », и в нем появится диалоговое окно с запросом на ввод данных, следующее с именем документа« WP »или« INF »даст мне соответствующую сортировку.
Любые мысли, понимание и/или общая критика будут высоко оценены. Даже если это перестройка отношений.
EDIT
Option Compare Database
Option Explicit
Private Sub cboAgency_AfterUpdate()
' Set the Mode combo box to be limited by the selected Agency
Me.cboMode.RowSource = "SELECT tblMode.ModeID, tblMode.ModeName FROM tblMode " & _
" WHERE AgencyID = " & Nz(Me.cboAgency) & _
" ORDER BY ModeName"
Me.cboMode = Null
EnableControls
End Sub
Private Sub cboMode_AfterUpdate()
' Set the Branch combo box to be limited by the selected Mode
Me.cboBranch.RowSource = "SELECT tblBranch.BranchID, tblBranch.BranchName FROM tblBranch " & _
" WHERE ModeID = " & Nz(Me.cboMode) & _
" ORDER BY BranchName"
Me.cboBranch = Null
EnableControls
End Sub
Private Sub cboBranch_AfterUpdate()
' Set the Office combo box to be limited by the selected Branch
Me.cboOffice.RowSource = "SELECT tblOffice.OfficeID, tblOffice.OfficeNumber FROM tblOffice " & _
" WHERE BranchID = " & Nz(Me.cboBranch) & _
" ORDER BY OfficeNumber"
Me.cboOffice = Null
EnableControls
End Sub
Private Sub cboOffice_AfterUpdate()
' Set the Reviewer combo box to be limited by the selected Office
Me.cboReviewer.RowSource = "SELECT tblReviewers.ReviewerID, tblReviewers.LastName FROM tblReviewers " & _
" WHERE OfficeID = " & Nz(Me.cboOffice) & _
" ORDER BY LastName"
Me.cboReviewer = Null
EnableControls
End Sub
Private Sub cboPaperTypeAssign_AfterUpdate()
'Enable the SubCommittee Combo Box
If Me.cboPaperTypeAssign.Column(1) = "WP" Then
Me.cboSubCommitteeAssign.RowSource = "SELECT tblUNWPSubCommittee.SubCommitteeID, tblUNWPSubCommittee.SubCommitteeName From tblUNWPSubCommittee " & _
" Where PaperTypeID = " & Nz(Me.cboPaperTypeAssign) & _
" ORDER BY SubCommitteeName"
Me.cboSubCommitteeAssign = Null
ElseIf Me.cboPaperTypeAssign.Column(1) = "INF" Then
Me.cboSubCommitteeAssign.RowSource = "SELECT tblUNINFSubCommittee.SubCommitteeID, tblUNINFSubCommittee.SubCommitteeName From tblUNINFSubCommittee " & _
" Where PaperTypeID = " & Nz(Me.cboPaperTypeAssign) & _
" ORDER BY SubCommitteeName"
Me.cboSubCommitteeAssign = Null
End If
EnableControls
FilterPaperList
End Sub
Private Sub cboSubCommitteeAssign_AfterUpdate()
'Enable the Session Combo Box
If Me.cboSubCommitteeAssign.Column(1) = "GHS" And Me.cboPaperTypeAssign.Column(1) = "INF" Then
Me.cboSessionAssign.RowSource = "SELECT tblUNINFSessions.SessionID, tblUNINFSessions.SessionNumber From tblUNINFSessions " & _
" Where SubCommitteeID = " & Nz(Me.cboSubCommitteeAssign) & _
" ORDER BY SessionNumber"
Me.cboSessionAssign = Null
ElseIf Me.cboSubCommitteeAssign.Column(1) = "TDG" And Me.cboPaperTypeAssign.Column(1) = "INF" Then
Me.cboSessionAssign.RowSource = "SELECT tblUNINFSessions.SessionID, tblUNINFSessions.SessionNumber From tblUNINFSessions " & _
" Where SubCommitteeID = " & Nz(Me.cboSubCommitteeAssign) & _
" ORDER BY SessionNumber"
Me.cboSessionAssign = Null
ElseIf Me.cboSubCommitteeAssign.Column(1) = "GHS" And Me.cboPaperTypeAssign.Column(1) = "WP" Then
Me.cboSessionAssign.RowSource = "SELECT tblUNWPSessions.SessionID, tblUNWPSessions.SessionNumber From tblUNWPSessions " & _
" Where SubCommitteeID = " & Nz(Me.cboSubCommitteeAssign) & _
" ORDER BY SessionNumber"
Me.cboSessionAssign = Null
ElseIf Me.cboSubCommitteeAssign.Column(1) = "TDG" And Me.cboPaperTypeAssign.Column(1) = "WP" Then
Me.cboSessionAssign.RowSource = "SELECT tblUNWPSessions.SessionID, tblUNWPSessions.SessionNumber From tblUNWPSessions " & _
" Where SubCommitteeID = " & Nz(Me.cboSubCommitteeAssign) & _
" ORDER BY SessionNumber"
Me.cboSessionAssign = Null
End If
EnableControls
FilterPaperList
End Sub
Private Sub cboSessionAssign_AfterUpdate()
'Enable the Paper Number Combo Box
If Me.cboSubCommitteeAssign.Column(1) = "GHS" And Me.cboPaperTypeAssign.Column(1) = "INF" Then
Me.cboPaperNumberAssign.RowSource = "Select tblUNINFPapers.ID, tblUNINFpapers.PaperNumber From tblUNINFPapers " & _
" Where SessionID = " & Nz(Me.cboSessionAssign) & _
" Order by PaperNumber"
ElseIf Me.cboSubCommitteeAssign.Column(1) = "TDG" And Me.cboPaperTypeAssign.Column(1) = "INF" Then
Me.cboPaperNumberAssign.RowSource = "Select tblUNINFPapers.ID, tblUNINFpapers.PaperNumber From tblUNINFPapers " & _
" Where SessionID = " & Nz(Me.cboSessionAssign) & _
" Order by PaperNumber"
ElseIf Me.cboSubCommitteeAssign.Column(1) = "GHS" And Me.cboPaperTypeAssign.Column(1) = "WP" Then
Me.cboPaperNumberAssign.RowSource = "Select tblUNWPPapers.ID, tblUNWPPapers.PaperNumber From tblUNWPPapers " & _
" Where SessionID = " & Nz(Me.cboSessionAssign) & _
" Order by PaperNumber"
ElseIf Me.cboSubCommitteeAssign.Column(1) = "TDG" And Me.cboPaperTypeAssign.Column(1) = "WP" Then
Me.cboPaperNumberAssign.RowSource = "Select tblUNWPPapers.ID, tblUNWPPapers.PaperNumber From tblUNWPPapers " & _
" Where SessionID = " & Nz(Me.cboSessionAssign) & _
" Order by PaperNumber"
End If
EnableControls
FilterPaperList
End Sub
Private Sub cboPaperNumberAssign_AfterUpdate()
' Filter the list of papers based on the selection(s)
FilterPaperList
End Sub
Private Sub FilterPaperList()
Dim strRS As String
' Filter the list box appropriateley based on the combo box selection(s)
strRS = "SELECT qrylstpapers.Title, qrylstpapers.PaperTypeName FROM qrylstpapers"
If Not IsNull(Me.cboPaperNumberAssign) Then
strRS = strRS & " WHERE PaperNumber = " & Me.cboPaperNumberAssign
ElseIf Not IsNull(Me.cboSessionAssign) Then
strRS = strRS & " WHERE SessionNumber = " & Me.cboSessionAssign
ElseIf Not IsNull(Me.cboSubCommitteeAssign) Then
strRS = strRS & " WHERE SubCommitteeName = " & Me.cboSubCommitteeAssign
ElseIf Not IsNull(Me.cboPaperTypeAssign) Then
strRS = strRS & " WHERE PaperTypeName = " & Me.cboPaperTypeAssign
End If
strRS = strRS & " ORDER BY qrylstpapers.Title;"
Me.lstPapers.RowSource = strRS
Me.lstPapers.Requery
End Sub
Private Sub EnableControls()
' Clear the Reviewer combo boxes
If IsNull(Me.cboAgency) Then
Me.cboMode = Null
End If
If IsNull(Me.cboMode) Then
Me.cboBranch = Null
End If
If IsNull(Me.cboBranch) Then
Me.cboOffice = Null
End If
If IsNull(Me.cboOffice) Then
Me.cboReviewer = Null
End If
' Clear the PaperAssign combo boxes
If IsNull(Me.cboPaperTypeAssign) Then
Me.cboSubCommitteeAssign = Null
End If
If IsNull(Me.cboSubCommitteeAssign) Then
Me.cboSessionAssign = Null
End If
If IsNull(Me.cboSessionAssign) Then
Me.cboPaperNumberAssign = Null
End If
' Enable or disable Reviewer combo boxes based on whether the combo box preceeding it has a value.
Me.cboMode.Enabled = (Not IsNull(Me.cboAgency))
Me.cboBranch.Enabled = (Not IsNull(Me.cboMode))
Me.cboOffice.Enabled = (Not IsNull(Me.cboBranch))
Me.cboReviewer.Enabled = (Not IsNull(Me.cboOffice))
' Enable or disable PaperAssign combo boxes based on whether the combo box preceeding it has a value.
Me.cboSubCommitteeAssign.Enabled = (Not IsNull(Me.cboPaperTypeAssign))
Me.cboSessionAssign.Enabled = (Not IsNull(Me.cboSubCommitteeAssign))
Me.cboPaperNumberAssign.Enabled = (Not IsNull(Me.cboSessionAssign))
End Sub
Private Sub Form_Load()
EnableControls
FilterPaperList
End Sub
Я надеялся, что мне не придется публиковать все, сколько бы оно ни было, но код, на который вы потратили время, чтобы написать/изменить, не разрешает мою проблему. Итак, я добавил все к своему оригинальному сообщению. –