Здравствуйте.
Обработать ошибки выполнения 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-запрос, отправленный в БД, и проверить, нет ли в нем ошибок. Данную опцию можно использовать только для отладки проекта, иначе она будет создавать лишнюю нагрузку на сервер. После отладки опцию нужно обязательно выключить.
У Вас в обоих скриптах "Add_Recipe_Form_Script" и "Edit_Recipe_Form_Script" в запросе добавляется лишняя запятая:
QuotedStr(FormData[fld_add_add_comp_4].AsStr) + ', ' +
и
'`comp_add_4`=' + QuotedStr(FormData[fld_edit_add_comp_4].AsStr) + ', ' +
Удалите их, тогда все будет работать правильно.
Также обратили внимание, что в проекте большое количество однотипных скриптов. Например скрипты "Image1_OnClick", "Image35_OnClick", "Image52_OnClick" и т.д. полностью идентичны. Все эти скрипты можно удалить и создать один универсальный (https://simple-scada.com/help/script/script-types.html):
begin
if Sender is TM_Image then // проверяем, что скрипт вызван изображением
with Sender as TM_Image do // приводим Sender к типу "TM_Image"
Value := not AsBool; // записываем в переменную обратное значение 0/1, 1/0
end.
Данный универсальный скрипт можно использовать сразу для всех изображений, по нажатию на которые необходимо менять значение переменной, связанной с этим изображением.
Скрипты "Image1_OnDataChange", "Image35_OnDataChange" и т.д. также полностью идентичны. Пример универсального скрипта для изменения цвета объекта можно найти в руководстве по ссылке (https://simple-scada.com/help/script/colorchange.html) (пример №2). По аналогии можно заменить все остальные скрипты, в которых используется одинаковый код.
Также, рекомендуем ознакомиться с разделами "Рекомендации по работе со скриптами (https://simple-scada.com/help/script/script-recomend.html)" и "Отладка скриптов (https://simple-scada.com/help/script/debugscripts.html)". Примеры наиболее часто используемых скриптов можно посмотреть по ссылке (https://simple-scada.com/help/script/sample-scripts.html).
А, и ещё момент: данный проект будет скидываться клиентам как "демонстрация возможностей". С картинками и анимациями - понятно, это необходимость, но у меня встаёт вопрос с БД - её можно как-то к проекту прикрепить, чтобы не было надобности разворачивать БД у того, кому скинут и устанавливать коннект с БД?
Коннект с базой должен быть установлен стандартными средствами, а все дополнительные таблицы в базу можно добавить так: написать текстовый файл, содержащий все SQL-запросы для добавления данных в базу, и при старте проекта скриптом загружать содержимое этого файла и отправлять в RunSQL.
Как-то так:
DROP TABLE IF EXISTS my_added_table;
CREATE TABLE my_added_table (
/* тут все столбцы, как надо */
);
INSERT INTO my_added_table VALUES ( /*строка 1*/);
INSERT INTO my_added_table VALUES ( /*строка 2*/);
// сколько надо строк
INSERT INTO my_added_table VALUES ( /*строка N*/);
Здравствуйте.
есть ли какой-нибудь скрипт, который бы обновлял таблицу по части id?
Если обязательно необходимо иметь нумерацию рецептов по порядку, то в таблицу рецептов "tblRecipes" можно добавить дополнительный столбец "№ рецепта" (колонку с id рецепта можно максимально уменьшить, чтобы она не отображалась – см. свойство колонки "Ширина (https://clck.ru/3GC9ML)"). После этого при выборке данных из таблицы БД, используя функцию "ROW_NUMBER" (https://sky.pro/wiki/sql/ranzhirovanie-elementov-po-kolichestvu-v-my-sql-row-number/) можно формировать дополнительный столбец с нумерацией по порядку. Пример запроса:
var
aQuery: string;
begin
aQuery := 'SELECT `id`, ROW_NUMBER() OVER (ORDER BY id) AS "№ рецепта", ' +
'`name`, `comp_1`, `comp_2`, `comp_3`, `comp_4`, ' +
'FROM `recipes`;';
tblRecipes.RunSQL(aQuery, tsSaveFixRow);
end.
При этом следует учитывать, что скрипты для кнопок "Изменить" и "Задействовать" необходимо отредактировать с учетом добавления нового столбца "№ рецепта" в таблицу рецептов "tblRecipes". Внесли соответствующие изменения в Ваш проект – во вложении. Перед тестированием перейдите в настройки подключения к БД через меню "Проект -> Настройки -> База данных" (https://simple-scada.com/help/manual/dbset.html) и укажите свои параметры для подключения к БД.
А, и ещё момент: данный проект будет скидываться клиентам как "демонстрация возможностей". С картинками и анимациями - понятно, это необходимость, но у меня встаёт вопрос с БД - её можно как-то к проекту прикрепить, чтобы не было надобности разворачивать БД у того, кому скинут и устанавливать коннект с БД?
Настроить подключение к БД (https://simple-scada.com/help/manual/dbset.html) можно только вручную. На ПК клиентов предварительно должна быть установлена СУБД. Если на ПК клиентов настройки подключения к БД будут аналогичные Вашим, то после копирования проекта вносить изменения в настройки не потребуется.
Создание собственной таблицы рецептов можно реализовать с помощью выполнения соответствующего SQL-запроса при первом запуске проекта (https://simple-scada.com/help/script/completely-started.html). Пример создания пользовательской таблицы в БД при запуске проекта можно найти в демо-проекте – скрипт "CreateRecipesTable".