![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как маскировать исключение EDatabaseError?
oleg1963lora © (2010-02-19 10:23:00)Здравствуйте уважаемые Мастера? Имеется МДБ-файл со структурой:
ID_Count - числовой
Date - символ(10)
Time - символ(5)
Param - символ(6)
Ключ Date+Time - уникальный
На входе имею огромный текстовый файл вида:
Дата Время Параметр
14.02.2010 9:05 18,32980728
14.02.2010 9:05 18,21404266
14.02.2010 9:06 18,08520126
14.02.2010 9:06 17,96290207
14.02.2010 9:06 17,84811974
При добавлении записи происходит исключение дублирования и останов проги. Написал такой код
type
EDatabaseError = class(Exception);
................................................
try
Form1.ADOTable1.Post;
except
on EDataBaseError do
ShowMessage('Попался, Гад!');
end;
Гад отлавливается, а вслед вываливается совет изменить структуру базы и шлет меня к...
Как бы его спрятать, шоб людей не пугать?
Virgo_Style (2010-02-19 20:42:00) [1]
> type EDatabaseError = class(Exception);
По-моему, тут что-то не так. Я не прав?
Sergey13 (2010-02-19 15:04:00) [2]> [21] oleg1963lora (19.02.10 14:41)
> Вот сижу изобретаю унитаз.
Удачи тебе в этом нелегком деле. Есть еще велосипед с квадратными колесами - перспективная вещь.
oleg1963lora (2010-02-19 14:41:00) [3]
> А что с другими вопросами?
А какие еще вопросы. Прибор пишет данные во внутренний архив, имеющий ограниченный размер. Измерение присходит по изменению климата. Обрати внимание на разрядность параметра. На кой ляд такая точность, да и не даст ни один сельскохозяйственный прибор такого. Таким образом имеем (Скока там секунд в сутках?) число записей*30 байтов длины. Размер архива считай сам. А нужно иметь 5 замеров в час. Тогда будет возможность
иметь 120 записей на сутки. Вот сижу изобретаю унитаз.
Sergey13 (2010-02-19 14:08:00) [4]> [17] oleg1963lora (19.02.10 13:24)
Это ладно. А что с другими вопросами?
oleg1963lora (2010-02-19 13:50:00) [5]Наблюдатель наблюдает. Наблюдатель наблюдаем.(с Р.Шекли)
В данном случае програмист только я, в бригаде только КИПовцы.Залезть в прибор, вытрющить из него ППЗУ, его содержимое, деассемблировать, найти программатор, залить ПЗУху и чтоб потом прибор работал в принципе?
Не проще ли его просто грохнуть? Молотком например. Посидеть пару-тройку лет и все.:)
Вася (2010-02-19 13:37:00) [6]
> oleg1963lora (19.02.10 13:24) [17]
Пьяные электрики часто перекусывают не только электропитание, но и приборы-гарантирующие. Например, путем внесения улучшений в код, формирующий файл
oleg1963lora (2010-02-19 13:24:00) [7]
> А есть гарантия, что в файле все упорядочено по дате/времени?
Гарантировано прибором. Упорядоченность может быть нарушена только пьяным электриком, перекусившим электропитание :)
Медвежонок Пятачок (2010-02-19 13:08:00) [8]Пока равны удалять вторую строку, иначе указатель на вторую строчку и опять проверка следующуй.
Если даже в результате этого в файле не окажется дубликатов, то это еще не говорит о том, что не будет нарушен праймари кей при вставке файла в таблицу.
Sergey13 (2010-02-19 12:52:00) [9]> [13] oleg1963lora (19.02.10 12:39)
> А тут такое месиво.
Действительно месиво
> Param - символ(6)
> На входе имею огромный текстовый файл вида:
> Дата Время Параметр
> 14.02.2010 9:05 18,32980728
Как ты собираешься вставлять?
> Ключ Date+Time - уникальный
> 14.02.2010 9:06 18,08520126
> 14.02.2010 9:06 17,96290207
> 14.02.2010 9:06 17,84811974
по ключу эта три строки одинаковы. Это и есть твои дубли?
> Сделаю так. Указатель на первую строку, проверка на равенство второй.
> Пока равны удалять вторую строку, иначе указатель на вторую строчку и опять проверка следующуй.
А есть гарантия, что в файле все упорядочено по дате/времени?
Игорь Шевченко (2010-02-19 12:46:00) [10]программист нужен
oleg1963lora (2010-02-19 12:39:00) [11]
> время вставки < 4 секунд
ИМХО для непротиворечивых данных так и есть. А тут такое месиво.
Сделаю так. Указатель на первую строку, проверка на равенство второй.
Пока равны удалять вторую строку, иначе указатель на вторую строчку и опять проверка следующуй.
12 (2010-02-19 12:14:00) [12]упс, невнимателен
Медвежонок Пятачок (2010-02-19 12:07:00) [13]причем реально необходимое время еще меньше, так как у меня еще и прогресс-бар отображает процесс инсертов.
Медвежонок Пятачок (2010-02-19 11:57:00) [14]Мои показатели:
записей 5200
адокомманд + insert into
локально лежащий мдб
время вставки < 4 секунд
Плохиш (2010-02-19 11:55:00) [15]
> 12 © (19.02.10 11:53) [8]
> не знаю что за БД
В первой строке вопроса написано.
12 (2010-02-19 11:53:00) [16]возможно надо действительно, если критерий -скорость,
> в соседнюю табличку
заливать. И если есть что-то вроде bulk insert,не знаю что за БД, то через него
Плохиш (2010-02-19 11:51:00) [17]
> Form1.ADOTable1.Post;
>
В соседней ветке уже советовали нанять программиста.
Медвежонок Пятачок (2010-02-19 11:47:00) [18]Так вот, это направление тупиковое. 4800 записей
Form1.ADOTable1.Post;
ну разумеется.
адотэйбл. аппенд, пост.
еще поди и грид прикручен к таблице.
тут даже на таком смешном и детском количестве как 4800 записей будет тормозить.
Sergey13 (2010-02-19 11:44:00) [19]> [4] oleg1963lora (19.02.10 11:39)
Сначала залей в соседнюю табличку, и там уже удаляй.
oleg1963lora (2010-02-19 11:39:00) [20]
> Медвежонок Пятачок
Мне только что звонил друг, он тоже этой задачей занимается. Идея была такая, чтобы искючать из текстовика одинаковые по дате-времени строки.
Я наивно понадеялся, что заливка в базу автоматом отсечет таковые и файл здорово урежется.Так вот, это направление тупиковое. 4800 записей обрабатываются около 40 секунд. Учитывая немереное количество таких файлов... В общем нужно думать как файлы обрабатывать перебором в стринггриде. Спасибо за отзыв.