Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
ВнизСообщение, результата запроса, убрать Найти похожие ветки
← →
YurkaT © (2006-11-14 08:39) [0]есть таблица, в которой, ключ. поле, в формате дата,время,
примерно раз в секунду, в базу кое чё записуется...
раз в несколько часов, вываливается, сообщение, о том что такое ключевое, поле уже есть, видать, из-за погрешности таймера, или ado(неважно)...
как убрать что-бы, ето сообщение не показывалось,
оно конечно не критично, но всё же....
кто знает подскажите PLS...
← →
Sergey13 © (2006-11-14 08:42) [1]Обработать исключительную ситуацию в коде, где "в базу кое чё записуется".
← →
Рамиль © (2006-11-14 08:46) [2]try
MyTable.Append;
...
except
if not {тут проверяем, точно ли эта ошибка} then raise
end
Лучше, конечно, проектировать правильно. Или сделать выборку с датой, которую хочешь записать, если выборка не пустая, то ничего не писать.
← →
Sergey13 © (2006-11-14 08:50) [3]> [2] Рамиль © (14.11.06 08:46)
> Лучше, конечно, проектировать правильно. Или сделать выборку
> с датой, которую хочешь записать, если выборка не пустая,
> то ничего не писать.
Для записи в БД с частотой 1 сек это будет самый неправильный способ, ИМХО.
← →
Рамиль © (2006-11-14 08:58) [4]
> Для записи в БД с частотой 1 сек это будет самый неправильный
> способ, ИМХО.
Зависит базы. Если кроме него в нее никто не пишет и не читает, то вполне нормально:)
← →
ANB © (2006-11-14 10:41) [5]ИМХО - некузяво делать поле даты-времени первичным ключом.
← →
Anatoly Podgoretsky © (2006-11-14 11:36) [6]> ANB (14.11.2006 10:41:05) [5]
Вполне нормально, только не надо писать примерно раз в секунду, ерунда такая получается.
← →
Percent (2006-11-14 11:55) [7]1. Добавить автоинкрементное поле.
2. Сделать его (поле) первичным ключом.
3. Забыть о проблеме.
← →
DVM © (2006-11-14 12:01) [8]
> только не надо писать примерно раз в секунду, ерунда такая
> получается.
Что же это за БД будет, если раз в секунду для нее проблема.
> Percent (14.11.06 11:55) [7]
Единственно правильное решение.
← →
Anatoly Podgoretsky © (2006-11-14 12:37) [9]> DVM (14.11.2006 12:01:08) [8]
Проблема то не в этом, но в течение одной секунды, эти самые секунды одинаковы.
← →
DVM © (2006-11-14 12:44) [10]
> Проблема то не в этом, но в течение одной секунды, эти самые
> секунды одинаковы.
Ну писать миллисекунды туда. В ТDateTime они же есть.
← →
sniknik © (2006-11-14 13:03) [11]> Ну писать миллисекунды туда. В ТDateTime они же есть.
a в access нету... (во всяком случае в справке не описаны, и функции типа Now(), Time() в запросах тоже результат без миллисекунд выдают)
менять базу придется. (для нормальной работы... так то можно заменить тип на доубле к примеру, и обработку/приведение делать самостоятельно, но это упариться можно ;)
← →
Percent (2006-11-14 13:03) [12]В ТDateTime они же есть
В Delphi - есть.
Не факт, что в mdb есть.
Надо документацию читать или проверять.
← →
Anatoly Podgoretsky © (2006-11-14 13:09) [13]> DVM (14.11.2006 12:44:10) [10]
У баз нет такого типа TDateTime
← →
DVM © (2006-11-14 13:10) [14]
> a в access нету...
Преобразовать дату в число миллисекунд, писать число в базу.
Только все таки изврат это. Есть же нормальный счетчик.
← →
Anatoly Podgoretsky © (2006-11-14 13:11) [15]
> Надо документацию читать или проверять.
Зачем проверять то, автор то не горит код раскрывать.
← →
DVM © (2006-11-14 13:12) [16]
> У баз нет такого типа TDateTime
Зато есть длинное целое у того же Access в частности. А дальше [14]
← →
Anatoly Podgoretsky © (2006-11-14 13:13) [17]
> Только все таки изврат это. Есть же нормальный счетчик.
Изврат и какой тип поля предлагаешь и от какой даты отсчет?
А автор вопроса согласен?
← →
DVM © (2006-11-14 13:15) [18]
> Изврат и какой тип поля предлагаешь и от какой даты отсчет?
1 янвяpя 1970 года, да любая дата в прошлом.
> А автор вопроса согласен?
А ему по барабану видимо
← →
DVM © (2006-11-14 13:17) [19]
> какой тип поля предлагаешь
В Access тип данных числовой - длинное целое. Должно хватить.
← →
Anatoly Podgoretsky © (2006-11-14 13:17) [20]
> 1 янвяpя 1970 года, да любая дата в прошлом.
С опорой разобрались, но про тип молчишь, а у меня вероятный вопрос есть.
← →
DVM © (2006-11-14 13:18) [21]
> а у меня вероятный вопрос есть.
Что делать когда переполнится?
← →
DVM © (2006-11-14 13:23) [22]Хотя погорячился я. В Access нет вроде подходящего типа данных. Длинное целое не хватит уже на 10 лет.
Тогда остается строка только.
← →
Percent (2006-11-14 14:08) [23]Тогда остается строка только.
А, может, все же, остановимся на автоинкрементном поле?
Ну, или уж если хочется так поизвращаться, то GUID...
← →
sniknik © (2006-11-14 14:10) [24]> В Access нет вроде подходящего типа данных.
доубле (см. 11) - 8 байтное с плавающей точкой, полный аналог, типа TDateTime в дельфи, который представленный этим же типом.
← →
Anatoly Podgoretsky © (2006-11-14 14:32) [25]> DVM (14.11.2006 13:23:22) [22]
Длинное целое это сколько в битах? Или в 10 тичных разрядах
← →
DVM © (2006-11-14 14:35) [26]
> Ну, или уж если хочется так поизвращаться, то GUID
GUID статистически уникален, но гарантии дать на 100 процентов нельзя, что он не повторится.
> доубле
Да точно, только он там вроде по другому называется.
← →
DVM © (2006-11-14 14:40) [27]
> Длинное целое это сколько в битах? Или в 10 тичных разрядах
В Access под этим названием скрывается 4 байта. Не подходит, короче.
← →
Anatoly Podgoretsky © (2006-11-14 15:02) [28]> DVM (14.11.2006 14:40:27) [27]
Подходит, на 23 дня, раз речь про миллисекунды
← →
MsGuns © (2006-11-14 20:43) [29]Засстрелиться !!!
Один решил повеситься на резинке из трусов, которая рвется все время, а орава здоровых мужиков набежала советовать, как лучше табуретку поставить и в какую стороны с нее прыгать.
Все сказано в [7]
← →
YurkaT © (2006-11-15 00:24) [30]вообщем, прога прга записывает, каждую секунду, состояние датчика.. ето хрень пишется, в базу mdb, в которой ключевое поле по умолчанию, datatime = now();
запись идёт на три дня,( бо выходные ),
записутет, в через адо тоесть ADOConnection --> ADOQuery -> ExecSQL(insert into), тоесть дата автоматически ставится, и заодно и ключ), но выскакует сообщение, неззя((((, как просто отключить ето сообщение((
ADOConnection > OnExecuteComplete читаю ошибку,номер, могу, халтом вырубить, приложение,до появления(бла-бла-бла), но как зделать так, что етот меседж, не появлялся, догнать, немогу(((
← →
Percent (2006-11-15 01:01) [31]Идиот!
← →
Anatoly Podgoretsky © (2006-11-15 07:48) [32]> Percent (15.11.2006 1:01:31) [31]
Достоевский
← →
YurkaT © (2006-11-15 11:22) [33]мда, вопрос просто как убрать сообщение, а тут такое накрутили)))..
ещё и размышлять пытаются))).. вообще не в ту сторону понесло......
если ещё и код нада, то просто по таймеру переодичностью (1000)...
s1:="#02"; //команда для контролера - на коме висит
WriteFile(f, s1,Length(s1)+1, sy, nil);
ReadFile(f, s2,15, sy, nil);
s3:="insert into t1 (vale) values ("+s2+")";
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(s3);
adoquery1.ExecSQL;
*********************
сама mdb:
t1 ----
id_dt: Дата/время: значение по умлч. Now(), ключевое...
vale: Числовой
*********************
если и далее что происходит, то потом на php, делается svg, график работы,
значения из базы...JS(ну ето отдельная струя).. к делфи не какого отношения не имеет....
← →
Плохиш © (2006-11-15 11:27) [34]После такого, мне весь день работать придётся, даже подремать не смогу :-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.049 c