2014-01-15 52 views
0

基本上我試圖自動填充團隊成員名稱的下拉框,這種方式在未來隨着團隊成員被刪除並添加下拉列表將自動進行調整。這是簡單的部分,難的部分是我還需要「全部」出現在下拉框中。雖然我似乎無法找到任何方法來實現這一點,但我正在尋找任何想法,或者有人告訴我這是不可能的。如何將字符串連接到Access中的SQL查詢中?

在這一點上我只是有下拉行來源爲「表/查詢」,查詢是:

SELECT [Team Table].[Team_Member_ID], [Team Table].[USER_ID] 
    FROM [Team Table] 
    WHERE [Active] = True 
    ORDER BY [USER_ID] ; 

我曾多次嘗試在一個UNION SELECTUNION ALL SELECT添加,但我不能看到讓它運行,SQL不是我最強的套裝,所以可能只是我。

回答

0

全部顯示在頂部和排序其餘的我最後不得不創建此函數做什麼,我需要。

Sub ValueList(ByRef rs As Recordset, _ 
      strReturnColumn As String, _ 
      strCtrlToChange As String, _ 
      strDefaultValueIn As String, _ 
      frm As Form) 


    Dim strRowSource As String 
    Dim strDefaultValue As String 

    strDefaultValue = strDefaultValueIn 
    strRowSource = "" 
    rs.MoveFirst 

    'If there is a Default Value add it to the RowSource 
    If strDefaultValue <> "" Then 
     strRowSource = strRowSource & strDefaultValue & ";" 
    End If 

    'Add all results onto the RowSource 
    Do While Not rs.EOF 
     If CStr(rs.Fields(strReturnColumn) & "") <> "" Then 
      strRowSource = strRowSource & CStr(rs.Fields(strReturnColumn) & "") & ";" 
     End If 
     rs.MoveNext 
    Loop 

    'Set Rowsource and default value 
    frm.Controls(strCtrlToChange).RowSource = strRowSource 
    frm.Controls(strCtrlToChange).DefaultValue = "'" & strDefaultValue & "'" 

End Sub 
4

使用聯合

SELECT 0  AS [Team_Member_ID], 'All' AS [USER_ID] 
UNION 
SELECT [team table].[team_member_id], [team table].[user_id] 
FROM [team table] 
WHERE [active] = true 
ORDER BY [user_id]; 
+0

現在,這是是我想訪問被扔在東西扳手由於這是一個組合框的源。當我嘗試點擊下拉列表時,我從訪問中收到一條錯誤消息:「查詢輸入必須至少包含一個表或查詢」。我可以在技術上'欺騙',並簡單地創建一個名爲'All'的假用戶,雖然我真的不喜歡混淆數據庫。我只是覺得有一種方法可以正確地做到這一點。 – Newd

+0

組合框的來源(查詢)是什麼? –

+0

當我在製作組合框時運行嚮導後,它生成了與我上面發佈的那個完全相同的查詢,減去「WHERE [Active] = True」,希望能夠回答你的問題? – Newd

2

試試這個。這將通過USER_ID

SELECT * FROM 
(
    SELECT -1 as [Team_Member_ID], 'ALL' as [USER_ID] 
    UNION 
    SELECT [Team Table].[Team_Member_ID], [Team Table].[USER_ID] FROM [Team Table] WHERE [Active] = True 
) as a 
ORDER BY CASE WHEN [USER_ID] = 'ALL' THEN 0 ELSE 1 END, [USER_ID] 
+0

嘗試運行此Access時,將在查詢表達式'CASE WHEN [USER_ID] ='中返回錯誤「Syntax error(missing operator)全部'THEN 0 ELSE 1 END'。「 – Newd

+0

我寫錯了SQL Server的查詢。嘗試用IIF替換CASE([USER_ID] ='ALL',0,1), – Satish

+0

我懷疑此答案在當時不起作用,因爲Access無法處理沒有表的查詢。訣竅是創建一個使用DUAL表,因爲訪問沒有內置。 – Newd

相關問題