문제

특정 필드로만 검색할 수 있고 양식의 몇 가지(필수) 텍스트 상자와 확인란으로만 제어하여 어려운 쿼리 없이 사용하기 쉬운 Microsoft Access의 데이터베이스를 어떻게 만들겠습니까?

예:양식에 여러 개의 텍스트 상자와 여러 개의 해당 확인란이 있고 텍스트 상자 옆의 확인란을 선택하면 텍스트 상자가 활성화되고 해당 텍스트 상자에 입력된 내용으로 검색할 수 있습니다.

(사실 저는 이미 이것을 알고 있습니다. 그냥 스택오버플로 위험을 겪고 있는 것뿐입니다. 여기서 질문을 합니다. 전 세계의 코딩 지식을 늘리기 위해 답을 알고 있습니다!답변은 약 5분 후에 옵니다)

도움이 되었습니까?

해결책

이것은 실제로 꽤 큰 주제이며 모든 종류의 잠재적인 문제로 가득 차 있습니다.Access에 관한 대부분의 중급 및 고급 서적에는 "양식별 쿼리"를 설명하는 일종의 섹션이 있습니다. 여기서는 사용자가 특정 기준을 선택할 수 있도록 하고 실행 시 즉시 SQL을 작성하여 반환하는 언바운드 양식이 있습니다. 일치하는 데이터.

단순 단일 테이블 데이터 구조를 제외한 모든 경우에는 SQL의 FROM 절이 WHERE 절에서 쿼리된 테이블에 종속되기 때문에 이는 사소한 작업이 아닙니다.

고객을 위해 만든 앱의 일부 QBF 양식에 대한 몇 가지 예는 다음과 같습니다.

  1. 4개의 기본 테이블 쿼리 중
  2. 플랫 단일 테이블 쿼리
  3. 3개의 기본 테이블 쿼리
  4. 6개의 기본 테이블 쿼리 중
  5. 2개의 기본 테이블 쿼리 중

첫 번째는 이 양식에서 선택한 기준을 반영하는 속성이 있고 FROM 및 WHERE 절을 작성하는 메서드가 있는 클래스 모듈에 의해 구동됩니다.이렇게 하면 다른 필드를 추가하는 것이 매우 쉽습니다(해당 필드가 이미 포함된 테이블 이외의 테이블에서 나오지 않는 한).

프로세스에서 가장 복잡한 부분은 FROM 절을 작성하는 것입니다. 적절한 조인 유형이 있어야 하고 SELECT 절이나 WHERE 절에 있는 테이블만 포함해야 하기 때문입니다.다른 항목을 포함하면 쿼리 속도가 많이 느려집니다(특히 외부 조인이 있는 경우).

그러나 이것은 큰 주제이고 마법의 총알 솔루션은 없습니다. 대신에 각 특정 애플리케이션에 대해 이와 같은 솔루션을 만들어야 합니다.또한 개발자인 여러분에게 완전히 명확하고 이해할 수 있는 내용이 최종 사용자에게는 너무나 낯설게 느껴지기 때문에 사용자를 대상으로 철저하게 테스트하는 것도 중요합니다.

하지만 이는 QBF에만 적용되지 않는 원칙입니다!

다른 팁

내 솔루션은 필터링할 수 있는 각 열(보통 모든 ...)에 대해 양식의 헤더 부분에 "필터" 컨트롤을 추가하는 것입니다.이러한 "필터" 컨트롤이 업데이트될 때마다 Access VBA에서 사용할 수 있는 "BuildCriteria" 기능을 사용하여 양식의 활성 필터를 업데이트하는 프로시저가 실행됩니다.

따라서 "를 입력하면*cable*구매 주문 설명 열 상단의 "필터"에 있는 "WHERE PODescription IS LIKE"*cable*"가 MyForm.filter 속성에 자동으로 추가됩니다....

일부에서는 여러 기본 테이블로 구성된 레코드 소스를 필터링하는 것이 매우 까다로울 수 있다고 반대합니다.좋아요.따라서 제가 보기에 가장 좋은 해결책은 항상 플랫 테이블이나 뷰(Access의 "SELECT" 쿼리)를 양식의 레코드 원본으로 사용하는 것입니다.이것은 당신의 삶을 훨씬 더 쉽게 만들어 줄 것입니다!

이를 확신하고 나면 "필터" 컨트롤 및 관련 절차를 양식에 자동으로 추가하는 작은 모듈을 생각해 볼 수도 있습니다.실제 사용자 친화적인 클라이언트 인터페이스를 위한 올바른 길을 걷게 될 것입니다.

시작 시 양식을 표시하고 다른 메뉴 등을 비활성화해야 합니다.이렇게 하면 사용자는 제한된 기능만 볼 수 있고 테이블 등을 직접 열 수는 없습니다.

이 책에서 발췌, 실제 Microsoft Access 데이터베이스 보호 및 보안, 계몽되어야합니다.

막연한 질문에 대해 제가 대답할 수 있는 것은 MS Access를 열고 마우스를 몇 번 클릭하는 것뿐입니다.

다시 생각해 보면:
"OpenForm" 메소드의 "WhereCondition" 인수를 사용하십시오.

기능이 매우 제한적이거나 전문화된 경우 SQL 데이터베이스는 어쨌든 과잉이 될 것입니다.데이터의 모든 조합을 메모리에 로컬로 캐시하고 양식의 확인란에 따라 하나를 표시합니다.이전에는 테이블에서 권한을 취소하고 규정된 방식으로 데이터를 쿼리하는 VIEW/PROC에만 권한을 부여할 수 있었지만 MS Access 2007에서는 보안이 제거되었으므로 이제 사용자가 간단한 앱을 우회하는 것을 막을 수 있습니다. , Excel 및 원하는 방식으로 데이터를 쿼리하는 것입니다. 하지만 이것이 엔터프라이즈 데이터베이스의 핵심이 아닙니까?;-)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top