Пожалуйста, включите JavaScript для просмотра этого сайта.

Скрипты Simple-Scada

История: Примеры скриптов > Работа с БД

Получить значение из БД

Пред. Вверх След. Еще

Пусть имеется база данных с таблицей "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, nil1); 
end.

 

Теперь при нажатии на кнопку будет выполняться наш запрос. Осталось только получить результат выполнения запроса и отобразить его в скада-системе. Для этого в редакторе скриптов необходимо создать новый скрипт, причем при создании нужно выбрать тип события "Выполнен SQL-запрос". Такой скрипт будет вызываться скада-системой каждый раз, когда выполнился пользовательский SQL-запрос. Также, этот скрипт будет содержать параметр "DataSet" - это таблица, которая была получена в результате выполнения запроса. Нам известно, что запрос вернет только одну колонку с одной строкой, поэтому можно брать значение напрямую, вот так:

begin
  if DataSet.Tag = 1 then
    Text1.Text := DataSet.Fields[0].AsUTF8String;
end.

 

Сначала мы убедились что "DataSet" - это результат нашего запроса, так как мы помечали его тегом = 1. Затем, мы обращаемся к первой колонке (Fields[0] - в нашем случае это колонка `A`) и берем значение в виде строки в объект "Text1". Также, обращаться к колонкам можно используя более короткую запись:

begin
  if DataSet.Tag = 1 then
    Text1.Text := DataSet[0].AsUTF8String;
end.

 

Проверить свои SQL-запросы и увидеть результат их выполнения, можно используя бесплатное приложение MySQL Workbench. Это поможет лучше понять SQL и БД.