Алгоритм принятия показаний по нескольким счетчикам

Ответы на вопросы "А может ли он сделать такое..?" или "Как сделать вот это..?"
Ответить
ittvkmn
Сообщения: 4
Зарегистрирован: 23 мар 2018, 15:31

Алгоритм принятия показаний по нескольким счетчикам

Сообщение ittvkmn »

Добрый день,

Есть алгоритм автоматического принятия показаний по приборам учета:

1. Поступление звонка от потребителя.
2. Ожидание 5 гудков.
3. Воспроизведение аудиозаписи о возможности автоматического приёма показаний.
4. Ввод "1", если передать в автоматическом режиме. Ввод 0, если сбросить звонок.
5. Если введено "1", тогда воспроизвести запись "Введите номер лицевого счёта (ЛС)".
6. Ввод номера ЛС.
7. Запись номера ЛС в переменную и проверка наличия ЛС в БД (Access или MS SQL) SQL запросом.
8. Если номер ЛС есть в базе, тогда воспроизвести наименования счетчиков и после каждого воспроизведения наименования записать показание по этому счетчику в базу (SQL запросом)
..
и т. д.

На 8-ом шаге появилось затруднение..
Подскажите, как в программе организовать цикл по записям результата SQL запроса (т. е. по всем счетчикам)?
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: Алгоритм принятия показаний по нескольким счетчикам

Сообщение sannx »

Если очень приблизительно, то как-то так:
При выполнении SQL-запроса в одной из переменных будет кол-во записей в выборке. Далее вы создаете еще одну переменную как счетчик с начальным значением 0. После вставьте условие "Если равно" и сравнивайте эту переменную с переменной из SQL-запроса. Если еще не равно, то увеличивайте переменную на 1 (есть такая команда в Конструкторе), обработайте очередной счетчик и возвращайтесь на проверку "Если равно".
ittvkmn
Сообщения: 4
Зарегистрирован: 23 мар 2018, 15:31

Re: Алгоритм принятия показаний по нескольким счетчикам

Сообщение ittvkmn »

Спасибо большое! Буду сегодня пробовать
ittvkmn
Сообщения: 4
Зарегистрирован: 23 мар 2018, 15:31

Re: Алгоритм принятия показаний по нескольким счетчикам

Сообщение ittvkmn »

А подскажите, в программе есть команда "Выполнить SQL запрос"
Допустим, выполняем запрос SELECT * FROM p WHERE ls=sch

После выполнения запроса результат сохраняется в одну переменную (допустим, p1), кол-во записей в другую (допустим, c)

Как после этого обратиться к записям результата? Ещё одним SQL запросом, используя p1 как имя таблицы?
Что то типа:
SELECT * FROM p1 LIMIT 2,1
?
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: Алгоритм принятия показаний по нескольким счетчикам

Сообщение sannx »

Да, вам нужно как-то выкрутиться, т.к. команда позволяет получить только первую строку из запроса. Т.е. перед циклом узнайте кол-во записей, а далее делайте запрос отдельно для каждого счетчика, пока не закончится цикл.
ittvkmn
Сообщения: 4
Зарегистрирован: 23 мар 2018, 15:31

Re: Алгоритм принятия показаний по нескольким счетчикам

Сообщение ittvkmn »

>>Да, вам нужно как-то выкрутиться, т.к. команда позволяет получить только первую строку из запроса.

1) Вы имели ввиду команда "Выполнить SQL запрос" позволяет получить только одну строку? Т. е. SELECT * FROM p WHERE ls=sch получит не все строки, а только одну?
2) Т. е. я не могу сделать SELECT * FROM p, а потом обходить так:
SELECT * FROM p1 LIMIT 1,1
SELECT * FROM p1 LIMIT 2,1
SELECT * FROM p1 LIMIT 3,1 и т. д.
?
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: Алгоритм принятия показаний по нескольким счетчикам

Сообщение sannx »

1) В выборке может быть несколько строк, но спробот даст доступ только к первой строке
2) Выполнится любой запрос.
Ответить