sibprogsistem wrote:builov.maikl wrote:Нет, нужно вполнить условие.
Если выбранный сотрудник является административным персоналом ( Administrative = 1) то ......
Сам запрос правильный и возвращает несколько Id, а вот сопоставление с выбранным в комбо боксе хромает.
FrmReportCard.CBStaff.sqlValue = SQLExecute('SELECT Staff.id FROM Staff JOIN DictPosition ON staff.id_DictPosition=DictPosition.id WHERE Administrative ={имя_комбобокса}')
http://myvisualdatabase.com/doc_ru/butt … query.html
К сожалению так не будет работать и не работает
FrmReportCard.CBStaff.sqlValue - Возвращает id выбранной записи в компоненте (одно значение)
Запрос вида:
SQLExecute('SELECT Staff.id FROM Staff JOIN DictPosition ON staff.id_DictPosition=DictPosition.id WHERE Administrative =1
- возвращает 12 записей
правильно обрабатывается только первая запись из 12 найденных результатов. Проверял меняя значения Administrative = с 1 на 0 в разных вариациях.
В теории нужно чтобы SQL возвращал только одну запись например FrmReportCard.CBStaff.sqlValue = 27 и SQLExecute = 27 (см. скриншот постом выше)
опять же теоретически к WHERE Administrative =1 добавить (AND) FrmReportCard.CBStaff.sqlValue = Staff.id и полученный код должен выглядеть так:
FrmReportCard.CBStaff.sqlValue = SQLExecute('SELECT Staff.id FROM Staff JOIN DictPosition ON staff.id_DictPosition=DictPosition.id WHERE Administrative =1 AND FrmReportCard.CBStaff.sqlValue = Staff.id')
но в этом случае ругается - no such column: FrmReportCard.CBStaff.sqlValue
Да, и на фигурные скобки в скрипте программа ругается.