Можно ли использовать запрос на обновление в MS Access для автоматического заполнения поля «Уникальный идентификатор» символами из других полей?

Можно ли использовать запрос на обновление в MS Access для автоматического заполнения поля «Уникальный идентификатор» символами из других полей? В частности, у меня есть уникальное поле идентификатора, которое состоит из (1) последнего инициала имени (2) первого инициала фамилии (3) мм/дд даты рождения и (4) пола (М/Ж). Таким образом, Джон Смит, родившийся 17 февраля, будет NS0217M. Можно ли вытащить отдельные символы из существующего поля и таким образом объединить их в другое поле? К сожалению, я работаю с Access 2003. Хотя я бы предпочел создать новую систему идентификации, она уже существует, и мне нужно адаптировать базу данных, которую я создаю, для ее соответствия.


person Adam Wade    schedule 19.02.2013    source источник
comment
Где вы пытаетесь создать этот уникальный идентификатор? Решение пользователя 2063626 будет работать, если вы хотите, чтобы оно отображалось только в формах и отчетах, но не сохранялось в собственном поле базы данных. Если вам нужно сохранить его в поле, вам придется использовать VBA или запрос на обновление, чтобы создать его.   -  person Tom Collins    schedule 19.02.2013
comment
В настоящее время я использую форму, содержащую эти поля, для заполнения базы данных, поэтому мне нужно сохранить создаваемое поле ClientID. Я новичок в VBA, но использовал его несколько раз, мне не удалось найти пример кода, который позволил бы мне извлекать отдельные символы из нескольких полей. Из приведенных ниже примеров похоже, что есть способ сделать это, но я не понимаю, с чего начать. Спасибо всем за помощь.   -  person Adam Wade    schedule 20.02.2013


Ответы (2)


Вот что вы будете использовать. Вам нужно будет отобразить поле UID в форме, но пометить его как заблокированное, чтобы вы случайно не написали в нем.
Кроме того, здесь нет проверки ошибок, поэтому вы получите ошибки, если какое-либо из полей пусты.

Private Sub Form_BeforeUpdate(Cancel As Integer)
   Me.UID = Right(fname, 1) & Left(lname, 1) & Format(CDate(DOB), "mmdd") & Gender
End Sub
person Tom Collins    schedule 20.02.2013

выберите ЛЕВЫЙ (Имя, 1) + ПРАВЫЙ (Фамилия, 1) + ФОРМАТ (дата рождения, 'ММДД') + пол в качестве уникального идентификатора

person Community    schedule 19.02.2013
comment
Кроме того, в VBA правильным символом конкатенации является &. + обычно работает, но не всегда. И функция Format требует двойных кавычек. - person Tom Collins; 20.02.2013