2014-01-15 2 views
0

기본적으로 팀 구성원 이름이 드롭 다운 상자에 자동으로 채워 지도록 시도됩니다. 팀 구성원이 제거되고 드롭 다운이 자동으로 조정 됨으로써 향후에이 방법이 사용됩니다. 이것은 단순한 부분입니다. 어려운 부분은 드롭 다운 상자에 "모두"표시해야한다는 것입니다. 이 일을 가능케하는 방법을 찾지 못하는 것 같아서, 그래서 나는 어떤 생각을 찾고 있거나, 불가능하다고 말하는 누군가를 찾고 있습니다.Access에서 SQL 쿼리에 문자열을 연결하는 방법은 무엇입니까?

는이 시점에서 그냥 '테이블/쿼리'에 드롭 다운 행 원본을 쿼리은 : UNION SELECT 또는 UNION ALL SELECT에 추가에서 나는 여러 가지 시도를했다

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

하지만 난에 볼 수 없습니다 SQL을 실행하면 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

이제 이것이입니다. 드롭 다운을 클릭하면 "쿼리 입력에 적어도 하나의 테이블 또는 쿼리가 있어야합니다"라는 액세스 오류가 발생합니다. 나는 기술적으로 '속임수'를 쓸 수 있었고 간단히 가짜 사용자 인 '모두'를 만들었지 만, 나는 데이터베이스를 muddying하는 것을 정말로 싫어했습니다. 나는 이것을 정확하게하는 방법이있는 것처럼 느낍니다. – Newd

+0

콤보 상자의 소스 (쿼리)는 무엇입니까? –

+0

콤보 상자를 만들 때 마법사를 실행 한 후 위의 글에서 "WHERE [Active] = True"라는 질문과 정확히 동일한 쿼리가 생성되었으므로 문제가 해결 되었습니까? – Newd

2

이보십시오. 그러면 상단에 ALL이 표시되고 나머지는 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

이 액세스를 실행하려고 시도하는 동안 쿼리 표현식에 구문 오류 (누락 연산자)가 표시됩니다. CASE WHEN [USER_ID] = ' 모두 '그 다음 0 ELSE 1 END'. " – Newd

+0

내 잘못 SQL 서버에 대한 쿼리를 썼습니다. IIF ([USER_ID] = 'ALL', 0, 1)로 CASE를 바꾸어보십시오. – Satish

+0

Access는 테이블이없는 쿼리를 처리 할 수 ​​없으므로이 응답이 작동하지 않는 것으로 생각됩니다. 트릭은 액세스가 내장되어 있지 않으므로 DUAL 테이블을 사용하는 것입니다. – Newd

관련 문제