Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

Сообщение, результата запроса, убрать   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.077 c
15-1163094588
Calibr
2006-11-09 20:49
2006.12.03
Язык С


2-1163329112
redlord
2006-11-12 13:58
2006.12.03
не активный контрол


15-1163486604
MasterOK
2006-11-14 09:43
2006.12.03
А где Ega23?


15-1163193656
ArtemESC
2006-11-11 00:20
2006.12.03
Как сделать поддержку субтитров?


6-1152028321
SpellCaster
2006-07-04 19:52
2006.12.03
Странности у TTcpClient и TTcpServer