2015-07-23 2 views
0

Я попытался найти здесь свой ответ, но мне не повезло. Я пробовал много вещей, чтобы заставить это работать, но не увенчались успехом, поэтому я подумал, что отправлю свой вопрос. Я могу повториться несколько раз, но я стараюсь быть как можно более конкретным/подробным.MS Access Forms: значения по умолчанию для управления и DLookup

У меня есть форму, которая имеет запрос append для передачи всех полей формы в таблицу. В этой форме у меня есть невидимый элемент управления (текстовое поле), который вытаскивает идентификатор входа в Windows пользователей и использует его как значение по умолчанию. У меня есть другое поле (текстовое поле) для полного имени пользователя.

Я выполнил запрос, чтобы вытащить данные сотрудника из моих таблиц, чтобы иметь идентификатор сотрудника (то же самое, что и идентификатор входа в Windows, имя и фамилия. Я также выполнил выражение, чтобы объединить два поля имени в один чтобы показать свое полное имя.

Что я пытался сделать, так это, чтобы, когда кто-то открывает форму, их полное имя уже загружено. Как я уже говорил выше, это предварительно загружено на основе по сравнению с идентификатором входа в Windows со своим идентификатором сотрудника, который у нас на записи, так как они одинаковые. Это, по сути, версия vlookup() Excel, которую я пытаюсь сделать. Я пробовал dlookup(), но не увенчался успехом .

В любом случае знаете ли, как определить значение по умолчанию для имени элемента управления сотрудника в форме, определяемое элементом управления идентификатором сотрудника, которое имеет значение по умолчанию, основанное на идентификаторе входа в окно пользователя?

Пример: Предположим, что у меня есть сотрудник по имени Фред Флинтстон. В базе данных есть таблица с полями для его имени и фамилии. Там также поле для его идентификатора сотрудника, которое является A111111.

При открытии формы есть невидимый элемент управления текстовыми полями, который имеет значение по умолчанию, полученное из идентификатора входа Windows, с которым сотрудник работал для входа на компьютер. Этот идентификатор входа в Windows является A111111, который совпадает с идентификатором сотрудника.

Создан запрос с полями для идентификатора сотрудника, имени, фамилии и выражения для объединения двух полей имени. Итак, первая строка будет: | A111111 | Фред | Флинстоун | Фред Флинтстон. Я не знаю, как сделать столы здесь, но не медведь со мной.

Возвращаясь к форме, есть поле для имени сотрудника. Как мне заставить его показать Фреда Флинтстоуна как значение по умолчанию при открытии формы?

Примечание: Поле имени сотрудника, в конечном счете, будет заблокировано, так что оно не может быть изменено сотрудником. Я не знаю, будет ли это иметь какое-то влияние, но я подумал, что я бы сказал об этом.

+0

вы можете разместить код, который вы в данный момент используете? Какая ошибка вы получаете сейчас? или что происходит, чего вы не ожидаете? Если вы делаете это через VBA, вам действительно не нужно скрывать текстовое поле. – Gene

ответ

0

В OnLoad случае вашей формы (действительно грубый код, потребуется некоторые настройки ..):

dim db as dao.database 
Dim rs as dao.recordset 
Dim username as string 
dim SQL as string 

username = Environ("USERNAME") 'There are better ways to get username, but this is just a quick example. 

SQL = "SELECT * FROM Your_Query WHERE username = '" & username & "'" 
set db = currentdb 
set rs = db.openrecordset(SQL,dbopensnapshot) 
if rs.recordcount > 0 
    rs.movefirst 
    me.UserNameField = rs!username 
else 
    msg "User Not Found" 
End If 

set rs = nothing 
set db = nothing 
Смежные вопросы