Консультация № 188606
07.01.2016, 10:46
0.00 руб.
0 17 0
Здравствуйте! У меня возникли сложности с таким вопросом:
как можно сделать архив в делфи то есть все данные которые уже простояли год автоматически вводились в архив и хранилась там. А база обновлялась.
Заранее спасибо

Обсуждение

давно
Посетитель
399390
30
07.01.2016, 11:30
общий
давно
Мастер-Эксперт
425
4118
07.01.2016, 14:19
общий
Адресаты:
Не менее интересно было бы узнать, что Вы подразумеваете под термином "архив".
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Посетитель
399390
30
09.01.2016, 10:38
общий
Ну архив это один раздел в меню в котором хранятся все прошлогодние и другие старые данные
давно
Мастер-Эксперт
425
4118
09.01.2016, 12:00
общий
09.01.2016, 12:10
Адресаты:
Цитата: arujan.nurlankul23
Ну архив это один раздел в меню...

Что из себя представляет этот самый раздел в меню?

На всякий случай: пункт в меню - это указатель на какое-то место в программе.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Посетитель
399390
30
09.01.2016, 12:35
общий
Здравствуйте! У меня возникли сложности с таким вопросом:
как можно сделать архив в делфи то есть все данные которые уже простояли год автоматически вводились в архив и хранилась там. А база обновлялась.
Заранее спасибо
давно
Мастер-Эксперт
425
4118
09.01.2016, 13:05
общий
Адресаты:
Вы сначала подумайте над тем, в каком виде у Вас будет этот самый архив. Или Вы хотите его сделать. А потом мы уже обсудим как вашу идею можно реализовать.
Предупреждение!!! Про меню говорить не надо, оно тут не при чём.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Посетитель
399390
30
09.01.2016, 13:06
общий
какие у вас есть идеи на счет архива
давно
Мастер-Эксперт
425
4118
09.01.2016, 13:12
общий
Адресаты:
Цитата: arujan.nurlankul23
какие у вас есть идеи на счет архива

Самая первая: архив вообще не нужен, т.к. выборку данных можно сделать с таким условием, что в неё попадут только нужные Вам данные и ничего более.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Посетитель
399390
30
09.01.2016, 13:17
общий
а может просто сделать как архив и там пользователь сам будет вводит нужные год и там появиться данные
и архивом будет одна форма в делфи где пользователь может делать поиск по данным
давно
Посетитель
399390
30
09.01.2016, 13:19
общий
но тут возникает вопрос как данные будут обновляться
давно
Мастер-Эксперт
425
4118
09.01.2016, 13:58
общий
09.01.2016, 14:01
В том то и вопрос - пока мы не узнаем, что же Вы подразумеваете под словом "архив", дальше двигаться никак не возможно.
Вы ведь просто говорите - "архив, архив", а смысла пока за этим словом никакого не улавливается.
Допустим, Вы не хотите видеть данные, которые старее, чем 1 год. Так Вы их и так не увидите, если не будете в явном виде указывать их в условии выборки.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Профессионал
153662
1070
10.01.2016, 06:32
общий
Если в базе только одна таблица, то можно, например, просто каждый год делать новую таблицу, прямо из программы.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Посетитель
399390
30
10.01.2016, 13:49
общий
Цитата: Евгений/Genia007/
Если в базе только одна таблица, то можно, например, просто каждый год делать новую таблицу, прямо из программы.


как?
давно
Посетитель
399390
30
10.01.2016, 13:50
общий
но у меня там 20 нормализованных таблиц
давно
Профессионал
153662
1070
10.01.2016, 13:58
общий
10.01.2016, 14:04
Цитата: arujan.nurlankul23
как?
Я у себя в проге новую таблицу создаю так:
Код:
procedure Tzurnals.NewZurnalExecute(Sender: TObject);
var
qyTable: TADOQuery;
TabName1: string;
begin
TabName1:= InputBox('zurnal', 'Введите год на который создаётся журнал', '');
if TabName1 = '' then
begin
StatusBar1.Panels[1].Text:= 'Журнал не создан. Нужно ввести год цифрами';
exit;
end;
TabName1:= 'zurnal_' + TabName1;
qyTable:= TADOQuery.Create(Self);
qyTable.Connection:= dm.ADOConnection1;
with qyTable do
try
try
SQL.Clear;
SQL.Add('CREATE TABLE ' + TabName1 + '(data date, vremya time, seans Text(200), ' +
'about Text(50), sost Text(25), reklama Text(200), id Counter, dlina time, ' +
'vidpok Text(50), PRIMARY KEY (id))');
qyTable.Parameters.Clear;
Prepared:= true;
// ExecSQL, а не Open. Иначе ... облом

ExecSQL;
except
// Обработка ошибок открытия таблицы Возможности обработчика можно расширить.

Exception.Create('Ошибка открытия таблицы');
end;
finally
Close;
qyTable.Free;
System.Delete(tabname1, 1, 7);
StatusBar1.Panels[1].Text:= 'Новый журнал на ' + TabName1 + ' год создан';
end;
end;
Код был взят на просторах интернета.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Профессионал
153662
1070
10.01.2016, 14:02
общий
Адресаты:
И всё таки что Вы подразумеваете под архивом? Просто хранение копии базы в другом месте, создания архива базы типа zip или что то ещё другое. Или хотите что бы в базе не копилось слишком много записей, ну и её размер соответственно. Базу ещё можно и сжимать убирая мусор и этим уменьшать размер.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Мастер-Эксперт
425
4118
10.01.2016, 16:01
общий
Адресаты:
Цитата: arujan.nurlankul23
но у меня там 20 нормализованных таблиц

Надо определить, в каких именно таблицах (из 20-ти) данные по истечение года становятся неактуальными и подлежат архивации. Как только Вам удасться решить эту в высшей степени интеллектуальную проблему, Вам нужно создать дополнительные таблицы с такой же структурой (добавив к названию что-нибудь типа "_arch") и с помощью "INSERT" копировать туда данные из основных таблиц, а потом, с помощью "DELETE" удалять скопированные данные из основных таблиц.
Код:
INSERT INTO какая-то-таблица_arch (SELECT * FROM какая-то-таблица WHERE условие_по_которому_определяется_что_данным_исполнился_год);

DELETE FROM какая-то-таблица WHERE условие_по_которому_определяется_что_данным_исполнился_год;
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа