2011-12-20 5 views
1

나는 2010 년사용하여 검색 매개 변수 2010

내가 인접 여부, 그들이 직면 어떤 방법으로 자신의 위치를 ​​포함 --- 도시에서 내 조직의 카탈로그 빈 벽을 할 수있는 데이터베이스를 구축하고 접근하고 있어요 많은 정보가 비어 있거나 점유되어 있습니다.이 정보는 WallsMaster라는 테이블에 저장됩니다.

이것은 내 검색어입니다. 내가 원하는

SELECT WallsMaster.StreetAddress, WallsMaster.Zip, WallsMaster.Direction, WallsMaster.LotInfo 

FROM WallsMaster 

WHERE 

(
((WallsMaster.Zip) Like "*" & [Forms]![Search_Form]![Zip_Search] 
Or 
(WallsMaster.Zip)="" 
Or 
(WallsMaster.Zip) Is Null) 

AND 

((WallsMaster.Direction) Like "*" & [Forms]![Search_Form]![Direction_Search] 
Or 
(WallsMaster.Direction)="" 
Or 
(WallsMaster.Direction) Is Null) 

AND 

((WallsMaster.LotInfo) Like "*" & [Forms]![Search_Form]![LotInfo_Search] 
Or 
(WallsMaster.LotInfo)="" 
Or 
(WallsMaster.LotInfo) Is Null) 
) 
; 

내가 우편의 값을 입력하지만 빈 다른 매개 변수를두고, (널 (null)/공백 포함) 모든 방향 & LotInfo 값이 우편에 대한 (아니다 nulls/blank Zip 값 포함). Direction을 입력하고 나머지는 공백으로두면 LotInfo에 대해 방향 (null/blank 방향 값 제외)에 대한 모든 Zip 및 LotInfo 값 (nulls/blanks 포함)을 원합니다.

여기에 공백으로 두었던 매개 변수의 nulls/blanks가 포함되어 있지만 필드의 nulls/blanks도 포함됩니다. 검색 매개 변수를 지정했습니다.

즉, 내가 우편 번호 19130를 검색하고 & LotInfo 빈 방향을 떠날 경우,이 얻을 :

Address, Zip, Direction, LotInfo 
123 Main St, 19130, South, Vacant 
789 Fake St, 19130, , 
321 K St,19130, East, Occupied 
  1. 가 어떻게 재 수

    Address,Zip,Direction,LotInfo 
    123 Main St, 19130, South, Vacant 
    456 Elm St, , North, Vacant 
    789 Fake St, 19130, , , 
    321 K St, 19130, East, Occupied 
    

    는 내가 원하는 것은이입니다 내가 원하는 결과를 내 SQL 스크립트 작성 하시겠습니까?

  2. 이 예제에서는 몇 가지 필드를 공유하고 있습니다. 내 실제 WallMaster 테이블에는 약 30 개의 필드와 수백 개의 레코드가 있으며 한 번에이 필드의 일부 또는 전부를 검색 할 수 있도록 검색 양식을 원합니다. 이 검색을 작성하는 가장 효율적인 방법입니까?

답변

0

두 번째 질문에 대해서는 필자가 생각한 값의 조합을 모두 필터링하기 위해 개인적으로 쿼리를 작성하지 않아도됩니다.

Here은 검색 양식을 구현하는 방법을 보여주는 Allen Browne의 훌륭한 예입니다. 저는 과거에 이것을 사용해 왔지만 훌륭하게 작동합니다. 그러나 Access 2003이 유일하게 사용 가능한 시대였습니다.

테이블에 필드를 추가해야하거나 비즈니스 규칙이 약간 변경되면이 솔루션은 곧 다루기 힘들어집니다.

대신 데이터 시트에 데이터를로드하고 Microsoft Access 2010에서 제공하는 자동 필터링을 활용하십시오.원하는 모든 조합으로 모든 열을 필터링 할 수 있으며 양식 데이터 소스가 올바르게 설정되어 있으면 표에 새 필드를 추가해도 작동합니다.

+0

감사합니다. Allen Brown의 방법을 살펴 보겠습니다. – maneesha

+0

또한 쿼리 결과를 기반으로하는 보고서가 있기 때문에 결과를 생성하는 쿼리를 사용하는 검색 폼을 설정하려고합니다. 그래서보고 싶은 화면상의 데이터 시트가 아닙니다. – maneesha

+1

폼과 동일한 필드 집합으로 보고서를 디자인 한 다음 동일한 Recordsource & Filter 속성을 보고서에 전달할 수 없습니까? –

1

""또는 Null과 같은 것으로 잘못 테스트했습니다. 그것에 대해 입력을 테스트하려고합니다.

SELECT WallsMaster.StreetAddress, WallsMaster.Zip, WallsMaster.Direction, WallsMaster.LotInfo 
FROM WallsMaster 

WHERE 

(

(WallsMaster.Zip) Like "*" & [Forms]![Search_Form]![Zip_Search] 

Or 

([Forms]![Search_Form]![Zip_Search] ="" 

Or 

[Forms]![Search_Form]![Zip_Search] Is Null)) 

AND 

((WallsMaster.Direction) Like "*" & [Forms]![Search_Form]![Direction_Search] 

Or 

([Forms]![Search_Form]![Direction_Search]="" 

Or 

[Forms]![Search_Form]![Direction_Search] Is Null) 

AND 

((WallsMaster.LotInfo) Like "*" & [Forms]![Search_Form]![LotInfo_Search] 

Or 

([Forms]![Search_Form]![LotInfo_Search]="" 

Or 

[Forms]![Search_Form]![LotInfo_Search] Is Null) 

) 
+0

감사합니다. 대괄호/괄호 묶음이 섞여서 편집을 제출했습니다.) 이제는 일반적인 아이디어를 얻었으므로 수십 개의 필드로이 작업을 수행하는보다 효율적인 방법을 찾고 있습니다 ... SQL 문에 30 개의 절을 쓰는 것은 실제로 의미가 없습니다. 고맙습니다! – maneesha

+0

아마도 VBA 코드에서 동적으로 SQL 문자열을 작성하는 것이 좋습니다. –

0

이 경로는 어떻게됩니까?

WHERE WallsMaster.Zip Like "*" & NZ([Forms]![Search_Form]![Zip_Search],"") 
AND (WallsMaster.Direction) Like "*" & NZ([Forms]![Search_Form]![Direction_Search],"") 
AND (WallsMaster.LotInfo) Like "*" & Nz([Forms]![Search_Form]![LotInfo_Search],"") 
+0

null/공백을 반환하지 않는 것 같습니다. – maneesha

관련 문제