Здравствуйте.
Для работы с результатом пользовательского SQL-запроса нужно использовать скрипт с типом события "Выполнен SQL-запрос". В таких скриптах результат запроса хранится в параметре DataSet (набор данных). Пройти по набору данных можно в цикле, вот так:
begin
{ выполнять цикл пока не достигнем конца набора данных }
while not DataSet.EOF do
begin
// здесь работаем с текущей строкой
DataSet.Next; // переходим на следующую строку
end;
end.
А это тот же код, но добавлен проход по ячейкам каждой строки:
var
I: Integer;
aStr: string;
begin
{ выполнять цикл пока не достигнем конца набора данных }
while not DataSet.EOF do
begin
{ проходим по каждой ячейке текущей строки }
for I := 0 to DataSet.FieldCount - 1 do
aStr := DataSet[I].AsStr; // получаем значение текущей ячейки переведённое в строку и записываем его в переменную aStr.
DataSet.Next; // переходим на следующую строку
end;
end.
Для записи значений в глобальные переменные придется писать "неудобный" код в котором записывать каждое значение в отдельную переменную, например в зависимости от значения счетчика цикла. Если переменные имеют однотипные имена, то код можно сделать достаточно простым если искать переменные по имени через
GetVariableByName.
P.S. Тут пришла идея поместить результаты запроса не в массив, а в пользовательскую таблицу, и затем из нее построить диаграмму. Но использование массива мне кажется рациональнее. Только вот как?
Массив сначала придётся заполнить, т.е. поместить в него нужные переменные в нужном порядке, поэтому проще сразу выполнять запись напрямую в нужные переменные. В пользовательскую таблицу тоже можно сохранить результат, но нужно будет сначала сформировать SQL-запрос на вставку данных (
INSERT INTO) в БД, что является довольно обширной задачей. Также нужно отметить что не получится увидеть тренд по списку значений X / Y в скаде, т.к. в меню трендов на оси X всегда расположено время. По списку значений X / Y можно построить тренд (диаграмму) только в отчетах.