Приложению microsoft access не удалось удалить следующее число записей
По поводу удаления дублей - можно попытаться упорядочить (при помощи того же SQL) записи по полям, по которым требуется уникальность, и пробежаться по результату в VBA, сравнивая значения у этих полей у текущей записи со значениями предыдущей записи (их в конце каждого прохода цикла нужно сохранить в переменные, а перед циклом проиницилизировать значениями, которых точно нет в таблице - может значения -1 подойдут). Если значение совпадает с предыдущей - удаляем запись. НО: 1) не уверен, что это будет быстрее работать, чем запрос, приведенный выше; 2) не знаю как написать такое на VBA-Access (я с Access'ом вообще слабо знаком).
Можно еще попробовать, если на таблицу никто не ссылается, через другую таблицу. Сделать
(DISTINCT выбирает записи уникально). Затем убрать все в исходной таблице, и перенести в нее значения из Table2. Тоже, правда не уверен, что быстрее будет - но здесь шансов поболее, что все же пошустрее отработает. Потрясающе! Предложенный вами код сделал всё за 30 секунд. На выполнение прошлого запроса ушло 1,5 часа. Спасибо Вам большое, теперь всё легко сделаю!Доброе время суток!
Вот столкнулся с похожей задачей. Отличия в моём случае таковы, что уникальность определяется не всеми полями, а некоторыми.
Попытаюсь объяснить подробнее.
Имеется таблица, содержащая 6 полей - field1..field6
Необходимо удалить повторы, которые определяются полями 2,3 и 5. Остальные поля несущественны для отбора, но должны присутствовать в получаемой таблице.
Т.е. если поля 2,3,5 совпадают, то мы считаем эту запись "повтором", и неважно, какие значения в остальных полях.
Делаю так:
INSERT INTO Table2
SELECT DISTINCT field2, field3, field5
FROM Table1
Затем очищаю Table1:
DELETE * FROM Table1
Копирую отобранные записи обратно:
INSERT INTO Table1 SELECT * FROM Table2
В результате получаю Table1 с уникальными записями, но поля 1,4 и 6 пустые.
Собственно вопрос: как добиться заполнения этих полей, чтобы они не влияли на результаты отбора, а просто копировались?
Запросы на удаление записей позволяют отобрать требуемые записи и удалить их за один прием. Принцип создания такого запроса аналогичен созданию запроса на обновление, однако, удаляя записи из связанных таблиц, необходимо помнить о том, что при этом не должна нарушаться целостность данных.
Если две таблицы связаны отношением "один-ко-многим", нельзя удалять записи из таблицы "один" если в таблице "многие" присутствуют соответствующие им записи. Сначала должны быть удалены записи в таблице "многие" и только потом — соответствующие им записи в таблице "один". Для того чтобы упростить этот процесс, Access позволяет при определении связей между таблицами установить флажок каскадное удаление связанных записей (Cascade Delete Related Records). Такой флажок установлен, например, для связи таблиц "Заказы" (Orders) и "Заказано" (Order Details). Действительно, если требуется удалить из базы данных какой-то заказ, должны быть удалены не только запись об этом заказе в таблице "Заказы", но ч все позиции данного заказа в таблице "Заказано".
Для создания запроса на удаления мы воспользуемся уже имеющимся запросом на добавление записей "Копирование заказов".
- Откройте этот запрос в режиме Конструктора.
- Чтобы преобразовать запрос на добавление в запрос на удаление записей, выберите команду Запрос, Удаление (Query, Delete Query). В бланке запроса появится строка Удаление (Delete) (рис. 8.11). В первом столбце строки Удаление (Delete) показывается значение Из (From), которое указывает, что будут удаляться записи из таблицы "Заказы". Во втором столбце строки Удаление (Delete) вы видите значение Условие (Where), что указывает на использование этого столбца для определения критерия отбора удаляемых записей.
Рис. 8.11. Запрос на удаление записей из таблицы "Заказы"
Рис. 8.12. Запрос на удаление
Для того чтобы выполнялась автоматическая проверка целостности данных, не забудьте для всех связей в базе данных установить флажок Обеспечение целостности данных (Enforce Referential Integrity).
— самые простые и самые опасные из всех типов запросов на изменение. Запрос на удаление действует во многом так же, как запрос на выборку: вы задаете ряд условий отбора, и затем программа Access находит соответствующие записи в таблице. Но запросы на удаление не просто отображают записи, а удаляют их из вашей БД.
Дважды подумайте, прежде чем удалять что бы то ни было. Старая информация вам может понадобиться для отчетов или анализа. В разд. "Редактирование таблицы" главы 1 объясняется, почему.
незаменимы при одновременном удалении большого количества записей после завершения перемещения их в другую таблицу. В примере с запросом на добавление, описанном ранее в этой главе, вам, возможно, понадобится способ удаления исходных записей после копирования их в новую таблицу. Запрос на удаление отлично подходит для этого.
Для создания запроса на удаление выполните следующие действия.
1. Создайте новый запрос (Создание > Другие > Конструктор запросов (Create > Other > Query Design)).
2. В появившемся диалоговом окне Добавление таблицы выберите таблицу, содержащую записи, которые вы хотите удалить. Затем щелкните мышью кнопку Закрыть для закрытия окна.
3. Измените тип вашего запроса на запрос на удаление, выбрав Работа с запросами | Конструктор > Тип запроса > Тип запроса: удаление (Query Tools | Design > Query Type > Delete).
В списке свойств полей исчезнут строки Сортировка и Вывод на экран и появится поле Удаление (Delete).
4. Добавьте поля, которые вы хотите использовать для отбора, и задайте условия отбора.
Ваши условия отбора определяют, какие записи удаляются, поэтому задавайте их очень аккуратно. Если вы не включите никаких условий отбора, Access удалит все записи при выполнении вашего запроса.
5. Добавьте любые другие поля, с помощью которых вы хотите проверить при предварительном просмотре на листе данных правильность отбора записей.
Очень важно убедиться в том, что вы удаляете только те записи, которые хотели удалить, У запросов на удаление есть чудесное свойство, которое поможет вам идентифицировать каждую запись, прежде чем вы выполните реальную операцию удаления. Для его применения щелкните дважды кнопкой мыши звездочку (*) в списке полей таблицы. Значение в строке Удаление автоматически изменится на Из (From), означающее, что данная информация не используется как часть условия отбора — напротив, она применяется для отображения списка предназначенных для удаления записей в ваших окнах предварительного просмотра.
На рис. 8.8 показан окончательный вариант запроса на удаление.
6. Щелкните правой кнопкой мыши заголовок вкладки и затем выберите Режим таблицы для того, чтобы увидеть строки, на которые повлияет ваш запрос.
Этот шаг позволит предварительно просмотреть строки, которые вы собираетесь удалить. Когда применяется звездочка (*), на экран выводится вся информация, относящаяся к каждой записи.
7. Если вы уверены, что получена корректная информация, вернитесь в Конструктор и затем выберите на ленте Работа с запросами | Конструктор > Результаты > Выполнить (Query Tools | Design > Results > Run) для удаления записей.
Рис. 8.8. Этот запрос удаляет записи со старыми заказами, первое поле в запросе определяет условие отбора (заказы с датами в поле DatePlaced (дата размещения) наступившими до 1900 г.). Второе поле (*) — сокращенная ссылка, позволяющая увидеть в окне предварительного просмотра все поля для того, чтобы можно было внимательно изучить данные, которые вы собираетесь удалять
Программа Access предупредит вас об изменении, которое собирается сделать. Щелкните мышью кнопку ОК, если хотите навсегда удалить записи.
8. Если хотите сохранить запрос, нажмите комбинацию клавиш <Ctrl>+<S> (или закройте вкладку запроса). Вы должны задать имя вашего запроса.
Если вы не собираетесь использовать запрос на удаление повторно, не сохраняйте его. Это опасное средство, которое не стоит оставлять под рукой.
Малоизвестная или недооцененная возможность. Скрытие запроса
Если вы хотите сохранить запрос под рукой для последующего использования, по считаете это слишком опасным, программа Access предоставляет более безопасную возможность. Вы можете скрыть запрос так, что он не будет выводиться в области переходов. В этом случае вы не воспользуетесь им по небрежности. Тот, кому он понадобится, вынужден будет отыскать его.
Для того чтобы скрыть запрос, щелкните его в области переходов правой кнопкой мыши и выберите команду Скрыть в данной группе (Hide in this Group). Запрос незаметно исчезнет из поля зрения.
Единственный способ вернуть в область переходов скрытый объект БД — щелкнуть правой кнопкой мыши заголовок области переходов (что-нибудь похожее на Все таблицы) и выбрать команду Параметры переходов (Navigation Options). Затем можно установить флажок Показывать скрытые объекты (Show Hidden Objects). Когда этот флажок установлен, скрытые объекты видны в области переходов, но они отображаются светло-серым цветом. Для возврата объекту нормального состояния видимости, щелкните его правой кнопкой мыши и выберите команду Показать в этой группе (Unhide in this Group).
Убедитесь в том, что вы не злоупотребили скрытием. Если это так, вы вынудите других включить режим Показывать скрытые объекты, который сделает видимыми и пригодными к использованию все запросы.
Если вас все еще беспокоит присутствие опасного запроса в вашей БД, рассмотрите возможность переноса запроса на изменение в совершенно отдельный файл БД и не разрешайте другим пользователям открывать этот файл. В разд. "Подготовка вашей базы данных" главы 18 приведена дополнительная информация о разделении БД на несколько файлов.
Используйте кнопку Advanced. на этапе спецификации поля импорта и попробуйте выполнить следующие настройки:
У меня нет точного формата даты на картинке выше, но это просто, чтобы показать, как импортировать эту конкретную дату.
Порядок даты должен быть YMD потому что в ваши даты у вас есть годы, следующие за первым, а затем месяц и дата.
Во время выполнения запроса на изменение Access различает четыре категории ошибок:
1. Дубликаты первичного ключа. Эта категория ошибок возникает при попытке добавления или изменения некоторой записи в таблице, приводя к появлению дублирующего значения первичного ключа или уникального индекса. Access не будет обновлять или добавлять записи, создающие такие значения. Во избежание конфликта перед попыткой добавить такие записи следует изменить значения первичного ключа в исходной таблице.
2. Ошибки преобразования данных. Ошибки этой категории возникают в тех случаях, когда вы вставляете данные в существующую таблицу и при этом оказывается, что тип данных полей-получателей не совпадает с типом данных полей-источников (и данные полей-источников не могут быть преобразованы к типу данных полей-получателей). Например, ошибка возникает, если вы добавляете текстовые значения к полю, содержащему целочисленные данные, а текстовое поле содержит буквенные символы или слишком длинную строку цифровых символов. В запросе на обновление ошибка преобразования может возникнуть, если вы используете формулу, которая пытается произвести вычисления над полем, содержащим буквы.
3. Заблокированные записи.Ошибки этой категории возникают, когда при выполнении запроса на удаление или на обновление вы используете таблицу, к которой имеют доступ другие пользователи сети. Access не может произвести обновление записей, которые в это время обновляются другими пользователями. Вам следует подождать некоторое время и попытаться снова выполнить обновление или удаление в тот момент, когда данные записи больше никто не использует.
4. Нарушение условий на значение.Если вставляемые илиобновляемыезаписи не удовлетворяют условию на значение для некоторогополядля таблицы, Access сообщает вам об ошибке и не производитвставки илиобновления подобных записей.
Контрольные вопросы
1. Что называется запросом?
2. Какими способами можно включить поля таблиц в запрос?
- Как задается условие отбора информации с помощью оператора Like?
- Каким образом можно добавить в бланк запроса строку Групповые операции.
- Какие типы запросов на изменение Вы знаете? Для чего они используются?
- Опишите основные проблемы и ошибки при модификации данных с помощью запросов на изменение.
Не нашли то, что искали? Воспользуйтесь поиском:
Отключите adBlock!
и обновите страницу (F5)
очень нужно
Нарушения ключа. Вы попытались добавить данные в одно или несколько полей, являющихся частью первичного ключа таблицы, такого как поле идентификатора. Проверьте в конструкторе конечной таблицы, выбрано ли для свойства первичного ключа (или другого индекса) Совпадения не допускаются значение Да. Затем убедитесь, что добавляемые данные не нарушают правила конечной таблицы.
Нарушения блокировки. Если конечная таблица открыта в режиме конструктора или открыта другим пользователем в сети, это может привести к блокировке записей и предотвратить выполнение запроса на добавление записей. Убедитесь, что никто не имеет доступа к базе данных.
В таком случае нельзя добавлять записи со значением менее 10.
Дополнительные сведения о создании запросов на добавление см. в статье Добавление записей в таблицу с помощью запроса на добавление.
Запрос на удаление записей удаляет группу записей из одной или нескольких таблиц. С помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри нее.
Создание запроса на удаление записей таблицы
1. Создать новый запрос, включив в него таблицы, из которых необходимо удалить записи.
2. В режиме Конструктор нажать на кнопку Тип запроса и выбрать команду Удаление.
3. Для таблиц, из которых нужно удалить записи, переместить символа " * " из списка полей таблицы в бланк запроса в строку Поле.
В строке Удаление появляется при этом текст Из.
4. Переместить мышью в бланк запроса поля, для которых устанавливается условие отбора.
В строке Удаление в этих полях появляются текст Условие.
5. Ввести условия отбора в строку Условие отбора для полей, перемещенных в бланк запроса.
6. Для предварительного просмотра удаляемых записей нажать кнопку Вид на панели инструментов.
7. Для удаления записей нажать кнопку Запуск на панели инструментов.
Готовые курсовые и контрольные работы по СУБД MS Access:
Ключевые слова: база данных access; бд access; субд access; базы данных access; access пример; программирование access; готовая база данных; создание база данных; база данных СУБД; access курсовая; база данных пример; программа access; access описание; access реферат; access запросы; access примеры; скачать бд access; объекты access; бд в access; скачать субд access; база данных ms access; субд access реферат; субд ms access; преимущества access; базу данных; скачать базу данных на access; базы данных; реляционная база данных; системы управления базами данных; курсовая база данных; скачать базу данных; база данных access скачать; базы данных access скачать; реферат база данных; база запросов; учебная база данных; проектирование БД; данных; описание БД; субд реферат; создать БД; база данных по; использование БД; курсовая работа база данных; готовая; использование СУБД; таблица БД; база данных 2003 скачать; базу.
Поиск Яндекса по сайту
Для поиска базы данных access введите слово, например, "сотрудники" и нажмите кнопку
Читайте также: