1 (edited by savage 2014-09-29 10:39:34)

Topic: [Решено] Sql-запрос на кнопку поиска - нюансы

День добрый.
Есть такая проблема:
Необходимо было сделать сложный поиск с выводом в грид.
Собственно, код данного решения (спасибо DriveSoft):

SELECT Task_name, id_TaskType, strftime('%d.%m.%Y', start_PF), strftime('%d.%m.%Y',finishPL), strftime('%d.%m.%Y',finishFc), active_task, comments, id_users
FROM Tasks
WHERE ( Date(start_PF) <= Date({DateTimePicker2}) )  AND  (  ( (Date(finishFc) >= Date({DateTimePicker1})) OR (finishFc is null) ) )

Скрипт решает след. задачу - в грид должны выводиться только записи, удовлетворяющие следующему условию:
- дата старта Задачи (start_PF) должна быть <= дате конца периода:
- дата финиша Задачи (finishFc) должна быть >= дате начала периода;
- дата финиша Задачи (finishFc) может быть не заполнена;
Т.е. речь идет о  показе всех задач, которые продолжают выполняться в заданный период времени (включая те, которые начались до начала периода и закончились во время периода и те, которые, начавшись ранее (неважно когда) еще не закончились)

Все выводится и фильтр работает как надо, но есть небольшое но:
когда происходит фильтрация, то с выведенной в грид  информацией не получается сделать следующие стандартные действия:
- кнопка "Показать запись" - не отрабатывает, появляется окно "Не удалось определить идентификатор записи"
- не работает показ записей в нижнем гриде на основе выделенных в верхнем

Не подскажете, что я делаю не так?

2 (edited by zc13569 2014-09-29 10:34:20)

Re: [Решено] Sql-запрос на кнопку поиска - нюансы

добавь в запрос

tablename.id

3 (edited by savage 2014-09-29 11:52:15)

Re: [Решено] Sql-запрос на кнопку поиска - нюансы

zc13569, спасибо. Работает!

на всякий - ссылочка на эту тему для тех, кто сюда заглянет:
http://myvisualdatabase.com/help_ru/com … n_sql.html

4 (edited by savage 2014-09-29 12:10:03)

Re: [Решено] Sql-запрос на кнопку поиска - нюансы

кстати, в развитие темы - попробовал спрятать tablename.id через delete_col и не получилось - в гриде появилась колонка delete_col с данными...

Все, разобрался - надо было вносить заглавия колонок без пробелов

Re: [Решено] Sql-запрос на кнопку поиска - нюансы

опять в продолжение темы - т.к. у меня в выводе участвуют данные из нескольких таблиц, адаптировал скрипт под LEFT OUTER JOIN:

SELECT

Task_name,
TaskType.task_type,
strftime('%d.%m.%Y', start_PF),
strftime('%d.%m.%Y',finishPL),
strftime('%d.%m.%Y',finishFc),
active_task,
comments,
users.login,
Tasks.id as 'id'

FROM Tasks
LEFT OUTER JOIN TaskType ON Tasks.id_TaskType= TaskType.id
LEFT OUTER JOIN users ON Tasks.id_users= users.id

WHERE ( Date(start_PF) <= Date({DateTimePicker2}) )  AND  (  ( (Date(finishFc) >= Date({DateTimePicker1})) OR (finishFc is null) ) )

Все отрабатывает штатно, за исключением поля, где есть "Да/Нет" (active_task) - там стоят 1 или 0. понять, естественно, не сложно, что они означают, но...
Нужна помощь - не знаю как эти 1 и 0 преобразовать в Да и Нет.

Re: [Решено] Sql-запрос на кнопку поиска - нюансы

вместо active_task напишите так:

(case when active_task = 1 then 'Да' else 'Нет' end)
Dmitry.

Re: [Решено] Sql-запрос на кнопку поиска - нюансы

DriveSoft, благодарю!