2014-11-03 1 views
0

Я работаю в проекте в MS ACCESS 2010, где у меня есть существующие таблицы, позволяет брать сведения о сотрудниках, и мне нужно извлечь каждую строку основанный на поле first_name сотрудника, а затем создайте другую таблицу для каждого из них. Например, если первое имя является Джоном, тогда я должен получить все записи из таблицы сведений о сотрудниках, где первое имя - это John, и сохранить все эти строки в новом таблицу, т.е. новую таблицу_John и т. д. Для этого я создал новую таблицу только с уникальными записями первого поля имени и затем запустить следующий код, но я получаю время выполнения ошибки 3067: Входной запрос должен содержать, по меньшей мере, одну таблицу или запросКак извлечь уникальные записи (строки) из таблицы в MS ACCESS и сохранить их в разных таблицах

Private Sub cmdRemoveDuplicates_Click() 
Dim db As Database 
Dim rst As Recordset 
Dim rst1 As Recordset 
Dim tbl As Table 

Set db = CurrentDb 
Set rst = db.OpenRecordset("tblDetails", dbOpenDynaset, dbSeeChanges) 
'Make new table with unique records from first name field 
CurrentDb.Execute "SELECT distinct first_name INTO [unique_records] from tblDetails;" 

Set rst1 = db.OpenRecordset("unique_records", dbOpenDynaset, dbSeeChanges) 
rst1.Requery 
Do Until rst1.EOF 

CurrentDb.Execute "SELECT tblDetails.* INTO tblNew" & rst1!first_name & _ 
" FROM unique_records LEFT JOIN tblDetails ON unique_records.first_name = tblDetails.first_name" & _ 
" WHERE (((tblDetails.first_name)='" & rst1!first_name & "'));" 



rst1.MoveNext 

Loop 
rst1.Close 
rst.Close 
db.Close 
Set rst1 = Nothing 
Set rst = Nothing 
Set db = Nothing 

End Sub 

ответ

0

Я предполагаю, что вы получаете пробел или недопустимый символ там. Добавьте [] вокруг имени таблицы, и если вам не нужны ведущие/обучающие пространства, тогда TRIM их.

CurrentDb.Execute "SELECT tblDetails.* INTO [tblNew" & rst1!first_name & _ 
"] FROM unique_records LEFT JOIN tblDetails ON unique_records.first_name = tblDetails.first_name" & _ 
" WHERE (((tblDetails.first_name)='" & rst1!first_name & "'));" 

Если вы все еще получаете сообщение об ошибке, задать строку в ВЫПОЛНИТЬ строковой переменной, и вставить его в MS Access и посмотреть, что он говорит. Иногда проблема очевидна при просмотре фактического SQL.

+0

Код работал в excel 2010 и ранее я работал в excel 2013, так что это может быть проблема совместимости, но код, о котором я говорил выше, в моей проблеме работал наконец. –

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