Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > архивация данных


Автор: mari5 11.4.2007, 09:32
у меня таблица абонентов, хочу сделать архив, таким образом, что бы нажатием на кнопки, запись переходила бы в архив - таблицу. 
етот код не работает, где ошибка? прошу....

Код

Private Sub Toggle8_Click()
Dim sql As String
Dim sq As String
Me!ID.Requery

sql = "INSERT INTO archive_abonent ( ID, name, surname, telephone ) " & _
          "SELECT abonent.ID, abonent.name, abonent.surname, abonent.telephone " & _
          "FROM abonent WHERE (((abonent.ID) = [me]![ID]))"

    DoCmd.RunSQL sql
sq = "Delete abonent.ID, abonent.name, abonent.surname, abonent.telephone " & _
          "FROM abonent" & _
          "WHERE (((abonent.ID)=[me]![ID]))"

    DoCmd.RunSQL sq
End Sub


Автор: Rodman 11.4.2007, 09:42
Цитата(mari5 @  11.4.2007,  08:32 Найти цитируемый пост)
етот код не работает, где ошибка? 

что то выдает или просто проходит в пустую?

Автор: Akina 11.4.2007, 11:26
Зачем делать отдельную таблицу для архива? Введите просто поле Archived As Iinteger Default 0 Indiced и для вывода записи в архив ставьте там 1.

Соответственно все запросы надставляете дополнительным фильтром "... AND (Archived <> " & str(ViewType) & ")". При этом Вы сможете. не меняя текстов запросов, просто изменяя значение одной переменной ViewType, переключаться с работы с основной БД (ViewType=1) на работу с архивом (ViewType=0) или со всеми записями (ViewType=2).

Автор: mari5 11.4.2007, 18:11
Акина,этот подход для меня не понятно, можеш послать пример...

Автор: Akina 11.4.2007, 18:36
Пример.

Было:

Структура
ID
Name
xDate

Запрос
"Select * From MyTable Where (xDate < (Now() - 30));"

Стало:
Структура
ID
Name
xDate
Archived

Запрос
"Select * From MyTable Where (xDate < (Now() - 30)) AND (Archived <> " & str(ViewType) & ");"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)