136
Ваши вопросы / Re: Вопросы по скриптам в Simple-Scada 2
« : 26 Апреля 2021, 20:54:15 »Как избавится от запроса в каждом цикле?Вариант с накоплением запросов в списке с их последующим выполнением после заполнения списка:
1. создание списка в глобальном модуле:
Код: (delphi)
interface
var
myList: TM_StringList; // объявляем список с именем myList
implementation
initialization // во время запуска проекта
myList := TM_StringList.Create; // создаём список
finalization // во время выключения проекта
FreeAndNil(myList); // !!! обязательно удаляем список
end.
Код: (delphi)
procedure InsertDmCod;
begin
myList.Add('INSERT INTO DmExplorer.dbo.TMP_DeFileRead (DFR_DmCod, DFR_TimeStamp) '+
'VALUES (' +QuotedStr(vrUploadStr.AsStr)+', '+SQLServerDateTime(Now, dttMillisecond)+ ')');
end;
Код: (delphi)
{PRG************************************************************************************************************************}
begin
imgLoad1.Visible := true;
. . .
MyList.Clear; // очистить список
while not TextFileEOF do // цикл с проходом по каждой строке текстового файла
begin
. . .
end;
TextFileClose; // закрываем файл
MyLisyIndex.Value := 0; // индекс текущего элемента списка
if MyList.Count > 0 then RunSQL(MyList[0], nil, 4) // запуск цикла по непустому списку
else imgLoad1.Visible := false;
end;
end.Код: (delphi)
begin
if DataSet.Tag = 4 then begin
MyLisyIndex.Value := MyLisyIndex.AsInt + 1; // индекс текущего элемента списка = параметр цикла
if MyList.Count > MyLisyIndex.AsInt then RunSQL(MyList[MyLisyIndex.AsInt], nil, 4)
else imgLoad1.Visible := false;
end;
end.