동일한 폼의 다른 컨트롤 (ctrl1)을 기반으로하는 선택 쿼리로 채워지는 양식의 목록 상자가 있습니다. 그것은 CTRL1의 갱신에 트리거 :SELECT의 조인이 null을 반환하는 경우에만 모든 레코드를 반환하는 방법
이 또한table3.column3
필드에 값을 가지고
table3.column1
의 값과 일치하는 형태로 매개 변수를 기초로 작동
PARAMETERS [Ctrl1 input] Long;
SELECT table1.column1, table1.column2
FROM (table1 INNER JOIN table2 ON table1.column2 = table2.column1) INNER JOIN table3 ON table2.column2 = table3.column3
WHERE (((table3.column1)=[Ctrl1 input]))
ORDER BY table1.column2;
. 현재 폼의 선택 항목에 일치하는 값이 table3.column3
이 아니면 목록 상자가 비어 있습니다. 이 상황에서 모든 조인과 제약없이 SELECT table1.column1, table1.column2
의 전체 목록을 반환하고 싶습니다. (목록은 매우 긴, 그래서 꼭 필요한 경우에만 전체 일을 사용하고 싶습니다.) SQL에서
, case
기능은, 내가 원하는이 비슷한 달성 할 것으로 보인다 :
PARAMETERS [Ctrl1 input] Long;
CASE WHEN (SELECT table3.column3 WHERE (table3.column2 = [Ctrl1 Input]) IS NOT NULL)
THEN
SELECT table1.column1, table1.column2
FROM (table1 INNER JOIN table2 ON table1.column2 = table2.column1) INNER JOIN table3 ON table2.column2 = table3.column3
ELSE
SELECT table1.column1, table1.column2
을
그러나 Access 쿼리에서 case
을 사용할 수 없습니다. 그것은 또한 작동하는 것처럼
IIf
문은
PARAMETERS [Ctrl1 input] Long;
IIf(
(SELECT table3.column3 WHERE (table3.column1 = [Ctrl1 input]) IS NOT NULL),
(SELECT table1.column1, table1.column2 FROM (table1 INNER JOIN table2 ON table1.column2 = table2.column1) INNER JOIN table3 ON table2.column2 = table3.column3),
(SELECT table1.column1, table1.column2)
)
, 보이지만 액세스 그것이이 SELECT
, INSERT
는, DELETE
는 등 또한, SELECT IIf
테스트, 내가 할 것으로 예상 말하는, 그것을 수락하지 않습니다 그것은 단지 하나의 가치를 되돌릴 수 있다는 것을 말하며, 그것은 나를 위해 작동하지 않습니다.
안녕하세요. VBA에서 case
과 IIf
을 모두 사용하고 THAT를 쿼리에 사용하는 기사를 보았습니다. 그러나 필자는 자신의 상황을 어떻게 변환 할 것인지 이해할 수있는 명확한 예제를 찾을 수 없었습니다. 모듈을 호출 한 다음 호출하십시오. 나는 VBA와 함께 일하지 않고 간신히 SQL로 작업한다. VBA에 대해 알아보기 전에 알아 두어야 할 사항은 다음과 같습니다.
- VBA를 사용하여 내가 원하는 것을 성취 할 수 있습니까?
case
,IIf
또는 다른 접근 방식에 대한 인수가 있습니까?- 함수에서 값으로 무엇을 전달합니까? 양식에있는 ctrl1의 데이터?
- 반환 할 함수를 묻는 질문과 대답은 무엇입니까? 이 기능을
myfunction = the code that produces the dataset I need
으로 설정하면됩니까?
나는 함수에서 출력 형식을 이해하는 한 쿼리에서 함수를 사용하는 방법을 이해한다고 생각합니다.
통찰력과 정보에 미리 감사드립니다.
참고 : Access 2016을 사용하고 있지만 Google 자체 GIS 소프트웨어와 호환되는 파일이기 때문에 파일 자체는 2002-2003 형식입니다.
IIF()는 잘못된 위치/순서에서 올바르게 수행됩니다. if 문은 전에 선택하지 않은 WHERE 조건에서 사용됩니다. 하지만 그 문제에 대해 SQL을 호출하기 전에 VBA에서도 테스트 할 수 있습니다. 솔직히 말해서 게시 한 코드가 너무 혼란 스럽습니다/저조한 형식으로 만들어서 더 해독하고 해독하고 싶지만 적어도 이것이 내 문제 1 개임을 알 수 있습니다. – Matt
@Matt 나는 결과에 따라 'FROM'이 어떻게 변하는 지 어떻게 말합니까? 'FROM'이 그 전에 발생한다면'IIf'의 혼란에 사과드립니다. 내가 말했듯이, 나는 그 언어를 모른다. 일반 필드 및 테이블 이름을 사용하면 더 좋을까요? 각 함수에 대한 구문을 조회 할 때 예제는 매우 간단하며 일반적인 SQL 접근법을 알지 못하고 형식을 조정하는 방법을 알지 못합니다. – troubbble
솔직히 값을 테스트하고 쿼리 문자열을 설정 한 다음 원하는 문자열을 전달할 논리가있는 경우 VBA를 사용해야합니다. 당신은 SQL에서 할 수 있지만 당신은 옵션 테이블에 가입 왼쪽으로 누른 다음 JOIN에서 IF() 문을 사용하여 조건이 충족되거나 충족되지 않을 때를 설명하기 위해 WHERE를 사용합니다. – Matt