1 (edited by zc13569 2014-10-01 07:30:08)

Topic: несколько отчетов по 1 кнопке + еще вопрос по дате

Добрый день, подскажите, можно ли реализовать такую схему: Имеем 1 кнопку "отчет", имеем комбобокс с наименованиями типов отчетов, выбираем нужный, жмем "Отчет", формируется необходимый отчет.?

Re: несколько отчетов по 1 кнопке + еще вопрос по дате

Приветствую,


можно, создайте кнопки, которые будут вызывать нужные отчеты, затем их можно спрятать, например за пределами формы.
затем создайте событие OnClick от кнопки, по которой пользователь будет кликать для запуска отчета.

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
     if Form1.ComboBox1.dbItemID = 1 then Form1.ButtonReport1.Click;
     if Form1.ComboBox1.dbItemID = 2 then Form1.ButtonReport2.Click;
     if Form1.ComboBox1.dbItemID = 3 then Form1.ButtonReport3.Click;         
end;

Здесь мы проверяем, какой пункт был вабран из ComboBox, и в зависимости от этого, программно кликаем по нужной кнопке для вызова отчета.

Dmitry.

3 (edited by zc13569 2014-10-01 07:30:22)

Re: несколько отчетов по 1 кнопке + еще вопрос по дате

Спасибо! Можно еще тут же один вопросик:
Как при смене значения комбобокс, сохранить в базу текущую дату?

Re: несколько отчетов по 1 кнопке + еще вопрос по дате

вопрос задан слишком расплывчато )
примерно это можно сделать скриптом и SQL:

SQLExecute('INSERT INTO users (datefield) VALUES ("' + FormatDateTime('yyyy-MM-DD 00:00:00.000', frmForm2.DateTimePicker1.DateTime) + '");');
Dmitry.

5 (edited by zc13569 2014-10-01 11:05:12)

Re: несколько отчетов по 1 кнопке + еще вопрос по дате

DriveSoft wrote:

вопрос задан слишком расплывчато )
примерно это можно сделать скриптом и SQL:

SQLExecute('INSERT INTO users (datefield) VALUES ("' + FormatDateTime('yyyy-MM-DD 00:00:00.000', frmForm2.DateTimePicker1.DateTime) + '");');

У записи есть определенные статусы типа "готово", "в работе", "отложено"(комбобокс). При добавлении записи автоматически присваивается статус "в работе", и я хочу чтобы при смене этого статуса например на "готово" была записана дата, чтобы потом вывести все это дело в отчет.

Ваш пример вроде работает, только сохраняет дату не к той строке таблицы, запись которой редактируется, а создает новую и записывает туда

Re: несколько отчетов по 1 кнопке + еще вопрос по дате

Тогда лучше сделать по другому, у ComboBox создать событие OnChange

procedure Form2_ComboBox_OnChange (Sender: string);
begin
     if Form2.ComboBox.dbItemID = 1 then  // если выбран нужный пункт
        Form2.DateTimePicker1.Checked := True // тогда задействуем компонент для ввода даты
        else Form2.DateTimePicker1.Checked := False;  // иначе дата не пишется              
end;

и создать событие для формы OnShow

procedure Form2_OnShow (Sender: string; Action: string);
begin
     Form2_ComboBox_OnChange (''); // вызываем событие у ComboBox, чтобы при появлении формы это также работало
end;
Dmitry.

7 (edited by zc13569 2014-10-02 14:01:37)

Re: несколько отчетов по 1 кнопке + еще вопрос по дате

вытекающий вопрос, как сделать так чтобы при изменении статуса  с записанной датой, на другой, дата менялась (сейчас дата остается той же). Но в тоже время хотелось бы чтобы при ошибочном выборе того же статуса дата не менялась. Надеюсь вопрос понятен.

Re: несколько отчетов по 1 кнопке + еще вопрос по дате

менялась на что? на текущую дату? тогда так

procedure Form2_ComboBox_OnChange (Sender: string);
begin
     if Form2.ComboBox.dbItemID = 1 then  // если выбран нужный пункт
     begin     
           Form2.DateTimePicker1.Checked := True // тогда задействуем компонент для ввода даты
           Form2.DateTimePicker1.DateTime := now; // устанавливаем текущую дату для компонента
     end else Form2.DateTimePicker1.Checked := False;  // иначе дата не пишется              
end;

по второй части вопроса, не совсем понял, как можно угадать, ошибочно меняется статус или нет?

Dmitry.