Вы просто ссылаетесь на таблицу, в которую хотите ВСТАВИТЬ.Что вам нужно, это путь к другой БД.Нужно объединить переменные.Вы не показываете объявление и установку переменных db
, tdf
, fld
, externalDB
.Нужно поменять местами If
и первые For
строки.Ваш INSERT SELECT не будет работать так, как вы думаете, если вы действительно не хотите, чтобы каждое поле было вставлено в свою запись.Обратите внимание:
For Each tdf In CurrentDb.TableDefs
If Not (tdf.Name Like "MSys*" Or tdf.Name Like "~*") Then
CurrentDb.Execute ("INSERT INTO [" & tdf.Name & "] SELECT * FROM [" & tdf.Name & _
"] IN 'other db path\filename.accdb' WHERE [Value] = '" & varPrimaryKey & "'")
End If
Next tdf
Однако поля автонумерации будут мешать этому простому INSERT SELECT.Кроме того, поля в обеих таблицах должны быть расположены в одинаковом порядке в дизайне таблицы.
Value
является зарезервированным словом и в действительности следует избегать использования зарезервированных слов в качестве имен для чего-либо.Если Value
является числовым типом данных, тогда исключите разделители апострофов.
Почему этот MsgBox?
Но тогда зачем все эти усилия, а не просто ссылки на бэкэнд-таблицы?