CLASSIC ASP - Do While / Loop с проблемой 3 условий - PullRequest
0 голосов
/ 07 мая 2018

У меня есть ВЫБОР с:

СТАТУС -1, 0 и 1.

ВЫБРАТЬ Устав:

SQL= "SELECT * FROM MYTABLE ORDER BY STATUS DESC" 
SET MYDB = conn.Execute(SQL)

Моя проблема:

Разделите SELECT на две части с помощью DO WHiLE / LOOP

ЧАСТЬ 1:

  • "НЕ EOF", конечно
  • ВСЕ СТАТУС 1 (предел регистра приоритета и отмены)
  • Ограничение до XX регистров (переменная - TOTALREG)
  • НЕТ СТАТУСА -1

** STATUS 1 является статусом «Одобрено» и может отменять ограничение регистров.

У меня есть класс с 20 учениками. (лимит регистров) но я могу перебронировать это и сделать урок с 21, 22, 23 студентами - с «СОСТОЯНИЕ 1» = утверждено.

Если у меня есть только 15 утвержденных - я завершу предел регистров с первыми 5 "STATUS 0" (Ожидание подтверждения).

ЧАСТЬ 2:

  • Остальная часть SELECT

Я получил частичное решение с этим:

DO WHILE (((NOT MYDB.EOF) AND (CINT(COUNTREG) <= CINT(TOTALREG))) OR ((NOT MYDB.EOF) AND (MYDB("STATUS") > 0 ))) AND ((NOT MYDB.EOF) AND (MYDB("STATUS") > -1 ))    
  • ЕСЛИ у нас есть вакансии: (NOT MYDB.EOF) AND (CINT(COUNTREG) <= CINT(TOTALREG))
  • ЕСЛИ реестр утвержден: (NOT MYDB.EOF) AND (MYDB("STATUS") > 0 )
  • Исключить неподтвержденные регистры (статус -1): (NOT MYDB.EOF) AND (MYDB("STATUS") > -1 )




- COUNTREG = будет увеличиваться для каждого регистра внутри LOOP (countreg = countreg + 1)
- TOTALREG = является переменной (количество человек, допускаемых в классе)

Работает со всеми ситуациями .. но когда у меня нет регистров со STATUS = -1 - я получил ошибку '80020009'

почему? есть идеи?

...