728x90
FileMaker의 ExecuteSQL() 함수는 SQL을 이용해 데이터를 조회할 수 있는 강력한 기능이지만, 특정 필드명 처리 문제로 인해 예상치 못한 오류가 발생할 수 있습니다. 이번 포스팅에서는 직접 겪은 오류와 해결 과정을 공유합니다.
🔍 문제 발생
다음과 같이 특정 _OrderPK 값과 productCode 값을 기준으로 totalPrice 필드를 조회하는 SQL 쿼리를 작성했습니다.
Let ( [
sql = "SELECT totalPrice FROM OrderItems
WHERE \"_OrderPK\" = ?
AND \"productCode\" = ?
ORDER BY totalPrice ASC" ;
priceList = ExecuteSQL ( sql ; ¶ ; "" ; Quote($$orderPK) ; $productCode )
] ;
priceList
)
그러나 실행해도 결과가 반환되지 않았고, 오류도 발생하지 않아 어디에서 문제가 생긴 건지 쉽게 찾을 수 없었습니다.
❌ 문제의 원인
여러 가지 시도를 해본 결과, 원인은 _OrderPK 필드명이었습니다. FileMaker의 ExecuteSQL()에서 언더스코어(_)로 시작하는 필드는 반드시 Quote()로 감싸야 한다는 점을 놓쳤던 것입니다.
잘못된 코드:
"SELECT totalPrice FROM OrderItems WHERE \"_OrderPK\" = ? AND \"productCode\" = ?"
위처럼 _OrderPK를 일반 필드처럼 사용하면 ExecuteSQL()에서 필드를 인식하지 못해 결과가 반환되지 않습니다.
✅ 해결 방법
필드명을 Quote()로 감싸주면 정상적으로 실행됩니다.
Let ( [
productID = OrderItems_Orders::productCode ;
sql = "SELECT totalPrice FROM OrderItems
WHERE " & Quote("_OrderPK") & " = ?
AND " & Quote("productCode") & " = ?
ORDER BY totalPrice ASC" ;
priceList = ExecuteSQL ( sql ; ¶ ; "" ; $$orderPK ; productID )
] ;
priceList
)
해결 과정 정리:
1. 쿼리 자체의 문법 오류 점검 → 오류 메시지가 없어 찾기 어려웠음.
2. 다른 필드로 테스트 진행 → _OrderPK를 OrderPK로 바꿔보니 정상 작동.
3. 언더스코어 필드 처리 방식 확인 → _OrderPK를 Quote()로 감싸야 한다는 점을 발견.
4. Quote() 적용 후 정상 실행 확인.
반응형
'프로그래밍 언어 > 파일메이커(FileMaker)' 카테고리의 다른 글
FileMaker Server 계정 및 비밀번호 문제 해결 가이드 (0) | 2025.01.26 |
---|---|
FileMaker Server 설치 및 기본 설정 가이드 (0) | 2025.01.25 |