디자인보기를 통해 양식의 "레코드 원본"테이블에 속하지 않는 필드에 텍스트 상자를 바인딩하려면 어떻게합니까?
예 : "Order.cust_id"(레코드 원본 = 주문)이고 "Customers.name"을 표시하려고합니다. 나는 그것이 사소한 것이라고 생각하지만 나는 MS Access에 대한 경험이 없다. 난 텍스트 상자 "컨트롤 소스"속성을 사용하려고했지만 행운을 빕니다.텍스트 상자에 * foreign * 필드 값을 표시하려면 어떻게합니까?
답변
당신은 텍스트 상자의 컨트롤 원본으로하여 DLookup 사용할 수 있습니다
=DlookUp("[Name]", "Customer", "ID=" & Cust_ID)
구문 : 조회 할 무엇, 문
이 문은 제트 SQL에 대한 규칙을 따라야합니다 테이블 이름, 필드가 텍스트 또는 날짜 형식 인 경우 구분 기호를 사용해야합니다.
이름은 실제로 무엇이든 매우 나쁜 이름입니다. 일이 악화되기 직전에 이름을 바꿀 것을 제안합니다.
오류를 아는 것이 유용 할 수 있습니다.
새보기 (예 : OrdersAndCustomerNames
)를 만들고 양식에 사용하려는 모든 열을 선택한 다음 Order
테이블을 레코드 소스로 사용하는 대신 OrdersAndCustomerNames
으로 전환하면됩니다. MS Access에 대한 경험이 없으므로 거대하고 지나치게 복잡한 것을 만들지 않는다고 생각합니다. 그래서 이렇게 할 것입니다. 나는 그것이 더 우아하게하게 될 수 있다고 아주 확신한다. 그러나 이것은 지금 할 것이다.
감사하지만 4 ~ 5 개의 테이블을 사용하기 때문에 * 더 많은 컨트롤이 필요합니다. –
한 가지 방법은 텍스트 상자를 콤보 상자로 변환하는 것입니다. 그런 다음 customer 테이블의 cust_Id와 Customer.Name을 모두 포함하도록 행 소스를 설정하십시오. SQL 문 예제
Select Cust_ID, Name From Customer
Order By Name;
열 수를 2로 설정하고 열 너비를 0으로 설정하면, 첫 번째 열이 0 (즉, "0; 6")이면 외래 키가 사용자에게 표시되지 않고 고객 이름이 표시됩니다.
참고이 메서드는 목록에 대한 제한을 true로 설정해야합니다.
또한 원하는 결과가 아닌 드롭 다운 목록으로 끝납니다.
여러 테이블의 양식 필드에 표시하고 싶습니다. 하나의 테이블에 외부 ID가 있습니다. 나는 텍스트 상자와 콤보를 사용할 것이다. VBA를 사용해야 만 신경 쓰지 않아도됩니다. –
OK 기꺼이 도와 드리겠습니다. 테이블 디자인보기에서이를 설정할 수 있습니다. 그러면 폼을 만들 때 기본적으로 콤보 상자가됩니다. 그러나 이것의 단점은 외래 키 값을 숨기는 것입니다. – Mark3308
나쁜 조언, Mark3308 - 테이블 디자인의 조회 필드는 너무 많은 문제를 유발하기 때문에 끔찍합니다 (표시된 값을 쿼리 할 수 있다고 생각하지만 그 뒤에있는 값만 쿼리 할 수는 있습니다. 그). 콤보 상자는 UI 개체이며 테이블 및 쿼리는 UI 개체가 아닌 데이터 개체입니다 (UI로 인해 표시 될 수 있음). 콤보 상자는 양식에 속하고 다른 곳에는 없습니다. –
코드를 Customer.id, Customer.name, Order로 업데이트하십시오.cust_id 키워드. VB는 제 장점이 아니며 몇 가지 오류 메시지가 나타납니다 :) –
일부 메모가 있습니다. DlookUp은 양식에 대해 상당히 표준이며 MS 도움말에서 정보를 얻을 것입니다. 표현식 빌더는 내장 함수를 도울 수 있습니다. – Fionnuala
그게 전부입니다. 감사! –