Ваши комментарии
Хотелосьбы узнать результат по реализации на Линукс.
Спасибо!!!
Скачал, обновил, всё работает прекрасно и, похоже, даже быстрей.
За пять шагов- жму крепко пять!
Спасибо, понятно, всё получилось!
Жаль. нигде в документации этого не встретилось.
Если я добавляю в репорте, он его не видит. А как это сделать в каналах??
Это я уже понял, Спасибо. Но как в демо добавить его???
Спасибо, жду!
Добрый день!
Та же ерунда - время повторяется дважды просто на панелях и при формировании списка. С вашими изменениями. Проект и инструкцию прикладываю
Запустить мнемо "толчок22",
нажать несколько раз (~10-12) кн "толчок"
Подождать несколько секунд для записи в БД
нажать кн "сейчас"
нажать кн."список вышедших"
убедиться в правильной записи в выпадающий список
выбрать строчку в списке
Нажать "диаграмма по вагонетке 1",
Повторить со "списка вышедших", убедиться в правильности списка.
На рис. все двойные отображения времени отмечены рамочками и стрелками.
"Список вышедших" запускает скрипт канала "Список"
Добрый день, смущает не выдача даты, а то что после даты и время ещё раз повторяется время просто при отображении TdataTime на панели и иногда в формируемом выпадающем списке.
Место формирования выделено в скрипте жирным подчёркнутым шрифтом.
Спасибо!
Var
begindate, enddate, date: TDateTime;
reccount,ryi,rvi,ry,rv: integer;
value: integer;
stream: TMemoryStream;
error: word;
ss,s:string;
masdv, masdy,masdr: array [0..1000] of TdateTime;
masvv,masvy: array [0..1000] of integer;
begin
begindate := ReadValue('дата нач');
// конечная дата
enddate := ReadValue('дата кон');
// считаем данные из БД в буфер
stream.clear;
error := StreamReadFromDatabase(begindate, enddate,'ваг вышли', stream);
ry := -1; // записей по выходу
if error = 0 then begin
reccount := GetCountRecordToStream(stream);
while GetValueFromStream(stream, date, value) do begin
inc(ry); if ry>1000 then ry:=1000;
masdy[ry]:=date; //дата выхода
masvY[ry]:=value; //номер вагонетки вышедшей
masdr[ry]:=0; //пока нет захода
end;
// дата начала
begindate := masdy[0]-1; // надо за 4 дня назад, пока 1 !!!
stream.clear;
error := StreamReadFromDatabase(begindate, enddate,'ваг вошли', stream);
rv := -1; //записей по входу
if error = 0 then begin
while GetValueFromStream(stream, date, value) do begin
inc(rv); if rv>1000 then rv:=1000;
masdv[rv]:=date; //дата заходаа
masvv[rv]:=value; //номер вагонетки зашедшей
end;
for ryi:=ry downto 0 do begin // поиск назад в вых
for rvi:=rv downto 0 do begin // поиск назад в заходе
if (masvy[ryi]=masvv[rvi]) then begin //найден заход
masdr[ryi]:=masdv[rvi];// когда заехала
break;
end;
end;
end;
end; //по заходу
end;// по выходу
ss:='';
for ryi:=ry downto 0 do begin// формирование списка
if masdr[ryi]=0 then s:='; Не вышел' else begin
s:=dateTimeToStr( masdy[ryi])+'; Всего:'+inttoStr(round((masdy[ryi]-masdr[ryi])*24*3600))+'сек';
end;
ss:=ss+intToStr(ryi+1)+' №'+IntToStr(masvy[ryi])+' '+DateTimeToStr(masdr[ryi])+'-'+s+',';
end;
SetComboBox('толчок22','ВыпадающийСписок',ss,0,true);
end.
Сервис поддержки клиентов работает на платформе UserEcho
Отлично. На данный момент предлагаем нашему заказчику вариант HMI интерфейса на компьютере с Линукс. Пока рассматривают наше предложение. По факту их ответа будем двигаться дальше.
Но может и на другом объекте тоже реализуем такой вариант.