2016-03-21 7 views
1

Я был бы очень благодарен, если кто-то решит мою проблему. Я новичок в работе с Ms Access, и я по-прежнему получаю опыт по его базовой функциональности.Лучшая практика для работы с длинными текстами в ms-access

У меня есть таблица MyItems. 2 его полей: ItemCode и ItemName. ItemName - очень длинный текст (тип Memo). У меня также есть запрос и форма со многими полями. Источник записи формы также состоит из многих полей. Все эти вещи (связанные с 1 полем) имеют одинаковые или похожие имена, поэтому я не могу отличить их достаточно хорошо.

Что я хочу, когда я устанавливаю значение ItemCode (в не связанном Combobox или Listbox с именем ItemCode) значение ItemName, которое будет отображаться в элементе управления - возможно, TextBox.

Я могу показать его значение в ListBox (по sql-запросу в его источнике строки), у меня нет проблем с этим, у меня нет проблем с управлением событиями, но текст очень длинный и разрезан. Я понял, что, к сожалению, ListBoxes не имеют многострочного свойства. Поэтому, возможно, наиболее подходящим для управления является TextBox. И, возможно, наиболее подходящим способом отображения значения является использование функции DLookUp в источнике управления TextBox. Но в этом море предметов с похожими или одинаковыми именами я просто не могу справиться с его синтаксисом, я пытался снова и снова в течение очень долгого времени. Поэтому у меня есть 2 вопроса:

  1. являются контроль TextBox и функция DLookUp в источнике управления лучший способ извлечь длинные тексты из таблицы без привязки или есть более подходящие средства управления (которые работают непосредственно с SQL запросом) ?

  2. Каков правильный синтаксис DLookUp? - где именно есть '', "", [], .Value, =, &, где я должен писать путь к таблице или форме и где это было бы ошибкой? Если я просто напишу [ItemCode], с чем он связан, - источник записи формы, таблицу, элемент управления формой или что-нибудь еще? Я был бы признателен, если кто-то напишет правильный синтаксис для моего дела или если он разделяет ссылку с большим количеством примеров для использования DLookUp. Те, что я нашел, не удовлетворили меня.

ответ

0
  1. Либо связанное контроль, или несвязанного один. Если unbound, вам нужно загрузить текст с кодом VBA или DLookup в источнике управления. Других вариантов нет.
    Лично я предпочел бы использовать событие AfterUpdateItemCode, и позвоните по телефону DLookup, но это вопрос предпочтения.

  2. 2.

Это не так уж сложно. У вас в основном есть элементы SELECT, FROM, WHERE SQL-запроса в 3 аргументах. [] необходимы для всех идентификаторов, содержащих пробелы или другие специальные символы, и при обращении к элементам управления формой.

=DLookup("ItemName", "[my Table]", "ItemCode = '" & [ItemCode] & "'") 

одиночные кавычки '' необходимы, если ItemCode это текст, не тогда, когда это число.

Вы также можете использовать двойные кавычки с двойным экранированием (escaped), но это гораздо менее читаемо.

=DLookup("ItemName", "[my Table]", "ItemCode = """ & [ItemCode] & """") 

Откуда: [ItemCode]?

  • Access сначала ищет управления на форме с именем ItemCode.
  • Если его нет, он ищет поле ItemCode в форме RecordSource.

Это единственные способы, которыми можно оценить [ItemCode]. Чтобы избежать путаницы, рекомендуется назначать связанные элементы управления с тем же именем, что и их исходное поле.

Синтаксис выше действителен только в том случае, если все находится в одной форме. Если [ItemCode] находится в другой форме, или вы обратитесь к нему с запросом, вы используете

=DLookup("ItemName", "[my Table]", "ItemCode = '" & Forms![my Form]![ItemCode] & "'") 

Для более сложных случаев с подформ см Refer to Form and Subform properties and controls

И использовать его в VBA (в ItemCode_AfterUpdate):

Me!ItemName = DLookup("ItemName", "[my Table]", "ItemCode = '" & Me![ItemCode] & "'") 
+0

спасибо! Теперь все гораздо понятнее и понятнее. Код работал. Я не пробовал с "" ". Однако одна вещь, которую я должен исправить, возможно, из-за версии ms-access, моих настроек по умолчанию или с использованием режима vba/design - разделителем в функции является «;» - not "," – Peter

+0

@Peter: Да, например. в немецком доступе разделитель аргументов; а не при использовании функций в формах или запросах. Однако не в VBA. – Andre

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

  • Нет связанных вопросов^_^