отправлено / posted
Здравствуйте! Я создал проекта по вашему примеру из 5-го занятия "Учебный проект. Создания SQL-запроса для работы с внешней реляционной базой данных", я его изменил так, что бы значения записывались постоянно, записывает он данные с генератора синусоиды. Вопросы следующие: 1) При записи в Access интервал записи всегда разный, от полу минуты, до 7 минут и на оборот, почему так? 2) Лог проекта выдает ошибку Calc loop is big через минут 10 работы проекта, проект от этого не завершается, а продолжает нормально работать, может быть эта причина разного интервала записи и как это исправить?
Сообщения / Posts 25 | Из / From: Казахстан
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
Для SQL-эапросов период пересчета idle. ТМ не предназначен для быстрой записи в базы данных. Необходимо контролировать окончание запроса и только после этого инициировать следующий.
[ 08.06.2012, 13:34: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Нужно открыть канал вызова SQL-запроса на редактирование и в качестве единицы периода пересчета выставить "цикл IDLE".
Сообщения / Posts 17320 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Так же если пройти в базу данных access и ввести любое значения вручную, то видно, что инентификатор изменился в соотведствии с количеством отправленных запросов. Получается что запрос проходит, но нечего не вводит в базу
Сообщения / Posts 25 | Из / From: Казахстан
| IP / IP: IP адрес / IP address |
отправлено / posted
Проект в МРВ работает, но сигнала от ком порта не получает так, как сейчас нет возможности подключить программу в месте применения. Запустил проект и вручную изменил все входные параметры с датчиков, значения в базу данных записались. Может быть так, что из-за отсутствия сигнала от ком порта значения в базу данных не записываются или же из-за настроек множителя и смещения в минусовое значение в каналах привязанных к базе данных?
Сообщения / Posts 25 | Из / From: Казахстан
| IP / IP: IP адрес / IP address |
отправлено / posted
В файле трассировщика ошибка несоответствия типа данных.
Вероятней всего проблема в различие разделителе дробной и целой части числа в базе данных и Trace Mode. В Trace Mode в качестве разделителя используется точка. Убедитесь, что в базе данных разделителем тоже является точка.
Сообщения / Posts 17320 | Из / From: Россия
| IP / IP: IP адрес / IP address |
И появился еще один вопрос, как ограничить количество записей в базу данных? Нужно что бы после записи допустим id=65536, значения в базу данных прекращались записываться, а просто обновляли старые записи, все как в СПАД архиве или есть другие варианты?
Сообщения / Posts 25 | Из / From: Казахстан
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
после достижения нужного числа записей(INSERT) работать через другой SQL шаблон (UPDATE)
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
И все таки не пойму как этого добиться. Запись в базу данных при достяжении определенного числа записей остановить удалось. Запустить обновления вроде как тоже удалось, но не работает, шаблон такой:
UPDATE tab1 SET mktime=#mktime#, pila=#Пила_1_R#, sinus=#Синусоида_3_R#, treug=#Треугольник_2_R#
Для всего этого используется 2 канала вызова базы данных и опять стало вылазить сообщение Calc loop is big
Сообщения / Posts 25 | Из / From: Казахстан
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
если mktime - это время текущей записи где указание какую запись нужно обновить
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Мне нужно что бы обновлялась каждая запись по порядку при подачи запроса на обновления, нет смысла обновлять одну строчку или одно значение
Сообщения / Posts 25 | Из / From: Казахстан
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
функция WHERE в том что бы сузить круг изменений производимых функцией UPDATE, т.е. допустим моя функция:
UPDATE tab1 SET mktime='#mktime#', pila='#Пила_1_R#', sinus='#Синусоида_3_R#', treug='#Треугольник_2_R#'
обновит все что косается выше перечисленных полей, а функция:
UPDATE tab1 SET mktime='#mktime#', pila='#Пила_1_R#', sinus='#Синусоида_3_R#', treug='#Треугольник_2_R#' WHERE pila=5
обновит только те поля где будут совпадения колонки pila со значением 5.
Я же в свою очаредь приследую такую цель: Нужно произвести запись в базу данных за неделю с интервалом между записью в 1 минуту итого 10080 записей за недель. После достижения 10080 строк нужно прекратить записывать новые, а начать обновлять старые и так в цикле. Остановить запись мне удалось, обнавить старые данные тоже удалось, но обнавление проходит криво. Вместо обновления одной строки по порядку с каждым запросом, происходит одновременное обновления всех строк итого во всех 10080 записях одно и тоже время и значения.
Вопрос в следующем как правильно составить запрос на обновления или же какой другой вариант есть по реализации данной задачи
Сообщения / Posts 25 | Из / From: Казахстан
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
сами же себе ответили UPDATE tab1 SET mktime='#mktime#', pila='#Пила_1_R#', sinus='#Синусоида_3_R#', treug='#Треугольник_2_R#'
обновит все что косается выше перечисленных полей, во всех записях
1. Проще всегда INSERT и иногда вызывать DELETE (старые по времени) 2 или иметь номер записи = F(time) и UPDATE по нему 3 Да и INSERT не нужен при старте создать недостоверные записи и только UPDATE
Сообщения / Posts 873 | Из / From: Россия
| IP / IP: IP адрес / IP address |