2016-08-01 3 views
1

Я работаю в Microsoft Access 2010, и у меня есть таблица и столбец [tblData]! [Associate Name] с данными, отформатированными как Smith, John (123456). Очевидно, что это показывает фамилию, имя и идентификатор сотрудника (который может варьироваться от 5 до 6 цифр). Моя проблема в том, что мне нужно извлечь идентификатор сотрудника из этой строки, и я изо всех сил стараюсь использовать правильную комбинацию Left, Right, Mid с функцией InStr.Строка Извлечение между двумя символами

+1

Почему вы хранения данных, как это вообще? Это по существу расчетный столбец, который является плохим дизайном. –

+0

К сожалению, это не мои данные. Я просто попросил манипулировать им lol –

ответ

4

Используйте InStr(), чтобы найти положение персонажа (.

Следующее использование Mid() извлечь подстроку, начиная один символ после (

И тогда Val() даст вам ряд из оставшихся цифр; он игнорирует что-либо после последней цифры.

Если вы хотите получить результат как строку вместо номера, вы можете использовать CStr() для ее преобразования.

Вот пример из Немедленное окна:

Associate_Name = "Smith, John (123456)" 
? InStr(1, Associate_Name, "(") 
13 
? Mid(Associate_Name, InStr(1, Associate_Name, "(")) 
(123456) 
? Mid(Associate_Name, InStr(1, Associate_Name, "(") + 1) 
123456) 
? Val(Mid(Associate_Name, InStr(1, Associate_Name, "(") + 1)) 
123456 
? CStr(Val(Mid(Associate_Name, InStr(1, Associate_Name, "(") + 1))) 
123456 
+0

Также посмотрите, будет ли [OnlyDigits()] (http://stackoverflow.com/a/12570564/77335) полезна для вашей ситуации. – HansUp

+0

Ох, хорошо, что так много значит, что происходит через этот процесс. Спасибо за ваше время! –

+0

Да, я думал, что пример кода объяснит это лучше, чем мои слова. :-) Пожалуйста. – HansUp

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