Доброго всем времени суток
Имеется таблица БД Value, в которой есть поля ID и Znachenie (база - Postgres)
Как в переменную Simple Scada считать значение ?
Пробую вот так:
var
aQuery: string;
begin
aQuery := 'Select "Znachenie" from "Value" where ID=1';
RunSQL(aQuery);
if DataSet.Tag = 1 then Peremennaya.Value:= DataSet[0].AsFloat;
end.
Здравствуйте.
Процедура RunSQL выполняется асинхронно (выполнение зависит от нагрузки на СУБД, ПК и пр.). Поэтому сразу после вызова RunSQL нельзя работать с результатом запроса. Обрабатывать результат запроса нужно в отдельном скрипте с типом события "Выполнен SQL-запрос (https://simple-scada.com/help/script/sql-query-completed.html)". Пример получения значение из БД (для MySQL) см. по ссылке (https://simple-scada.com/help/script/getvardb.html). Для СУБД PostgreSQL скрипты будут выглядеть следующим образом:
var
aQuery: string;
begin
aQuery := 'SELECT "Znachenie" FROM "Value" WHERE "ID" = 1;';
RunSQL(aQuery, nil, 1);
end.
Скрипт с типом события "Выполнен SQL-запрос":
begin
if DataSet.Tag = 1 then
Peremennaya.Value:= DataSet[0].AsFloat;
end.
Проверить свой SQL-запрос и увидеть результат его выполнения можно используя приложение PgAdmin (https://simple-scada.com/help/manual/pgadmin.html), выполнив в нём требуемый SQL-запрос. Обработать ошибки выполнения SQL-запроса можно в скрипте "Ошибка SQL-запроса (https://simple-scada.com/help/script/sql-query-error.html)". Также для поиска ошибок в SQL-запросе можно включить опцию "Лог пользовательских SQL-запросов (https://simple-scada.com/help/manual/settings-simple-scada-server.html?anchor=other)". При активации данной опции все пользовательские SQL-запросы будут записываться в лог-файл сервера с указанием имени скрипта, из которого была вызвана процедура и текстом SQL-запроса. Таким образом, можно просмотреть нужный SQL-запрос, отправленный в БД, и проверить, нет ли в нем ошибок. Данную опцию можно использовать только для отладки проекта, иначе она будет создавать лишнюю нагрузку на сервер. После отладки опцию нужно обязательно выключить.
Здравствуйте.
Информацию по данной ошибке и ее устранению можно найти в интернете (https://dba.stackexchange.com/questions/211692/in-postgres-how-to-select-by-a-column-of-type-uuid). Вам нужно самостоятельно изучить синтаксис PostgreSQL и составлять запросы в соответствии с требованиями синтаксиса используемой СУБД. Запросы для скады не нужно никак менять. Их можно просто подставить в RunSQL в виде строки. Исключение: символы одинарных кавычек (т.к. в скаде одинарные кавычки используются для указания строки). Чтобы добавить строке одинарные кавычки (по краям) используйте функцию QuotedStr, либо дублируйте их (см. пример по ссылке (https://simple-scada.com/help/script/querytodb.html?anchor=quotes)). Подробное описание см. в руководстве по ссылке (https://simple-scada.com/help/script/querytodb.html).
Исправленный запрос:
aQuery := 'SELECT "Znachenie" FROM "Value" WHERE "ID" = ' + QuotedStr('18a5f8b-7ab4-7727-b7b2-b5f90c739dda') + ';';