Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое отрбражение данных в DBChart 
V
    Опции темы
vitay62
Дата 16.12.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.10.2008

Репутация: нет
Всего: нет



Здравствуйте!
Помогите, пожалуйста, решить проблему. Delphi7, DBE, Oracle8.1.7. Суть проблемы в следующем, есть несколько человек(пользователей), учет выполненых задач ими ведется в БД. Задача состоит в отображении графика за прошедший месяц по датам. Когда количество пользователей было фиксировано (например 4 человека) - проблема не возникала, т.к. в DBChart было внесено статически 4 серии и к каждой серии привязан свой SQL запрос. В настоящий момент количество пользователей заранее неизвестно, поэтому возникла необходимость создавать серии динамически вовремя выполнения запроса. В RunTime все выполняется нормально, без ошибок, но следующая создаваемая серия затирает пред'идущую. Подскажите, где я не прав? 

Код

procedure Button1Click(Sender: TObject);
var
x, i: Integer;
SR: TFastLineSeries;
begin
      Query1.Open;                            //Выборка персонала по фамилиям
        for x:= 0 to Query1.RecordCount - 1 do
          begin
            SR:= TFastLineSeries.Create(DBChart1);
            SR.ParentChart:= DBChart1;
            DBChart1.SeriesList.Add(Query1.FieldAddress('FAMILY'));
            SR.DataSource:= Query3;
            Query3.Close;                       //Выборка даныых для загрузки в DBChart
            Query3.ParamByName('DF').AsString:= Query1FAMILY.AsString;
            Query3.ParamByName('D').AsDate:= DateEdit1.Date;
            Query3.ParamByName('D1').AsDate:= DateEdit2.Date;
            Query3.SQL.BeginUpdate;
            Query3.Open;
              for i:= 0 to Query3.RecordCount do
                begin
                  {SR.Title:= Query1FAMILY.AsString;
                  SR.Marks.Visible:= True;
                  SR.XValues.DateTime:= True;
                  SR.XValues.ValueSource:= 'DATESTUDY';
                  SR.YValues.ValueSource:= 'COUNT(N_STUDY)';}
                  DBChart1.Series[x].Title:= Query1FAMILY.AsString;
                  DBChart1.Series[x].Marks.Visible:= True;
                  DBChart1.Series[x].XValues.DateTime:= True;
                  DBChart1.Series[x].XValues.ValueSource:= 'DATESTUDY';
                  DBChart1.Series[x].YValues.ValueSource:= 'COUNT(N_STUDY)';
                  Query3.Next;
                end;
            DBChart1.Series[x].Active:= True;
            Query1.Next;
          end;
        Query1.Close;
    end.


Заранее благодарен за помощь.

Это сообщение отредактировал(а) Rodman - 17.12.2008, 09:49
PM MAIL   Вверх
vitay62
Дата 19.12.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.10.2008

Репутация: нет
Всего: нет



Вопрос решен, созданием динамического компонеета TQuery, вместо статического Query3.

Код

procedure Button1Click(Sender: TObject);
var
x, i, n: Integer;
SR: TLineSeries;
Q: TQuery;
begin
  DBChart1.Title.Text.Clear;
  DBChart1.Title.Text.Add('Отчет за период: с:' + ' ' + DateToStr(DateEdit1.Date) + '  по:' + ' ' + DateToStr(DateEdit2.Date));
  if ComboBox1.ItemIndex = 0 then
    begin
      Query1.Open;         //Выборка персонала по фамилиям
        for x:= 0 to Query1.RecordCount - 1 do
          begin
            SR:= TLineSeries.Create(DBChart1);
            DBChart1.AddSeries(SR);
            DBChart1.Series[x].ParentChart:= DBChart1;
            SR.LinePen.Width:= 2;
            SR.Pointer.Visible:= True;
            SR.Pointer.Style:= psCircle;
            DBChart1.Series[x].Title:= Query1FAMILY.AsString;
            Query1.Next;
          end;
        for n:= 0 to DBChart1.SeriesCount - 1 do
          begin
            Q:= TQuery.Create(self);   //Выборка даныых для загрузки в DBChart
            Q.Close;
            Q.DatabaseName:= 'x';    
            Q.SQL.Text:= 'select datestudy, family, count(n_study) from study' + #13 +
                         'group by datestudy, family' + #13 +
                         'having (family = :DF) and (datestudy between :D and :D1)';
            Q.ParamByName('DF').AsString:= DBChart1.Series[n].Title;
            Q.ParamByName('D').AsDate:= DateEdit1.Date;
            Q.ParamByName('D1').AsDate:= DateEdit2.Date;
            Q.SQL.BeginUpdate;
            Q.Open;
            DBChart1.Series[n].DataSource:= Q;
              for i:= 0 to Q.RecordCount do
                begin
                  DBChart1.Series[n].Marks.Visible:= True;
                  DBChart1.Series[n].Marks.BackColor:= DBChart1.Series[n].ValueColor[n];
                  DBChart1.Series[n].Marks.Font.Color:= clBlack;
                  DBChart1.Series[n].Marks.Font.Style:= [fsBold];
                  DBChart1.Series[n].XValues.DateTime:= True;
                  DBChart1.Series[n].XValues.ValueSource:= 'DATESTUDY';
                  DBChart1.Series[n].YValues.ValueSource:= 'COUNT(N_STUDY)';
                  Q.Next;
                end;
          end;
      DBChart1.Refresh;
      Query1.Close;
    end;


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.