Мне нужно извлечь имя из полного имени во время добавления

#sql #excel #ms-access #vba

#sql #excel #ms-access #vba

Вопрос:

Итак, у меня есть несколько электронных таблиц Excel с разными заголовками столбцов и разным форматированием. Мне нужно, чтобы все они были импортированы в базу данных Access, с которой я работал.

Поэтому я, по сути, импортировал их все как отдельные таблицы, а затем объединил, добавив их все, в одну конечную таблицу. При этом я столкнулся с проблемой. Мне нужно извлечь имя каждого клиента, но в одной электронной таблице FULL_NAME — единственный столбец, из которого я могу его извлечь.

Проблема в том, что … формат похож на «John Michael Doe, MD»…это головная боль, когда мне нужно только вытащить Джона.

Я попробовал следующее выражение в качестве поля добавления

 Left([strName],InStr([strName],” “)-1)
  

Это вроде как сработало. В итоге произошло то, что он присвоил КАЖДОЕ имя КАЖДОЙ существующей записи. Итак, у меня уже есть 492 записи в таблице, к которой я добавлял, и в этой было 200 полей, так что в итоге у меня получилось почти 100 000 записей. НЕ ВЕСЕЛО.

Есть ли способ обойти это?

Редактировать: добавить запрос из комментария:

 INSERT INTO Consolidated_Data ( [Physician_First Name], [Physician _Last Name], Degree ) 
SELECT Left([Full Name],InStr([Full Name],' ')-1) AS PullFirst, 
       Source_OddName.[Last Name], Source_OddName.Degree 
FROM Consolidated_Data, Source_OddName
  

Комментарии:

1. Пожалуйста, добавьте полный SQL запроса добавления (?), Который вы пытались задать в свой вопрос.

2. Я использовал мастер проектирования с минимальным или полным отсутствием собственного SQL.

3. Это не проблема, просто переключите запрос на представление SQL и скопируйте / вставьте текст SQL в свой вопрос.

4. ВСТАВИТЬ В Consolidated_Data ( [Physician_First Name], [Physician _Last Name], Степень ) ВЫБЕРИТЕ Left([Полное имя],InStr([Полное имя],’ ‘) -1) КАК PullFirst, Source_OddName . [Фамилия], Source_OddName . Степень ОТ Consolidated_Data, Source_OddName;

Ответ №1:

Возможно, простое решение — просто импортировать его как обычно … затем выполнить ОБНОВЛЕНИЕ, чтобы получить имя из уже существующего столбца полного имени. Оператор добавления или ВСТАВКИ должен был сработать, поэтому что-то происходит для создания дополнительных записей. Но если вы не хотите выяснять, почему заполняются эти дополнительные записи, или просто спешите, тогда запрос на ОБНОВЛЕНИЕ должен делать то, что вам нужно.

Ответ №2:

Я предполагаю, что, поскольку некоторые таблицы имели разделенное имя, в вашей консолидированной итоговой таблице есть поле имени. Если вы можете вернуться к своей таблице с 492 записями, просто создайте запрос на обновление, в котором столбец FirstName обновляется до выражения, которое вы использовали выше, при этом strName заменяется именем столбца FullName. Если вы хотите быть немного более сложным и не связываться со строками, у которых уже есть правильное имя, просто добавьте критерий в запрос, где столбец FirstName равен «Is Null».