Запись данных в базы данных ведется с помощью скриптов. Алгоритм следующий:
- Создать скрипт, выполняемый по изменению значения переменной.
- Сформировать SQL-запрос в локальной переменной скрипта типа string
- Выполнить запрос с помощью функции ExecSQL
У нас есть таблица в базе данных с 2 полями
Data – дата и время; event - события.
Напишем следующий скрипт, запускаемый при изменении значения переменной:
var NewValue:string; // Новое значение переменной
var NamePeremen:string; // Название переменной
var RusNamePeremen:string; // Русское название переменной
var sqlscript,sqlevnt:string;
PrintLn('Количество параметров: '+ IntToStr( ParamCount));//Параметры появляются в режиме исполнения при
//способе запуска по изменению значения
if ParamCount>=3 then //Количество параметров
begin
PrintLn('Новое значение переменной: '+ParamStr(0));
PrintLn('Название переменной: '+ParamStr(1));
PrintLn('Русское название переменной: '+ParamStr(2));
if ParamStr(0)='0' then sqlevnt:=''''+ParamStr(2)+' Отключение'''
else
if ParamStr(0)='1' then sqlevnt:=''''+ParamStr(2)+' Включение''';
sqlscript:='INSERT INTO journal(data, event)'+
'VALUES ('''+ FormatDateTime('yyyy-mm-dd hh.nn.ss.zzz', Now)+''','+sqlevnt +');';
ExecSQL('DB_0',sqlscript);
end;
Затем на вкладке приём/передача данных в свойстве переменной «Скрипт при изменении» выберите из выпадающего списка название нужного скрипта. Информацию о значении и имени переменной скрипт узнает из массива ParamStr.
Теперь отобразим журнал событий из базы данных
В папке web_main расположен пример events.html. Используются библиотеки:
jquery-ui.js, datepicker-ru – для отображения календаря,
angular.js, ui-grid.js – для отображения таблицы (Grid)
events.js – собственная библиотека
Подключаем контроллер angular.js с помощью
Выбор даты календарем реализуем с помощью скрипта
var str = '';
$( function() {
$( "#datepicker" ).datepicker({
showButtonPanel: true,
"dateFormat" : "dd.mm.yy",
onSelect: function(date, datepicker) {
var startDate = $('#datepicker').datepicker("getDate");
var Month_temp = startDate.getMonth()+1;
str ='?p_year='+startDate.getFullYear()+'&p_mounth='+Month_temp +'&p_day='+startDate.getDate() ;
}
});
$( "#datepicker" ).datepicker( $.datepicker.regional[ "ru" ] );
} );
Подключаем табличку
<div ui-grid="gridOptions" ui-grid-selection ui-grid-exporter ui-grid-resize-columns></div>
В файле events.js описан скрипт для работы таблицы. Журнал сервер представляет в json формате. В ответ на запрос events.json?p_year=2017&p_mounth=5&p_day=2 выдается результат:
[{"data":"2017-05-02 11:16:08","event":"В-10-111 Включение"},{"data":"2017-05-02 11:28:36","event":"В-10-111 Отключение"}]
Для представления данных в формате json используется скрипт создания events.json:
var str,parametsjson,p_year,p_mounth,p_day,p_date_start,p_date_end: String;
if ParamCount>=1 then //Количество параметров
begin
parametsjson:=ParamStr(0);// Получить параметры из GET-запроса.
p_year:=GetParamVal(parametsjson,'p_year', IntToStr( YearOf(now)));
p_mounth:=GetParamVal(parametsjson,'p_mounth', IntToStr( MonthOfYear(now)));
p_day:=GetParamVal(parametsjson,'p_day', IntToStr( DayOfMonth(now)));
p_date_start:=p_year+'-'+p_mounth+'-'+p_day+' 00:00:00';
p_date_end:=p_year+'-'+p_mounth+'-'+p_day+' 23:59:59.999';
str:='SELECT *'
+'FROM journal '+
'WHERE (data>'''+p_date_start+''')AND(data <'''+p_date_end+''');';
Print(SQLQueryToJSON('DB_0',str)); //Выполняем запрос, представляем его в JSON и выводим в консоль
end;