Форми Access 2010: пряме введення зовнішнього ключа в текстове поле


0

У формі, яку я створюю для бази даних MS Access 2010, одне з полів являє собою зовнішній ключ. Я хотів би, щоб це поле відображалося у вигляді текстового поля, а не як комбо або списку, як це звичайно для зовнішніх ключів (головна причина полягає в тому, що списки стануть занадто довгими і незручними для використання, і я хотів би мати користувачі вводять ключ безпосередньо). Однак, я не можу змусити його працювати, щоб я міг безпосередньо ввести зовнішній ключ у цьому текстовому полі. Замість того, щоб взяти зовнішній ключ, який я ввів, і після посилання на існуючий кортеж в іншому відношенні, Access завжди, здається, намагається створити новий tuple в іншому відношенні, що, звичайно, не відбувається, оскільки кортеж з ідентичним ключем вже існує (тобто той, який я спробував посилати).

Простіше кажучи, проблема у мене така: у мене є ряд з ID 100 в таблиці A . Я хочу створити новий рядок у таблиці B , із зовнішнім ключем 100, який використовується для позначення цього рядка таблиці A . Співвідношення таблиць правильно налаштовано в Access. Якщо я редагую таблицю B у вигляді таблиці, я можу безпосередньо ввести зовнішній ключ 100, і все працює так, як я хочу. Однак, якщо я роблю те ж саме на формі Access скаржиться на дублікат ключа, тому що замість простого зберігання зовнішнього ключа 100 в таблиці B , вона також намагається створити цілком новий рядок з ідентифікатором, що повторюється зараз, 100 у таблиці A . Я сподіваюся, що це більш-менш зрозуміло.

Я спробував оголосити поле зовнішнього ключа в таблиці B полем комбінованого пошуку, але якщо я також не змінюю поле форми з тексту на комбо-поле, проблема залишається. Google також змусив мене спробувати вказати наступне як джерело даних для текстового поля зовнішнього ключа у формі:

=DlookUp("[ID]", "[TableA]", "[ID]=" & Forms![Form2]![txtID1])

але я тільки колись отримую синтаксичну помилку з цього. Крім того, файли довідки Access охоплюють лише DlookUp функція до версії 2007 - чи можливо, що ця функція більше не доступна в Access 2010?

Як я можу дозволити користувачам вводити зовнішній ключ безпосередньо в текстове поле форми, без доступу Access намагається створити новий рядок у вказаній таблиці? Чи буде джерельний код даних вище вирішити мою проблему, якщо я можу змусити його працювати?


Мені здається, що ваш джерело запису для форми вказує на таблицю А, коли він повинен використовувати таблицю В
wbeard52

Дякуємо за пропозицію. Я просто пішов перевірити, але джерело запису форми правильно встановлено у відношенні B.
Daniel Saner

У яку таблицю ви намагаєтеся додати дані? Це таблиця А або таблиця Б?
wbeard52

Таблиця B. Я хотів би, щоб новий кортеж у B посилався на існуючий кортеж в A через зовнішній ключ. Як сказано в питанні, це працює, якщо я вводжу зовнішній ключ безпосередньо в табличному перегляді B, але не якщо вводити його в тому ж полі, використовуючи текстове поле на формі.
Daniel Saner

Відповіді:


1

В порядку. Я розумію, що ви зараз намагаєтеся зробити. Вам доступні два варіанти, залежно від того, що ви хочете зробити.

Варіант 1: Я думаю, що це більш елегантне рішення. Створіть запит, який об'єднує дві таблиці разом. Якщо це дозволено, новий запит буде редагувати, і ви можете витягнути інформацію, яку ви шукаєте в таблиці А, і розмістити безпосередньо в текстовому полі. Перегляньте цей веб-сайт, щоб визначити, чому ваш новий запит може бути прочитаний. http://allenbrowne.com/ser-61.html

Варіант 2: Продовжуйте використовувати комбіноване поле у ​​формі та створіть зображення, яке маскує стрілку вниз у полі зі списком.


Варіант 1 - це хороше рішення. Я до сих пір вважаю, що має бути можливим зробити текстове поле форми таким, як клітинка у вигляді таблиці, але я можу використовувати цей метод для розміщення кінцевих користувачів. Дякую!
Daniel Saner
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.