Пусть имеется база данных с таблицей "table_1". Таблица имеет три колонки (или поля): "ID", "A", "B". Также она включает десять строк.

Задача: получить в скада-систему одно значение колонки "A" из строки номер шесть. Оно равно "32.4". Для этого сначала нужно составить SQL-запрос на выборку нужного значения. Он будет выглядеть так:
SELECT `A` FROM `table_1` WHERE ID = 6;
Результатом выполнения этого запроса станет крошечная таблица, которая состоит из одной колонки "A" и одной строки:

Соответственно, она будет содержать всего одно нужное нам значение - "32.4". Итак, запрос у нас есть, теперь можно перейти к реализации в Simple-Scada. Добавим в проект новую кнопку "Button1" и создадим скрипт по событию "OnClick":
var
aQuery: string;
begin
// Формируем запрос к БД
aQuery := 'SELECT `A` FROM `table_1` WHERE ID = 6;';
// Отправляем запрос на выполнение c тегом = 1
RunSQL(aQuery, nil, 1);
end.
Теперь при нажатии на кнопку будет выполняться наш запрос. Осталось получить результат выполнения запроса и отобразить его в скада-системе. Для этого в редакторе скриптов необходимо создать новый скрипт, причем при создании нужно выбрать тип события "Выполнен SQL-запрос". Такой скрипт будет вызываться скада-системой каждый раз, когда выполнился пользовательский SQL-запрос. Также, этот скрипт будет содержать параметр "DataSet" - это таблица, которая была получена в результате выполнения запроса. Нам известно, что запрос вернет только одну колонку с одной строкой, поэтому можно брать значение напрямую, вот так:
begin
if DataSet.Tag = 1 then
Text1.Text := DataSet.Fields[0].AsStr;
end.
Сначала мы убедились что "DataSet" - это результат нашего запроса, так как мы помечали его тегом = 1. Затем, мы обращаемся к первой колонке (Fields[0] - в нашем случае это колонка `A`) и берем значение в виде строки в объект "Text1". Также, обращаться к колонкам можно используя более короткую запись:
begin
if DataSet.Tag = 1 then
Text1.Text := DataSet[0].AsStr;
end.
Проверить свои SQL-запросы и увидеть результат их выполнения, можно используя бесплатное приложение MySQL Workbench. Это поможет лучше понять SQL и БД.
Работа с выборкой из множества строк
Для перемещения курсора в наборе данных на следующую позицию используйте Next, а на предыдущую позицию - Prior. Если нужно перебрать весь набор данных, то цикл будет таким:
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.
Обратите внимание, если нужно вывести данные в компонент "Таблица", то можно использовать автоматическое заполнение таблицы при помощи метода RunSQL. Например, если в проекте есть таблица с именем Table1, то можно написать такой скрипт:
var
aQuery: string;
begin
aQuery := 'SELECT * FROM `my_table`'; // формируем запрос к БД на выборку всех данных из таблицы `my_table`
Table1.RunSQL(aQuery, tsAll); // выполнить запрос и заполнить таблицу результатом выполнения
end.