2012-12-18 2 views
2

나는 휴가 시간을 직원이 획득, 사용 및 남겨 두는 쿼리를 사용합니다. 이후 나는 "Gain"에서 "Anniversary"를 찾으려면 ALike 문을 수정 한 다음 값을 반환하십시오. 이제 Iif에 대한 fail 문을 0으로 반환합니다. 다음은 SQL입니다.MS-Access 2003 SQL ALIKE 수정이 작동하지 않습니다.

SELECT 
     SchedulingLog.UserID, 
     SchedulingLog.Category, 
     Sum(IIf([CatDetail] ALike 'Anniversary*',[Value],0)) AS Gain, 
     Sum(IIf(CatDetail ALike '%Used',[Value],0)) AS Used, [Gain]+[Used] AS [Left] 
FROM SchedulingLog 
GROUP BY SchedulingLog.UserID, SchedulingLog.Category 
HAVING (((SchedulingLog.Category) Like "Vac*")); 
+1

표준 ANSI SQL 설정을 사용하여 MS Access에서만 작업하고 있습니다. 맞습니까? 그렇다면 Like와 같은 표준 와일드 카드를 사용하는 등의 일을 복잡하게 할 필요가 없습니다. – Fionnuala

+0

간단하고 효과적인 !!! 응답으로 제발 그 상태! –

답변

1

그래서

WHERE FieldName Like 'Something*' 

는 것이 올바른 것입니다, 것입니까? 그렇다면, 비슷하게 상황을 복잡하게 만들 필요가 없습니다. 그냥 Like와 표준 와일드 카드 *를 사용하십시오.

1

몇 가지. 나는 당신이 'Anniversary %'와 'Vac %'를 원한다고 생각합니다. 비슷한 기능과 유사한 기능을 사용하는 것이 좋습니다. 액세스가 ADO 연결을 통해 비슷하게 지원된다는 것을 읽었지 만 찾을 수있는 것으로 문서화되어 있지 않습니다.

CatDetail 양식 소스 테이블에서 'AnniversaryXXXXX'에 데이터가 포함되어 있는지 확인 열이 항상 '기념'

2

을 시작하지 않는 경우, 당신은 '% 주년 기념 %'로 수정해야 할 수 있습니다 마찬가지로 Jet의 기본값 (*) 대신 ANSI 와일드 카드 (%)를 사용합니다. 당신은 표준 ANSI의 SQL 설정을 사용하여 MS Access에서 순수하게 작업

WHERE FieldName ALike 'Something%'