PDA

Просмотр полной версии : MasterScada4D + MySQL



for_kav
20.04.2021, 11:33
Добрый день, форумчане!

Требуется срочная помощь в выборке данных из БД MySQL средствами Скады.
у меня одна выборка получается, данные принимаю, но когда пытаюсь сделать новые запросы то ничего не приходит.
делал так:
1. сделал узел АРМ
2. создал в библиотеке новую структуру данных
3. создал в библиотеке новый ФБД на основе SqlRequestWithResult, где результату применил тип новой структуры
4. создал в АРМ подключения к БД, настроил его
5. сделал программу ФБД с новой библиотекой (п.3) прописал команду выборки
6. сделал новый параметр в АРМ с новым типом и в него привязал результат программы.
При такой конфигурации все работает, но как только я делаю по новой это с другой структурой и запросами, то программа начинает ругаться(
Ошибка запуска : Ошибка старта протокола ([string "VarMySQL_1_79179_Main"]:112: attempt to index a nil value (global 'SqlRequestWithResult_1')

Товарищи помогайте пожалуйста! Как делать разные запросы в одну БД??????????????????

for_kav
20.04.2021, 14:35
явно в наследование смотреть надо? как делается наследование?

VladGC
21.04.2021, 19:40
Добрый день, форумчане!

Требуется срочная помощь в выборке данных из БД MySQL средствами Скады.
у меня одна выборка получается, данные принимаю, но когда пытаюсь сделать новые запросы то ничего не приходит.
делал так:
1. сделал узел АРМ
2. создал в библиотеке новую структуру данных
3. создал в библиотеке новый ФБД на основе SqlRequestWithResult, где результату применил тип новой структуры
4. создал в АРМ подключения к БД, настроил его
5. сделал программу ФБД с новой библиотекой (п.3) прописал команду выборки
6. сделал новый параметр в АРМ с новым типом и в него привязал результат программы.
При такой конфигурации все работает, но как только я делаю по новой это с другой структурой и запросами, то программа начинает ругаться(
Ошибка запуска : Ошибка старта протокола ([string "VarMySQL_1_79179_Main"]:112: attempt to index a nil value (global 'SqlRequestWithResult_1')

Товарищи помогайте пожалуйста! Как делать разные запросы в одну БД??????????????????

Если данные хоть раз приняли то по идее все нормально должно работать. Покажите скриншот с протоколом и программой
Еще у меня запросы работают если названия полей структуры совпадают с результатом запроса.
Т.е. если запрос возвращает a,b,c то и структура должна быть такая, если что то не совпадает то не работает.
Так же на текущий момент есть проблема с размеров массива в результате запроса.
Например при первом запросе размер массива 100, а во втором 5, то массив остается 100. Что при выводе в таблицу получается каша. Обещали исправить

Несколько запросов означает что на вход команды SqlRequestWithResult подается текст запроса разный
Либо создать несколько ФБ SqlRequestWithResult. С нужными запросами.

Лично я запросы делаю не в программе, а в протоколе.
В свойствах протокола выставляю подключение и выполнение( а в самих запросах выполнение и опрос) по условию и когда надо дергаю нужные запросы

54749
54750

for_kav
22.04.2021, 12:16
Если данные хоть раз приняли то по идее все нормально должно работать. Покажите скриншот с протоколом и программой
Еще у меня запросы работают если названия полей структуры совпадают с результатом запроса.
Т.е. если запрос возвращает a,b,c то и структура должна быть такая, если что то не совпадает то не работает.
Так же на текущий момент есть проблема с размеров массива в результате запроса.
Например при первом запросе размер массива 100, а во втором 5, то массив остается 100. Что при выводе в таблицу получается каша. Обещали исправить

Несколько запросов означает что на вход команды SqlRequestWithResult подается текст запроса разный
Либо создать несколько ФБ SqlRequestWithResult. С нужными запросами.

Лично я запросы делаю не в программе, а в протоколе.
В свойствах протокола выставляю подключение и выполнение( а в самих запросах выполнение и опрос) по условию и когда надо дергаю нужные запросы

54749
54750

вот как раз и нужно создать несколько ФБ SqlRequestWithResult, только результат массив с разными наборами, т.е. тип разный.
разобрался с наследованием. нужно в библиотеке сделать наследника этого ФБ и тогда работать начинает.

Делал в новой версии от 31.03.
на счет выборки массивов - подтверждаю! каша! если данные поменялись то массив каждый раз не сбрасывается а заполняется(

VladGC
22.04.2021, 14:35
вот как раз и нужно создать несколько ФБ SqlRequestWithResult, только результат массив с разными наборами, т.е. тип разный.
разобрался с наследованием. нужно в библиотеке сделать наследника этого ФБ и тогда работать начинает.

Делал в новой версии от 31.03.
на счет выборки массивов - подтверждаю! каша! если данные поменялись то массив каждый раз не сбрасывается а заполняется(

Проще все таки делать запросы не в программе, а в самом протоколе создать запрос. В сложных запросах я замучился экранировать спец символы.

Так же столкнулся с ограничением на выполнение запроса символов в котором более 2000. Но это запрос через непосредственно запрос, а не в программе.
В итоге сейчас в бд создаю необходимые запросы в виде функций, а в скаде уже дергаю функцию с нужными мне параметрами.

Можно запихнуть результат запроса в отчет. В отчете он будет отображаться нормально .

for_kav
22.04.2021, 14:39
спасибо за консультацию.