Ваши комментарии

Добрый день!

Как говорила Алиса: "Всё страньше и страньше! Всё чудесатее и чудесатее!".

А где можно узнать, какие из функции являются локальными, а какие нет ?

А то сейчас затеялся сопряжением SL с SQL FireBird (необходим архив неполадок и отклонений работы технологического оборудования ), потрачу силы и время, а потом окажется, что "это на клиенте не работает". Будет очень неприятно!


С уважением, Кондратенко Анатолий

Новочеркасск

Снимаю вопрос
Скачал с сайта последнюю версию free
Теперь всё работает как надо

С уважением, Кондратенко Анатолий
По всей базе
Если можно назвать ее базой
Просто для отработки скрипта сформировал виртуальый канал и записал в него кусок реального канала (где-то около пяти часов)
на форме два объекта ввода даты-времени
но кнопке вызывается этот скрипт

int StatistikaExcel(TDateTime dtBegin, TDateTime dtEnd)
{
string stroka, cellname, spisokStolb="BCDEFGHIJKLMNOPRST";
int count=0, i, iReturn=1, per=0;
int flagData=0, nomerData=1, kolData=0;
double sumData=0, dValue;
TTime beginTime, endTime;
TMemoryStream Stream;
word error;
TDateTime dtDate;

if(dtBegin>dtEnd)
{
ShowMessageBox("—", "Начальная дата больше конечной. Исправьте эту ситуацию!", 3);
return 0;
}
if(dtBegin==dtEnd)
{
ShowMessageBox("—", "Начальная дата равна конечной. Исправьте эту ситуацию!", 3);
return 0;
}
if(ReadValue("Протокол") == -2)
{
WriteValue("Протокол дата начала сигнальный",0);
WriteValue("Протокол дата конца сигнальный",0);
return 0;
}

Stream = TMemoryStream.Create;
nameCanal = "Канал с данными";
error = StreamReadFromDatabase(dtBegin, dtEnd, nameCanal, Stream);

// открываем шаблон файла и сохраняем его с именем "Протокол+текущая дата"
if(Excel.OpenTemplate("d:\\Протоколы\\protokol_1.xls") == 0)
{
nameFile = "d:\\Протоколы\\Протокол "+copy(DateTimeToStr(dtBegin),1,10)+".xls";
Excel.Save(nameFile);
Excel.Close;
}
else {error = 33;}


if((error == 0) && (Excel.OpenTemplate(nameFile) == 0))
{
Excel.Cell["B7"] = DateTimeToStr(dtBegin);
Excel.Cell["B8"] = 123;

while (GetValueFromStream(Stream, dtDate, dValue))
{
if(dValue>0)
{

// что-то с времеными метками
stroka = DateTimeToStr(dtDate);
ShowMessageBox("time", stroka, 3);

if(dValue>1) // почему-то попадаются положительные данные бесконечно малой величины
{
if(flagData==0){beginTime=dtDate;}
endTime=dtDate;
sumData=sumData+dValue;
kolData=kolData+1;
flagData=1;
}

}
else if((dValue==0)&&(flagData==1))
{
cellName = copy(spisokStolb,nomerData,1)+"12";
Excel.Cell[cellName] = sumData/kolData;

cellName = copy(spisokStolb,nomerData,1)+"13";
Excel.Cell[cellName] = TimeToStr(endTime-beginTime);

nomerData = nomerData + 1;
sumData=0;
kolData=0;
flagData=0;
}
}

Excel.Save(nameFile);
Excel.Close;
}
else { ShowMessageBox("—", "Ошибка считывания базы!", 1); iReturn=0; }
Stream.free;
WriteValue("Протокол дата начала сигнальный",0);
WriteValue("Протокол дата конца сигнальный",0);
return iReturn;
}
Добрый день!

При использовании GetValueFromStream(Stream, dtDate, dValue)

не могу получить временную метку из переменной dtDate
получаю только лишь даты следующего вида:
01.01.1900
30.12.1899
14.01.1900
16.01.1900 и т.д.

что я делаю не так?
мне требуется вычислить временной промежуток между двумя временными метаками

С уважением, Кондратенко Анатолий
Новочеркасск
Печально :( .
Пообещал быстро сделать, полагая что трудностей здесь не будет.
А когда ожидать дополнения в скрипты, о которых Вы говорите?

P.S.
Экспериментируя дальше с шаблоном, нашел самый простой выход: стоит, после отработки процедуры SHOW, нажать в EXCEL на иконку записать, то файл сохраняется в "чистом" виде, без "хвоста-шаблона"

С уважением, Кондратенко Анатолий
Новочеркасск
Добрый день!

Обнаружил интересный эффект при работе с отчетом EXCEL :unsure:
Заполнил шаблон (файл-xls), показал его (SHOW), сохранил его (пункт меню Excel - сохранить как), все хорошо.
Теперь пытаюсь использовать процедуру SAVE.
Тут есть два момента:
1) если использовать SAVE после SHOW, то записи файла-xls не происходит
2) если использовать SAVE до SHOW, то визуально всё вроде бы нормально, т.е. SHOW показывает заполненный файл (уже с новым именем, т.е. именем, которое использовалось в SAVE), НО! Когда вне SIMPLight открываешь этот файл-xls, созданный процедурой SAVE, то он состоит из двух частей: 1)заполненный значениями шаблон 2)собственно шаблон, еще не заполненный значениями.

Что я делаю не так! :dry:

P.S.
Можно ли создавать каталоги из скрипта.
Это нужно, чтобы создавать дерево хранения протоколов, аналогичное Вашей базе данных.
То есть, сегодняшние протоколы будут записываться по адресу: Протоколы\2016\04\05\Протокол 1.xls.
завтрашние по адресу: Протоколы\2016\04\06\Протокол 1.xls

С уважением, Кондратенко Анатолий
Новочеркасске
Добрый день!

Спасибо за присланную информацию.
Два замечания:
1) во всех справочных файлах при описании процедуры SetValue закралась очепятка: параметры процедуры разделяется точка с запятой, но при вставке процедуры через подсказку - она вставляется правильно с запятой. да и компилятор отслеживает наличие точки с запятой. если ее руками прописать.
2) отчет-файл (*.xls) открывается в обычном режиме, а не режиме "только для чтения" и позволяет его редактировать и перезаписывать. Приходится самостоятельно присваивать атрибут "только для чтения" файлу, содержащему шаблон отчета.

С уважением, Кондратенко Анатолий
Новочеркасск
Добрый день!

А если:
t1 = 07.12.2015 23:55:00
t2 = 08.12.2015 00:15:00
Как такого SPACE уже не будет, будет драйвер для SIMP с помощью которого можно будет подключать другие опросные станции SIMP.

Когда будет ? :blush:

С уважением, Кондратенко Анатолий
Новочеркасск


Сервис поддержки клиентов работает на платформе UserEcho