我正在顯示參加TDBChart上的電影節目的人數,節目的日期是X軸,人的數量是Y軸。不同電影之間的分割由堆疊列表示。TDBChart X軸不正確/略過的值
我通過爲每部電影創建一個小節系列(動態創建)來實現這一點。但是當我顯示超過兩部電影的數據時,所有日期都不會顯示在X軸上,只會添加第一個系列(電影)的日期。進一步的系列只是擠進了第一輯的日期。
在這裏你只看到幽靈公主的圖表,日期是正確的。 日期範圍選擇器此刻不做任何事情。
但是當你把它們放在一起收割數據被扔進公主Mononokes日期即使死神不會顯示在幽靈公主的日期。並且Reapers日期完全被省略了。
這是添加系列(電影)的代碼,我也爲該系列動態創建SQL查詢。 qryStatMovieSelection就是所有選中的電影。 我真的不知道如何處理這一個,任何想法?
DataModule1.qryStatMovieSelection.First;
for iCount := 0 to iSelectedMovies - 1 do
begin
arrQryDateCustomers[iCount] := TADOQuery.Create(Self);
With arrQryDateCustomers[iCount] do
begin
Connection := conCinema;
SQL.Clear;
SQL.Add(
'SELECT Movies.MovieID, Name, ShowDate,(SUM(NormalTickets) + SUM(ChildTickets) + SUM(SeniorTickets)) AS SeatsBooked');
SQL.Add('FROM Movies, Invoice, Shows');
SQL.Add('WHERE Invoice.ShowID = Shows.ShowID AND Shows.MovieID = Movies.MovieID');
// MovieID in selected table
SQL.Add('AND Movies.MovieID = '+ DataModule1.qryStatMovieSelection.FieldByName('MovieID').AsString);
SQL.Add('GROUP BY Movies.MovieID, Name, ShowDate');
Open;
end;
//create series
arrBarSeriesMovies[iCount] := TBarSeries.Create(Self);
With arrBarSeriesMovies[iCount] do
begin
ParentChart := crtStatistics;
YValues.ValueSource := 'SeatsBooked';
XValues.DateTime := True;
XLabelsSource := 'ShowDate';
DataSource := arrQryDateCustomers[iCount];
MultiBar := mbStacked;
Marks.Style := smsValue;
Marks.ArrowLength := -20;
Color := arrColor[iCount];
Title := DataModule1.qryStatMovieSelection.FieldByName('Name').AsString;
Active := True;
end;
DataModule1.qryStatMovieSelection.Next;
end;
end
你可能尋找'MultiBar'的'mbSideAll'風格。 – Victoria
對於那些想玩你的代碼的人來說,這裏是反向工程模式http://sqlfiddle.com/#!5/1d928/5。 – Victoria
這不是mbSideAll,我希望酒吧堆疊,但只有當他們的日期是相同的。否則,他們會與他們自己的約會形成另一個酒吧 – epep