Доброго. Коллега, ну все ж просто. Смотрите, искать по фамилии не очень разумно, искать надо по Id.
Значит, что делаем. Делаем источником данных для комбика запрос. Я буду писать как привык, а вы сообразите под ваши реалии переделать. Однако рекомендую таблицы делать с префиксом tbl_ и юзать именно английские названия - пригодится.
Select Id_Staff, StaffName from tbl_Staff -- вот тут мы с вами получили Id сотрудника и его фамилию
Теперь комбик делаем с двумя колонками, вот так: 0;3 - тогда id сотрудника будет скрыто и ничем не отличаться от привычного комбика - кроме того, что значения в нем будут ограничены списком.
Едем дальше. У вас должна быть связь между таблицами, я это делаю промежуточной таблицей tbl_StaffPosition.
Есть у вас такая таблица? Задавая вопрос, очень неплохо прилагать к нему структуру хотя бы в виде скрина.
В ней три Id -
Id_StaffPosition - первичный ключ
Id_Staff - ссылка на сотрудника
Id_Position - ссылка на должность.
DataPositionStart -- начало работы в должности, недопустим Null
DataPositionFinish -- окончание работы в должности, допустим Null
IsWorker -- признак, что он работает сейчас. И этот признак у вас должен быть уникальным индексом с Id_Position вместе, исходя из: один сотрудник не может занимать сразу две должности.
Далее вы делаете запрос вида:
select p.PositionName from tbl_Position p -- вот это название должности
join tbl_StaffPosition sp on p.Id_Position = sp.Id_Position -- это линк с таблицей должностей.
where sp.Id_Staff = cmbStaff.Column(0) -- значение из комбобокса.
А уже результат подставляете в ваш текстбокс.
Если не сделаете отдельную таблицу со временем в должности - наступите на грабли. Грабли такие:
сейчас он шеф транспортного отдела, а завтра его перевели в старшие дворники. Если у вас его должность будет тупо обновлена в таблице - то все ранее подписанные документы будут от старшего дворника.