Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1163762370
stud
2006-11-17 14:19
2006.12.03
запуск задания job из дельфи


2-1163522915
SergeySP
2006-11-14 19:48
2006.12.03
Как распознать ошибку


2-1163438646
_Ruslan_
2006-11-13 20:24
2006.12.03
Вызов нескольких копий формы из DLL и передача информации из DLL


15-1163347205
К.
2006-11-12 19:00
2006.12.03
Ноутбук, гаснет экран


15-1163270446
Cyrax spectre
2006-11-11 21:40
2006.12.03
Имею ли я право на реабилитацию или УДО ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский