2008-09-16 5 views
0

Microsoft Access에서 특정 필드에서만 검색 할 수있는 데이터베이스를 만들고 양식에서 몇 (필수) 텍스트 상자 및 확인란 만 제어하면 쉽게 사용할 수 있습니다 - 어려운 쿼리가 없습니까?특정 필드에서만 검색 할 수있는 Microsoft Access에서 데이터베이스를 만드는 방법은 무엇입니까?

예 : 양식에 여러 개의 텍스트 상자와 여러 개의 해당 확인란이 있으며 텍스트 상자 옆에있는 확인란이 선택되어 있으면 텍스트 상자가 사용 가능하므로 입력 한 내용으로 검색 할 수 있습니다 텍스트 상자

(사실 이미! 단지 난 그냥 세계의 코딩 지식을 증가 답을 알고 질문에 유래 위험을, 재생이 알고 약 5 분에서 오는 대답) 질문 들어

+0

좋은 콘텐츠. 이미 해결 한 문제에 대한 해결책을 게시하는 데는 아무런 문제가 없습니다. – Mendelt

답변

0

이것은 실제로 상당히 큰 주제이며 모든 종류의 잠재적 인 문제를 안고 있습니다. Access에서 중급에서 고급까지의 책에는 대부분 "폼 별 쿼리"를 다루는 섹션이 있습니다.이 폼에는 사용자가 특정 조건을 선택할 수있는 언 바운드 폼이 있으며, 실행될 때 즉석 SQL을 작성하여 해당 폼을 반환합니다. 일치하는 데이터.

SQL의 FROM 절이 WHERE 절에서 쿼리 된 테이블에 의존하기 때문에 플랫 단일 테이블 데이터 구조 이외의 다른 작업에서는이 작업이 간단하지 않습니다.

내가 고객을 위해 만든 응용 프로그램에서 일부 QBF 양식의 몇 가지 예 :

  1. Querying 4 underlying tables
  2. Querying a flat single table
  3. Querying 3 underlying tables
  4. Querying 6 underlying tables
  5. Querying 2 underlying tables

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

프로세스의 가장 복잡한 부분은 적절한 조인 유형이 있어야하며 SELECT 절 또는 WHERE 절에있는 테이블 만 포함해야하므로 FROM 절을 작성하는 것입니다. 다른 것을 포함 시키면 쿼리가 많이 느려질 수 있습니다 (특히 외부 조인이있는 경우).

그러나 이것은 큰 주제이며 마술 총알 해결책이 없습니다. 대신 특정 응용 프로그램마다 이와 같은 것을 만들어야합니다. 개발자가 완전히 명확하고 이해할 수있는 것은 종종 최종 사용자에게 미스터리하는 경우가 많으므로 사용자와 철저히 테스트하는 것도 중요합니다.

하지만 QBF에만 적용되는 것은 아닙니다.

+0

그래, 이건 꽤 큰 질문이라고 생각해. 그래도 양식에서 데이터를 효율적으로 (또는 올바르게) 가져 오는 쿼리를 얻을 수 없으므로 모든 코드가 포함 된 하단의 솔루션을 참조하십시오. 기본적인 아이디어가 좋다. 예가 더 좋습니다. –

+0

오, 그래도, 좋은 대답. –

+0

불행히도 복잡한 주제이기 때문에 공유 할 수있는 예제가 없으며 모든 솔루션은 공유 권한이없는 클라이언트 프로젝트에만 해당됩니다. 당신은 쿼리를 언급 - 나는 결코 이것에 대한 저장된 쿼리를 사용하지 않을 것이지만, 대신에 비행 중 SQL을 작성합니다. –

0

그 모호한, 내가 대답 할 수있는 모든 MS 액세스를 열고 몇 번 마우스를 클릭하십시오. 두 번째 생각에

:
사용은이

+0

나는 의미가 없다. 자신의 질문에 답변하는 것도 좋습니다. 나는 그 질문이 막연한 대답을 얻기 위해 모호한 방법이라고 생각합니다. 그리고 대답은 다음과 같이 요약 할 수 있습니다 : "OpenForm 메서드에 WhereCondition 인수 사용" - 실생활이 아니며 그냥 1과 0입니다. (spaf) – BIBD

0

이 시작, 당신은 등 그런 식으로 다른 메뉴를 폼을 표시하고 중지해야 "WhereCondition"는 "하는 OpenForm"메소드의 인수 사용자는 오직 본다 귀하의 제한된 기능과 테이블을 직접 열 수 없습니다

이 책의 발췌 Real World Microsoft Access Database Protection and Security, 계몽해야합니다.

+0

꽤 재미있어서 일상적인 사용자가 데이터를 편집하지 못하게합니다. 하지만 비밀로 남겨 둘 필요가있는 데이터를 실제로는 신뢰하지 않을 것입니다. 프로그램을 작성하고 .Net에서 액세스 데이터베이스에 연결하고 쿼리를 열지 않고 쿼리를 실행할 수 있습니다. – Kibbee

1

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

, I 입력 "*cable*의"*cable*가 "자동 MyForm.filter 속성에 추가 된"PODescription 같은 IS WHERE "....

주문서 설명 열의 상단의"필터 "의

여러 가지 기본 테이블로 구성된 필터링 레코드 원본이 매우 까다로울 수 있다는 것을 반대하는 사람들이 있습니다. 그래서 가장 좋은 해결책은 저에게 항상 따라야한다는 것입니다 (평이합니다!) 플랫 테이블이나 뷰 ("SELECT" Access의 쿼리)를 폼의 레코드 원본으로 사용하면 훨씬 쉽습니다.

일단 이것이 확실하다면 자동화 할 작은 모듈을 생각할 수도 있습니다 양식에 "필터"컨트롤 및 관련 절차 추가. 진정한 사용자 친화적 인 클라이언트 인터페이스를 제공 할 수 있습니다.

0

기능이 매우 제한적이거나 특수한 경우 SQL 데이터베이스가 과도하게 과장 될 수 있습니다. 데이터의 모든 조합을 메모리에 로컬로 캐시하고 양식의 확인란에 따라 데이터를 표시합니다. 이전에는 테이블에서 사용 권한을 취소하고 규정 된 방식으로 데이터를 쿼리 한 VIEW/PROC에서만 액세스 권한을 부여 할 수 있었지만 MS Access 2007에서 보안이 제거되어 사용자가 간단한 앱을 우회하는 것을 막을 수있게되었습니다. , 엑셀, 그리고 그들이 원하는 어떤 식 으로든 데이터를 쿼리 ... 그렇다면 기업 데이터베이스의 요점이 아닌가? ;-)