Юрий К.
Junior Member / Новичок
Участник № / Member № 3684
отправлено / posted
Здравствуйте, уважаемая техподдержка.! Не могли бы вы отправить мне пример организации нескольких SQL-запросов подряд в одной программе (с ожиданием выполнения каждого запроса) с реализацией алгоритма : “Если в реальном значении канала Call вызова шаблона связи СУБД появился 0, то запрос выполнен “. Заранее благодарен.
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
IF (ARG_000 == 1) then \\ проверка старта цикла ARG_006 = 1; \\выполнение первого запроса ARG_000 = 2; \\ переход на второй запрос end_if; IF (ARG_000 == 2) and (ARG_001 == 0) then \\проверка окончания первого запроса ARG_007 = 1; \\старт второго запроса ARG_000 = 3; \\ переход на третий запрос end_if;
Юрий К.
Junior Member / Новичок
Участник № / Member № 3684
отправлено / posted
Можно по-подробнее, а еще лучше бы пример. Мне нужно, чтобы за один проход программы выполнялось 3 SQL-запроса. Я написал программу: m1: IF ARG_005 != 0 THEN goto m1; END_IF; ARG_004 = 1; \\ Запрос 1 m2: IF ARG_005 != 0 THEN goto m2; END_IF; ARG_004 = 2; \\ Запрос 2 m3: IF ARG_005 != 0 THEN goto m3; END_IF; ARG_004 = 3; \\ Запрос 3 где ARG_004 - с База_данных№1:Входное значение, ARG_005 - с База_данных№1:Реальное значение. Получилось,что в каждом цикле вызова программы отрабатывается только Запрос 3 - остальные "пролетают"
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Вам был дан полный пример. Берите и пользуйтесь. Подробнее даже не знаем как написать. Старайтесь не использовать операторы GOTO.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Юрий К.
Junior Member / Новичок
Участник № / Member № 3684
отправлено / posted
Тогда скажите по привязкам аргументов в вашей программе: ARG_001(IN,USINT) - Сall База_данных№1:Реальное значение -? ARG_006(OUT,USINT) - Сall База_данных№1:Входное значение -? ARG_007(OUT,USINT) - Сall База_данных№1:Входное значение -?
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Если у Вас канал один связи с БД, то Вам хватит одного аргумента (вместо ARG_006 и 007), и приравнивать его к разным запросам
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Юрий К.
Junior Member / Новичок
Участник № / Member № 3684
Юрий К.
Junior Member / Новичок
Участник № / Member № 3684
отправлено / posted
Начал реализовывать Ваш алгоритм - и опять столкнулся с трудностями. Как для запуска цикла SQL-запросов присвоить ARG_000 = 1. Я думаю, что нада ее сделать глобальной переменной и привязать к кнопке. Но как это сделать - не знаю!
Сообщения / Posts 5 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Day13
Junior Member / Новичок
Участник № / Member № 3734
отправлено / posted
Подскажите как сделать чтобы программа запускалась при старте МРВ. Я создал аргумент экрана и установил значение по умолчанию "1", но при старте значение не пересылается в программу. А если делать через кнопку, то все нормально, но такой вариант не подходит.
Сообщения / Posts 8 | Из / From: Россия
| IP / IP: IP адрес / IP address |
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069
отправлено / posted
Здравствуйте! По мотивам примеров выше написал подобный скрипт, но, в отличие от приера, он запускается сам каждую минуту. Текст скрипта: IF (Номер_исп_запроса == 1) then _DBASE__Запись_данных_OUT = 1; Номер_исп_запроса = 2; Счетчик_циклов = _DBASE__Запись_данных_R_In;
repeat Счетчик_циклов = _DBASE__Запись_данных_R_In; until (Счетчик_циклов!=0) end_repeat; end_if;
IF (Номер_исп_запроса == 2) and (_DBASE__Запись_данных_R_In==0) then
repeat Счетчик_циклов = _DBASE__Запись_данных_R_In; until (Счетчик_циклов!=0) end_repeat; end_if; и т.д.
Дело в том, что ни пример выше, ни любые модификации моего скрипта у меня не работают как нужно. В любом случае происходит выполнение последнего запроса, в независимости сколько их всего. Что же я делаю не так? mysql 5.0
Сообщения / Posts 70 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Ошибка состоит в том, что оператор repeat здесь применять нельзя, т.к. в ходе выполнения программы аргумент _DBASE__Запись_данных_R_In не изменяется. Наши рекомендации от 25.06.2009 - рабочие. Видимо, в реализации его Вы допустили ошибки. Пришлите, пожалуйста, на hotline3@adastra.ru Ваш пример проекта реализации НАШИХ рекомендаций с пояснениями.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069
отправлено / posted
В данном примере при изменении переменной «Счетчик» на 1, выполняется только 1-ый запрос, остальные не проходят!
Сообщения / Posts 70 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Проверил проект. Должны последовательно выполняться 3 запроса.
Чтобы убедиться, что у Вас выполнятся только первый запрос, проделайте следующее: Поставьте флаг "Отладка" для каналов вызова шаблонов связей с СУБД. В папке узла проекта создайте cnf-файл с ключом DEBUG=40000 ( для релиза 6.07.7 ). Далее запустите проект и нажмите на кнопу "Выполнить запросы". После этого остановите проект и отправьте на hotline3@adastra.ru файл протокола профайлера и файл tm6_log.txt.
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069
отправлено / posted
В моем проекте источник данных один! Это важно. Возможно ли сделать несколько запросов на одном источнике? Высылаю пример. Там все время выполняется только первый запрос и не один раз.
Сообщения / Posts 70 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
В случае одного шаблона связи в СУБД во входное значение канала вызова шаблона нужно последовательно подавать число, соответствующее номеру SQL-запроса. Реализовать программу можно аналогично примеру, приведенному выше для нескольких шаблонов.
В присланном Вами проекте в программе нет условия, обеспечивающего ожидания выполнения SQL-запроса по реальному значению канала вызова шаблона. Это и приводит к тому, что из трех запросов выполнятеся только первый.
отправлено / posted
Вышлите пожалуйста пример проекта с программой, реализующей последовательное выполнение запросов.
Сообщения / Posts 112 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
К сожалению, за давностью времени пример проекта не сохранен. Суть процедуры состоит в том, что в программе, последовательно реализующей несколько SQL-запросов одного шаблона, условием запуска следующего запроса является завершение предыдущего. Факт завершения запроса определяется по равенству нулю ВХОДНОГО_ЗНАЧЕНИЯ канала CALL.SQL.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Plumber
Forum Haunter / Завсегдатай форума
Участник № / Member № 7942
отправлено / posted
Доброго дня,уважаемая техподдержка.У меня к вам несколько вопросов.Вопрос первый-будет работать программа в таком виде и почему при компиляции выдает синтаксическую ошибку в первой строке?
Plumber
Forum Haunter / Завсегдатай форума
Участник № / Member № 7942
отправлено / posted
Да извините задача для начала: нужно отправить 3 запроса в разные строки таблицы автоматически.
Сообщения / Posts 105 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Щелкните два раза по ошибке в сообщениях, курсор переместится на саму ошибку. Из скрина видно, что комментарии неправильно объявлены. См. справку: Программирование алгоритмов - описание языка Техно ST - Лексическая структура языка Техно ST - Комментарии Техно ST. Необходимы символы "//", тогда как в программе "\\". После правильного объявления комментария, его текст изменит цвет на серый.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Plumber
Forum Haunter / Завсегдатай форума
Участник № / Member № 7942
отправлено / posted
А работать программа будет? аргументы правильные? И второй вопрос: как вывести на ГЭ ЭТИ значения? Заранее благодарен.
Сообщения / Posts 105 | Из / From: Россия
| IP / IP: IP адрес / IP address |