1 (edited by savage 2014-09-29 04:45:07)

Topic: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

Всем привет.
1 вопрос - как организовать поиск активных задач на конкретный период по полю finish_fact? Т.е. Отбор всех записей, у которых значение данного поля больше либо равно конкретной даты отбора, включая все записи, у которых поле finish_fact вообще еще не заполнено.
PS возможно, это и так реализовано, но я сейчас не рядом с ПК и не могу проверить.
2 вопрос - как сделать сохранение уже однажды выбранного периода по умолчанию? Т.е., чтобы при следующем входе в программу, он был выбран дефолтно.

с уважением,

savage

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

1. Это можно сделать с помощью кнопки с действием SQL запрос, запрос будет примерно такой

SELECT * FROM tablename 
WHERE  (Date(finish_fact) >= Date({DateTimePicker1}) OR (finish_fact is null)

2.
для сохранения даты

procedure Form1_OnClose (Sender: string; Action: string);
var
   ini: TIniFile;
   s: string;
begin
     ini := TiniFile.Create(ExtractFilePath(Application.ExeName) +'file.ini');
     ini.WriteDate('SectionName', 'ValueName', Form1.DateTimePicker1.DateTime);
     ini.Free;
end;

для загрузки даты

procedure Form1_OnShow (Sender: string; Action: string);
var
   ini: TIniFile;
   s: string;
begin
     ini := TiniFile.Create(ExtractFilePath(Application.ExeName) +'file.ini');
     Form1.DateTimePicker1.DateTime := ini.ReadDate('SectionName', 'ValueName', now);
     ini.Free;
end;
Dmitry.

3 (edited by savage 2014-09-28 21:33:14)

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

DriveSoft, второй вопрос - работает. Спасибо!

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

т.е. Ваш скрипт д.б. модифицирован (+ я еще добавил пару скобок):

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

DriveSoft , есть 2 вопроса:
1.  я не знаю как прописать, что 1 и 2 условие - жестко через AND , а 2 и 3 - через OR;
2. как сделать, чтобы грид после отрабатывания скрипта имел нормальные (как до обработки) надписи в шапке, а не названия полей из таблицы?

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

1. По моему в вашем запросе уже так и есть.


2. Заголовки колонок задаются там же, где прописывается SQL запрос, только чуть ниже в текстовом поле, через запятую.

Dmitry.

5 (edited by savage 2014-09-28 22:01:50)

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

1 немного не так. мне надо, чтобы запрос был такой:
(условие 1)  И  (условие 2 =  (условие 2.1) ИЛИ (условие 2.2))

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

не совсем ясно, зачем здесь знак равенства?
видимо должно быть так

(условие 1)  AND  (   (условие 2)  AND  ( (условие 2.1) OR (условие 2.2) )   )

Dmitry.

7 (edited by savage 2014-09-28 22:17:31)

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

должно быть так
(условие 1)  AND  (   ( (условие 2.1) OR (условие 2.2) )   )

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

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

осталось в эту конструкцию подставить ваши условия )

Dmitry.

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

DriveSoft wrote:

осталось в эту конструкцию подставить ваши условия )

)) попробую сейчас

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

выдает ошибку синтаксиса

SELECT Task_name, id_TaskType, start_PF, finishPL, finishFc, active_task, comments, id_users
FROM Tasks
WHERE  (Date(start_PF) <= Date({DateTimePicker2})) AND ((Date(finishFc) >= Date({DateTimePicker1}) OR (finishFc is null))

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

попробуйте так

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

Re: [Решено] DateTimePicker поведение, если unchecked или дефолтный отбор

DriveSoft, как всегда, Вы правы.  Скрипт Работает.
Закрываю эту тему, пошел "копать" дальше...