Удалять тестовые данные можно и вручную – выбрал таблицу, выделил все строки и удалил. Но тут нужно помнить, в каких таблицах тестовые значения, а в каких нет. Например, справочники-классификаторы или настройки не нужно удалять. А также необходимо следить за порядком таблиц при удалении. Сначала выбираются подчиненные таблицы, затем главные. Иначе из-за соблюдения правил целостности данных ничего не удалится. Ну, и еще, если таблиц много, или приходится удалять тесты несколько раз, то это довольно утомительно. Рассмотрим, как быстро и просто сделать это программным путем.
Отладить метод желательно на копии. Или создать в базе копии таблиц во избежание потери данных.
Возьмем базу данных «Абитуриенты». Схема данных приведена на рисунке:
Создадим еще одну таблицу («ДляУдаления») с двумя полями: порядковым номером и названием таблицы.
Внесем в нее названия таблиц, из которых нужно удалить данные по порядку удаления, сначала таблицу «Абитуриенты», затем кафедры и специальности. Учебные заведения удалять не будем.
Переходим в редактор Visual Basic (Alt+F11) и создаем новый модуль или добавляем в ранее созданный (если такой есть), пишем в нем текст:
Сохраняем все, запускаем форму и нажимаем кнопку.
Но базой еще рано пользоваться. Данные на самом деле не удалены, а помечены на удаление. Поэтому размер базы большой, а счетчики (например, в ключевых полях) не обнулены. Если начать добавлять данные сейчас, то отсчет начнется с последнего введенного значения. Вот, например, код кафедры начинается с 10, а не с 1.
Чтобы удалить данные совсем, перейдем в меню «Файл», раздел сведения. Нажмем кнопку «Сжать и восстановить базу данных». После этого размер уменьшится, а счетчики обнулятся. Можно работать.
Отладить метод желательно на копии. Или создать в базе копии таблиц во избежание потери данных.
Возьмем базу данных «Абитуриенты». Схема данных приведена на рисунке:
Создадим еще одну таблицу («ДляУдаления») с двумя полями: порядковым номером и названием таблицы.
Внесем в нее названия таблиц, из которых нужно удалить данные по порядку удаления, сначала таблицу «Абитуриенты», затем кафедры и специальности. Учебные заведения удалять не будем.
Переходим в редактор Visual Basic (Alt+F11) и создаем новый модуль или добавляем в ранее созданный (если такой есть), пишем в нем текст:
Option Compare DatabaseЗапустить эту функцию можно из редактора, а можно создать форму. Создадим простую форму в конструкторе, добавим кнопку для запуска функции очистки. На первом шаге работы мастера после добавления кнопки нажимаем отмену. В свойствах кнопки изменяем ее подпись, а в событиях (Нажатие кнопки) пишем «=ClearData()» (без кавычек).
Option Explicit
Public Function ClearData()
'удаляем все данные из таблиц,
'указанных в таблице ДляУдаления
On Error GoTo HandleErr
'объявляем переменную - базу данных
Dim db As DAO.Database
'объявляем переменную - набор данных
Dim rs As DAO.Recordset
'текущая база данных
Set db = CurrentDb
'набор данных (рекордсет) - таблица ДляУдаления
Set rs = db.OpenRecordset("ДляУдаления", dbOpenSnapshot)
'перебор строк в набореЮ пока не достигнут конец
Do Until rs.EOF
'запрос - удалить все строки из указанной таблицы
db.Execute "DELETE * FROM " & rs("НазваниеТаблицы")
rs.MoveNext
Loop
'закрываем набор
rs.Close
Set rs = Nothing
MsgBox "Очистка данных выполнена", , "Удаление данных"
'возврат результата - истина
ClearData = True
ExitHere:
Exit Function
'обработка ошибок
HandleErr:
ClearData = False
MsgBox "Ошибка " & Err & ": " & Err.Description, , "Очистка данных Cleardata"
Resume ExitHere
End Function
Сохраняем все, запускаем форму и нажимаем кнопку.
Но базой еще рано пользоваться. Данные на самом деле не удалены, а помечены на удаление. Поэтому размер базы большой, а счетчики (например, в ключевых полях) не обнулены. Если начать добавлять данные сейчас, то отсчет начнется с последнего введенного значения. Вот, например, код кафедры начинается с 10, а не с 1.
Чтобы удалить данные совсем, перейдем в меню «Файл», раздел сведения. Нажмем кнопку «Сжать и восстановить базу данных». После этого размер уменьшится, а счетчики обнулятся. Можно работать.
