MS Access: разделение имени и фамилии на отдельные поля

У меня есть поле с тысячами записей. В этих записях куча имен.

Проблема в том, что и имя, и фамилия указаны вместе (а не в двух разных полях). Как бы я их разделил. Формат прямо сейчас для имен John Smith

FirstName: Left([PlayerName],InStr([PlayerName]," ")-1)

Я пробовал это, но это не сработало. Он только что вернул #Func! для каждой записи в моем поле запроса FirstName.

Любая помощь будет оценена по достоинству. Спасибо.


person Nick T    schedule 15.10.2017    source источник
comment
Ник, ты вводишь это в конструктор запросов? Я вставляю ваше выражение в построитель запросов, и он отлично работает. Или вы строите этот запрос в коде VBA? Как точно вы его используете?   -  person xpofer    schedule 16.10.2017
comment
Да, я использовал построитель запросов. Как мне его использовать. Я выбираю поле и столбец в первом столбце. Во втором столбце мне просто скопировать и вставить это напротив строки «поле»?   -  person Nick T    schedule 16.10.2017
comment
Этот запрос должен работать сам по себе в построителе запросов. Другими словами, если у вас есть отображаемая таблица (таблица, содержащая [PlayerName]), вставьте свое выражение в Field: в первом столбце. Это должно быть все, что вам нужно. Посмотрите, работает ли он с только этим. Для проверки в представлении SQL это должно выглядеть так: SELECT Left([FullName],InStr([FullName]," ")-1) AS FirstName FROM T_Crewmembers;   -  person xpofer    schedule 16.10.2017


Ответы (1)


Я думаю, что есть проблема с данными в вашей исходной таблице, например: может быть пробел перед "Джон" в "Джон Смит" ("John Smith").

Хороший способ проверить это использовать функцию замены.

SELECT Replace([PlayerName]," ","-") as [TestName]
FROM YourTableName;

Если перед вашим именем стоит тире. Это проблема.

Вы также можете попробовать проверить функцию, которую пытаетесь использовать. instr([Start],[String1],[String2]) может потребоваться поместить 1 в часть «[Start]» функции.

В основном ваша новая функция будет выглядеть следующим образом:

FirstName: Left([PlayerName],instr(1,[PlayerName]," ")-1)

Дайте мне знать, если какое-либо из этих решений не работает, и я буду копать дальше.

person Chris    schedule 18.10.2017