[英]Dynamic Selection Query with Criteria in Ms Access | SQL
我有一個查詢,其中我 select 多個值。 創建我的表單。
結果如下所示:
最后一列 [Candidat Nom] 是一個下拉列表,其中包含另一個查詢(我們稱之為查詢 1),即 select 我的下拉列表值。
選擇很好,是我正在尋找的。 除了當它們需要不同時,我為所有行獲得相同的值。
簡化
讓我們舉個例子
我有以下候選人想要加入以下工作(用他們的 ID 表示)。
正如我們所看到的,有 2 名候選人想要第 12 號工作,並且有 1 名候選人需要其他工作。
我得到什么
列出了每項工作的所有候選人。
我想要的是
我實際上做了什么
我是否將以下查詢(查詢 1)放在我的專欄中。
SELECT T_SALARIE.SALARIE_nom & " " & T_SALARIE.SALARIE_prenom AS Candidat Nom
FROM T_EMPLOI INNER JOIN (T_SALARIE INNER JOIN (T_SALARIE_EMPLOI LEFT JOIN T_STATUT_EMPLOI ON T_SALARIE_EMPLOI.SALARIE_EMPLOI_statut_id = T_STATUT_EMPLOI.STATUT_EMPLOI_id) ON T_SALARIE.SALARIE_NNI = T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni) ON T_EMPLOI.EMPLOI_identifiant = T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant
WHERE (((T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*valid*" Or (T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*décidé*") AND ((T_EMPLOI.EMPLOI_entreprise_id)=1));
這給了我想要的結果,但是我之前提到的問題(每行的結果相同)
所以
我想我需要一個新的標准。 我添加了一個,當我的實際表的兩個“emploi ID”(如前所示)和一個幫助我的 select 候選人相等時,它將成為 select 候選人。
使用以下查詢:
SELECT T_SALARIE.SALARIE_nom & " " & T_SALARIE.SALARIE_prenom AS Candidat, T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant
FROM T_EMPLOI INNER JOIN (T_SALARIE INNER JOIN (T_SALARIE_EMPLOI LEFT JOIN T_STATUT_EMPLOI ON T_SALARIE_EMPLOI.SALARIE_EMPLOI_statut_id = T_STATUT_EMPLOI.STATUT_EMPLOI_id) ON T_SALARIE.SALARIE_NNI = T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni) ON T_EMPLOI.EMPLOI_identifiant = T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant
WHERE (((T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*valid*" Or (T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*décidé*") AND ((T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant)=[R_Select_COMOB]![ACTION_identifiant_emploi]));
但我不斷收到以下彈出窗口,要求我輸入工作 ID
那么如何對每一行進行查詢比較和 select 正確的值?
我希望我解釋清楚。 如果沒有,請告訴我,以便我添加更多詳細信息。
謝謝 !
感謝您的幫助,特別是@June7 的建議,我找到了解決我的問題的方法:
我根據我沒有在第一手選擇的 JobID 為 select 值添加了一個標准。 然后根據列 (jobID) select 所需的值
這是我的最終查詢:
SELECT
[SALARIE_nom] & " " & [SALARIE_prenom] & " (" & [SALARIE_NNI] & ")" AS Salarié, T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni, T_SALARIE_EMPLOI.SALARIE_EMPLOI_id, T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant
FROM
(T_STATUT_EMPLOI INNER JOIN T_SALARIE_EMPLOI ON T_STATUT_EMPLOI.STATUT_EMPLOI_id = T_SALARIE_EMPLOI.SALARIE_EMPLOI_statut_id) LEFT JOIN R_Select_Salarie ON T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni = R_Select_Salarie.SALARIE_NNI
WHERE
(((T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant)=[Formulaires]![F_COMOB]![ACTION_identifiant_emploi]) AND ((T_STATUT_EMPLOI.STATUT_EMPLOI_statut) Like "*validé*") AND ((T_SALARIE_EMPLOI.SALARIE_EMPLOI_Entreprise) Like "*RTE*"));
然后為每一行更新我的值。 我添加了一個重新查詢輸入的 VBA 代碼。
Private Sub ACTION_Candidats_P_Enter()
ACTION_Candidats_P.Requery
End Sub
這樣我的問題就解決了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.