2009-06-01 2 views
1

Как связать текстовое поле с полем, которое не относится к таблице «Record Source» формы, через представление дизайна?

Пример: У меня есть «Order.cust_id» (Record Source = Order), и я хочу отобразить «Customers.name». Я считаю, что это тривиально, но у меня нет опыта работы с MS Access. Я попытался использовать текстовое поле «Свойство Control Source», но не повезло.Как я могу отобразить значение * * поля * в текстовом поле?

ответ

1

Вы можете использовать DLookUp в качестве источника управления текстового поля:

=DlookUp("[Name]", "Customer", "ID=" & Cust_ID) 

Синтаксис: Что посмотреть, имя таблицы, где оператор

ГДЕ заявление должно следовать правилам Jet SQL, что означает, что вы должны использовать разделители, если поле представляет собой текст или формат даты.

Обратите внимание, что имя - очень плохое имя, для чего угодно. Я предлагаю вам переименовать поле сразу, пока ситуация не ухудшится.

Полезно знать ошибки.

+0

Можете ли вы обновить код с помощью Customer.id, Customer.name, Order.Ключевые слова cust_id. VB не является моей сильной стороной, и я получаю сообщение об ошибке :) –

+0

Выполнено с некоторыми примечаниями. DlookUp довольно стандартен для форм, и вы получите информацию об этом в справке MS. Конструктор выражений также может помочь со встроенными функциями. – Fionnuala

+0

Вот и все. Благодаря! –

0

Вы можете создать новый вид (например, OrdersAndCustomerNames), выбрать все столбцы, которые вы хотите использовать в форме, то вместо того, чтобы использовать таблицу Order как Record Source, вы бы просто переключиться на OrdersAndCustomerNames. Вы говорите, что у вас нет опыта работы с MS Access, поэтому я предполагаю, что вы не строите ничего огромного и чрезмерно сложного, поэтому я бы сделал это так. Я совершенно уверен, что это можно сделать более элегантно, но это будет продолжаться.

+0

Спасибо, но мне нужно больше * control *, потому что я буду использовать от 4 до 5 таблиц. –

3

Одним из способов было бы преобразовать текстовое поле в поле со списком. Затем установите источник строки для включения cust_Id и Customer.Name из таблицы клиентов. Пример утверждения SQL

Select Cust_ID, Name From Customer 
Order By Name; 

Установив количество столбцов в 2 и ширину столбцов; первый столбец равен нулю (т. е. «0; 6»), тогда внешний ключ будет скрыт от пользователя и будет отображаться имя клиента.

Обратите внимание, что этот метод заставляет вас ограничивать список, установленным в true.

Также вы получаете раскрывающийся список, который может быть не таким, каким вы хотите.

+0

Я хочу отображать поля формы из разных таблиц, и у меня есть внешние идентификаторы в одной таблице. Я собираюсь использовать текстовые поля и комбо. Я не забочусь, должен ли я использовать VBA для его выполнения. –

+0

OK Я рад помочь. Обратите внимание, что вы можете установить это в представлении дизайна таблицы - тогда, когда вы создадите форму, по умолчанию будет поле со списком. Но недостатком этого является то, что вы скрываете значения внешнего ключа от себя. – Mark3308

+0

Плохой совет, Mark3308 - поля поиска в дизайне таблицы ужасны, потому что они вызывают так много проблем (вы думаете, что можете запросить отображаемое значение, но вы можете запрашивать только значение, стоящее за ним, и вы не можете видеть что). Комбинированные поля представляют собой объект пользовательского интерфейса, а таблицы и запросы - это объекты данных, а не объекты пользовательского интерфейса (даже если их можно использовать как пользовательский интерфейс). Комбо-боксы принадлежат формам и нигде больше. –

Смежные вопросы