Мне нужно импортировать «контакты» в мою базу данных из нескольких внешних источников.
Некоторые «контакты» могут уже существовать, поэтому мне нужны только «новые» данные.
Я написал код записи обновления, однако он перезапишет все данные, что приведет к нарушению целостности таблицы, поскольку старые данные могут содержать некоторые допустимые значения.
Я пытался использовать запрос на обновление / добавление, однако это только перезаписало значения исходного поля, а не ОБНОВЛЕНО, ЕСЛИ СТАРОЕ ЗНАЧЕНИЕ БЫЛО НЕДОСТАТОЧНО / ЛОЖНО. Проблема заключается в том, что он будет применять / удалять флаги профиля, которые приводят к переписке и использованию данных (неправильное обновление = потенциальное нарушение GDPR).
Я не могу программировать на SQL, я понимаю, как работают функции и что они делают, но не знаю, как скомпилировать / в каком порядке (пока), следовательно, пока использую VBA.
Dim myR As Recordset
Dim myR2 As Recordset
Set myR = CurrentDb.OpenRecordset("Staging - Import", dbOpenDynaset)
Set myR2 = CurrentDb.OpenRecordset("Contacts", dbOpenDynaset)
Do Until myR.EOF = True
myR2.FindFirst ("Email = '" & myR![Email] & "'")
If myR2.NoMatch = True Then
myR2.AddNew
myR2![Email] = myR![Email]
myR2![First Name] = myR![First Name]
myR2![Last Name] = myR![Last Name]
myR2![Position] = myR![Position]
myR2![Company] = myR![Company]
myR2![Industry] = myR![Industry]
myR2![Size] = myR![Size]
myR2![Website] = myR![Website]
myR2![Location] = myR![Location]
myR2![Office Number] = myR![Office Number]
myR2![Mobile Number] = myR![Mobile Number]
myR2![Source] = myR![Source]
myR2![CFO-DEL] = myR![CFO-DEL]
myR2![CFO-SPON] = myR![CFO-SPON]
myR2![DP-DEL] = myR![DP-DEL]
myR2![DP-SPON] = myR![DP-SPON]
myR2![HR-DEL] = myR![HR-DEL]
myR2![HR-SPON] = myR![HR-SPON]
myR2![CIO-DEL] = myR![CIO-DEL]
myR2![CIO-SPON] = myR![CIO-SPON]
myR2![CMO-DEL] = myR![CMO-DEL]
myR2![CMO-SPON] = myR![CMO-SPON]
myR2![CISO-DEL] = myR![CISO-DEL]
myR2![CISO-SPON] = myR![CISO-SPON]
myR2![NIS] = myR![NIS]
myR2![Supress] = myR![Surpress]
myR2.Update
Else
myR2.Edit
myR2![First Name] = myR![First Name]
myR2![Last Name] = myR![Last Name]
myR2![Position] = myR![Position]
myR2![Company] = myR![Company]
myR2![Industry] = myR![Industry]
myR2![Size] = myR![Size]
myR2![Website] = myR![Website]
myR2![Location] = myR![Location]
myR2![Office Number] = myR![Office Number]
myR2![Mobile Number] = myR![Mobile Number]
myR2![Source] = myR![Source]
myR2![CFO-DEL] = myR![CFO-DEL]
myR2![CFO-SPON] = myR![CFO-SPON]
myR2![DP-DEL] = myR![DP-DEL]
myR2![DP-SPON] = myR![DP-SPON]
myR2![HR-DEL] = myR![HR-DEL]
myR2![HR-SPON] = myR![HR-SPON]
myR2![CIO-DEL] = myR![CIO-DEL]
myR2![CIO-SPON] = myR![CIO-SPON]
myR2![CMO-DEL] = myR![CMO-DEL]
myR2![CMO-SPON] = myR![CMO-SPON]
myR2![CISO-DEL] = myR![CISO-DEL]
myR2![CISO-SPON] = myR![CISO-SPON]
myR2![NIS] = myR![NIS]
myR2![Supress] = myR![Surpress]
myR2.Update
End If
myR.MoveNext
Loop
Set myR = Nothing
End Sub
Есть ли более простой способ написать это или я должен использовать код
myR2.FindFirst ("Email = '" & myR![Email] & "'")
If myR2.NoMatch = True Then
Для каждого значения эффективно создавать 15-20 подпрограмм и макрос для запуска всего вместе?
Я пробовал несколько вариантов кода, пытаясь включить elseIf, isNull () и isFalse (), однако они всегда не компилировались или обновление не было завершено / записи были изменены.
Мне нужен код для следующего:
Проверьте наличие контакта в таблице контактов
Если контакт не существует, добавить все данные
Если контакт существует, добавьте новые данные или обновите поля «да / нет» с «нет» до «да»
ПРИМЕЧАНИЕ: В настоящее время таблица «контактов» пуста, так как нам нужно создать новые / объединить дубликаты, прежде чем данные будут импортированы в таблицу «контактов».
Итак, контакты в данный момент:
Email Name Surname
- - -
- - -
- - -
- - -
Постановка - импорт в настоящее время:
Email Name Surname
b@b.c Brad
t@b.c Tony Tiger
b@b.c B Pitt
r@b.c Ryan Reynolds
После завершения контакты должны выглядеть следующим образом:
Email Name Surname
t@b.c Tony Tiger
b@b.c Brad Pitt
r@b.c Ryan Reynolds