Здравствуйте!
Данные в таблицу должны заноситься тогда, когда установка закончит свой цикл, т.е. есть условие
Условие окончания цикла установки, заключающееся в достижении переменной определенного значения, можно обрабатывать в скрипте "Изменились переменные":
var aStr: string;
begin
// проверка условия
if Variable.Value <условие> <значение> then begin
. . .
// запись в таблицу метки времени и сопутствующих данных
aStr := 'INSERT INTO `statp1` (`timestamp`, `param1`, `param2`, <другие имена заполняемых столбцов> ) VALUES ('
+ MySQLDateTime(Now, dttFull) + .', ' // время-дата Simple-Scada
+ varParav1.asStr + ', ' // числовой параметр
+ QuotedStr(varParav2.asStr) + ', ' // строковый параметр - текст в одинарных кавычках
+ ... + ');';
RunSQL(aStr, nil, 0);
Text1.Text := aStr; // контроль запроса RunSQL на время отладки
end;
end.
Для контроля ошибок запросов можно использовать событие "Ошибка SQL-запроса":
begin
ShowMessageAll('ОШИБКА!', Msg, clNone);
end.
когда нужно заносить в ``? когда нужно ставить '' ? зачем ставятся ++?
Первый параметр процедуры RunSQL - строка состоящая из строковых констант и выражений. Константы заключаются в одиночные кавычки.
++ это простое объедение составляющих строки.
`` окаймляют имена столбцов и таблиц БД.
Для выражения, которое по правилам для MySQL необходимо заключить в одинарные кавычки, можно использовать функцию QuotedStr или пары одинарных кавычек, интерпретируемых внутри строки как одинарные.
как сделать выборку, когда временной диапазон задается календарями,
Подготовить два календаря, с привязанными виртуальными переменными TimeFrom и TimeTo типа DataTime:
Table1.RunSQL('SELECT timestamp, text FROM `statp1` '
+ 'WHERE(`timestamp` >= ' + MySQLDateTime(TimeFrom.AsDateTime, dttFull) + ') '
+ 'AND (`timestamp` <= ' + MySQLDateTime(TimeTo.AsDateTime, dttFull) + ');', tsSaveFixRow);
Если предоставите более полную информацию о "проблемной" части задачи, то постараюсь ответить с примерами.