Подскажите, пожалуйста, есть ли возможность при вставке пула строк из Excel в таблицу Access отвергать дубликаты записей, но при этом записывать уникальные? Я при создании таблицы делаю уникальными несколько полей, но при дублировании система просто возвращает исключение и не копирует ничего. Прочитал, что в MySql есть такой параметр как Ignore Duplicate Key (Ignore_Dup_Key), но в VBA он у меня на сработал.
Как в SQL-запросе игнорить дубли?
10.10.2019 22:28:13
|
|
|
|
10.10.2019 22:47:24
|
|
|
|
10.10.2019 23:51:32
doober, у меня обратное действия, я же вставляю, а не извлекаю )
|
|
|
|
11.10.2019 06:57:35
Доброе время суток
|
|||
|
|
11.10.2019 07:57:57
Андрей VG, доброе утро! Я, наверное, не совсем точно написал, я пытаюсь сделать, чтобы игнорировались дубли вносимых значений по отношению к уже имеющимся в базе данным. Попробую предложенный вариант, но по моим ощущениям, он уберет дубли из той таблицы, которую я вставляю (т.е. дубли из источника), но наличие строк в базе, дублирщих те, которые я вставляю, все равно приведут к возникновению исключения.
Изменено: |
|
|
|
11.10.2019 08:02:09
Ну так тогда запрос и должен брать две таблицы 1 и 2 и разницу вставлять в одну из них.
По вопросам из тем форума, личку не читаю.
|
|||
|
|
11.10.2019 08:04:13
Доброе время суток
Ungrateful, вы не стесняйтесь продемонстрировать структуру данных и описание первичного ключа. Решается, в общем-то банальным подзапросом, мышкоклацательного решения только тут нет. |
|||
|
|
11.10.2019 09:36:17
Андрей VG, таблица примерно такая:
и вставлять тогда как-то так, проще варианта нет?
Изменено: |
|||||
|
|
11.10.2019 10:07:56
как вариант в Access сделать ключ по полям в таблице, куда вставляют данные, которые будут уникальные, и тогда он не даст вставлять повторы.
Изменено: |
|
|
|
11.10.2019 10:24:55
aibolit, так он конкретно не дает, вставку всей таблицы отвергает, а не только дубликатов. Я вставляю не по строкам, а сразу большим пулом.
|
|
|
|
11.10.2019 16:31:56
|
|||
|
|
11.10.2019 16:37:38
Андрей VG, значит я не так вас понял про структуру. Думал нужен запрос сосструктурой, который я написал. Сейчас сделаю файлы
|
|
|
|
11.10.2019 17:32:56
Андрей VG, сделал файлик, только не добавляется Access, много весит даже пустой. Если не сложно, создайте файл Db.accdb
В нем два листа и две кнопки: - один лист "База" с данными, которые нужно первоначально добавить в базу - второй лист "Новые записи" с данными, часть из которых совпадает с данными на первом листе (выделил желтым цветом). Оставил строку с одним из вариантов, как пытался добавить записи, отсутствующие в таблице. Изучил книгу по SQL (Мартин Грабер), но там есть далеко не все, нет специфики VBA. Можете подсказать еще какую-то литературу? Заранее спасибо! |
|
|
|
11.10.2019 18:02:49
Изменено: |
|||
|
|
11.10.2019 20:40:12
Андрей Лящук, круто, спасибо! Буду теперь ваш запрос раскодировать, джоинами еще не пользовался )
|
|
|
|
15.10.2019 16:39:09
В отдельно взятой таблице запрос работал замечательно, но когда попытался применить в деле, возникла ошибка. Прочитал про JOIN, поэкспериментировал, но все равно не могу понять, почему перестало работать. Есть подозрение, что из-за добавления пустых столбцов, которые я заполняю уже другим запросом прямо в Access.
Изменил пример, под этот случай. |
|
|
|
16.10.2019 13:11:03
Подумал, что может не самая хорошая идея писать в ON так много связей, попробовал так, но тоже безрезультатно:
Все, в итоге этим методом получилось, но пришлось добавить много полей. И очень долго обрабатывается запрос - это основной минус. Лучше уж пусть отвергает попытку добавить такую таблицу.
Изменено: |
||||
|
|
|||