Добрый день,
Есть алгоритм автоматического принятия показаний по приборам учета:
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: Алгоритм принятия показаний по нескольким счетчикам
Если очень приблизительно, то как-то так:
При выполнении SQL-запроса в одной из переменных будет кол-во записей в выборке. Далее вы создаете еще одну переменную как счетчик с начальным значением 0. После вставьте условие "Если равно" и сравнивайте эту переменную с переменной из SQL-запроса. Если еще не равно, то увеличивайте переменную на 1 (есть такая команда в Конструкторе), обработайте очередной счетчик и возвращайтесь на проверку "Если равно".
При выполнении SQL-запроса в одной из переменных будет кол-во записей в выборке. Далее вы создаете еще одну переменную как счетчик с начальным значением 0. После вставьте условие "Если равно" и сравнивайте эту переменную с переменной из SQL-запроса. Если еще не равно, то увеличивайте переменную на 1 (есть такая команда в Конструкторе), обработайте очередной счетчик и возвращайтесь на проверку "Если равно".
Re: Алгоритм принятия показаний по нескольким счетчикам
Спасибо большое! Буду сегодня пробовать
Re: Алгоритм принятия показаний по нескольким счетчикам
А подскажите, в программе есть команда "Выполнить SQL запрос"
Допустим, выполняем запрос SELECT * FROM p WHERE ls=sch
После выполнения запроса результат сохраняется в одну переменную (допустим, p1), кол-во записей в другую (допустим, c)
Как после этого обратиться к записям результата? Ещё одним SQL запросом, используя p1 как имя таблицы?
Что то типа:
SELECT * FROM p1 LIMIT 2,1
?
Допустим, выполняем запрос 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: Алгоритм принятия показаний по нескольким счетчикам
Да, вам нужно как-то выкрутиться, т.к. команда позволяет получить только первую строку из запроса. Т.е. перед циклом узнайте кол-во записей, а далее делайте запрос отдельно для каждого счетчика, пока не закончится цикл.
Re: Алгоритм принятия показаний по нескольким счетчикам
>>Да, вам нужно как-то выкрутиться, т.к. команда позволяет получить только первую строку из запроса.
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 и т. д.
?
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: Алгоритм принятия показаний по нескольким счетчикам
1) В выборке может быть несколько строк, но спробот даст доступ только к первой строке
2) Выполнится любой запрос.
2) Выполнится любой запрос.