Как считать значение из базы данных

Avatar
  • обновлен
  • Отвечен

Как считать значение канала из базы данных записное 15 часов назад?

Как Вы оцениваете обслуживание, которое получили?

Оценка удовлетворенности от АСУТП ЗСМ-7 7 лет назад

Огромное спасибо за помощь.

Добавьте комментарий о качестве обслуживания (необязательно):

Avatar
АСУТП ЗСМ-7

Я же писал, отладчик выдает : 07.03.2018 09:50:03.102 Нарушение доступа по адресу 0042912F в модуле 'Monitor.exe'. Чтение с адресом 00000000 - [Проталкивание]

Avatar

День добрый.


Подскажите какой тип у канала - Проталкивание?

Avatar
АСУТП ЗСМ-7

Здравствуйте.


DateTime, пробовал Word и Double результат одинаковый.

Avatar

Ок. Сможете предоставить доступ к ПК по тимвьюверу. Посмотрим на месте. Если такая возможность есть напишите на simp@simplight.ru данные для подключения а так же укажите время когда Вам будет удобно что бы мы подключились.

Avatar
АСУТП ЗСМ-7

То есть проект что я выкладывал у Вас работает без ошибок?  Учет тоннелей.slz

письмо отправил

Avatar
СИМП Лайт (тех поддержка)
  • Отвечен

День добрый.


Поправил скрипт у Вас на ПК. Была небольшая ошибка в тексте скрипта. (Мой косяк, не дописал пример)

Avatar
АСУТП ЗСМ-7

Спасибо. Рабочий скрипт, может кому пригодится:


{Pascal Script}
Var
  begindate, enddate, date: TDateTime;
  reccount: integer;
  res, value: double;
  stream: TMemoryStream;
  error: word;

  // Выполняется при старте скрипта
  procedure OnStartScript;
  begin
    stream := TMemoryStream.Create;
  end;

  // Выполняется при завершении работы скрипта
  procedure OnStopScript;
  begin
    stream.free;
  end;

Begin

   WriteValue('Проталкивание',Now);
  // дата начала
  begindate := Now - ((1/24/60/6) * 5);

  // конечная дата
  enddate := begindate + ((1/24/60/60)*2);

  // считаем данные из БД в буфер
  stream.clear;
  error := StreamReadFromDatabase(begindate, enddate, 'Установка платформ', stream);

  WriteValue('Ошибка',error);
  // error code
  //  DB_READ_OK = 0;
  //  DB_DATE_ERROR = 1;
  //  DB_MEMORY_OVERFLOW = 2;
  //  DB_CHANNEL_NOTFOUND = 3;

  res := 0;
  if error = 0 then
  begin
    // кол - во записей за считываемый интервал времени
    reccount := GetCountRecordToStream(stream);

    // вычитываем данные из буфера
    while GetValueFromStream(stream, date, value) do
    begin
          WriteValue('позиция 15',value);
        // date - метка времени
        // value - значение канала
    end;
  end;

end.