Sayfayı Yazdır | Pencereyi Kapat

Döngü içerisinde chart oluşturma

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1213
Tarih: 10 Mart 2026 Saat 05:10
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Döngü içerisinde chart oluşturma
Mesajı Yazan: Gökçe ulusoy
Konu: Döngü içerisinde chart oluşturma
Mesaj Tarihi: 24 Ekim 2025 Saat 11:23
function AddDataToChart(SelectedYear:String):String;    
 {
    try
      Clomosy.DBSQLServerQuery.SQL.Text=
      'SELECT SUM(Quantity) AS SALES,  
      YEAR(OrderDate) AS YEAR,  
      MONTH(OrderDate) AS AY  
      FROM Orders 
      WHERE YEAR(OrderDate) = :SelectedYear
      GROUP BY YEAR(OrderDate), MONTH(OrderDate) 
      ORDER BY MONTH(OrderDate)';

      Clomosy.DBSQLServerQuery.ParamByName('SelectedYear').Value = SelectedYear;
      Clomosy.DBSQLServerQuery.ExecSQL;
      Clomosy.DBSQLServerQuery.Connection.Commit;

      if (not Clomosy.DBSQLServerQuery.Found)
      {
        FOR (i=0 to Length(j))
        {
        //Chart1=TCLChart.Create(self);
        Chart1=Form2.AddNewChart(ChartPanel, Chart1, 'Aylık Sipariş');
        //Chart1.Parent=ChartPanel;
        Chart1.Width = 75;
        Chart1.Height = 275;
        Chart1.Align = alBottom;
        Chart1.Margins.Bottom = 5;
        Chart1.Margins.Left = 10;
        Chart1.Margins.Right = 10;
        Chart1.ChartType = clCBar;
        Chart1.XAxisText = 'AY';
        Chart1.ChartItemText = 'YEAR'; // SQL'deki alias'ı
        Chart1.ChartItemsValue = 'SALES';
        Chart1.ChartTitle = 'Aylık Satış Grafiği';
        Chart1.clLoadDataFromDataSet(Clomosy.DBSQLServerQuery);
        }
      }
      else
        ShowMessage('Bu yıla ait veri bulunamadı.');
    except
      ShowMessage('Exception class: '+LastExceptionClassName+' Exception Message: ' +LastExceptionMessage);
    }
  }  


void LoadtoCombo
 {
   try
     Clomosy.DBSQLServerQuery.Sql.Text=('SELECT DISTINCT(Year(OrderDate)) AS YEAR  FROM Orders');
     
     Clomosy.DBSQLServerQuery.Open;
     j=0;
     while (not Clomosy.DBSQLServerQuery.Eof)
     {
       
       ComboBox.AddItem(Clomosy.DBSQLServerQuery.FieldByName('YEAR').AsString,IntToStr(j));
       Clomosy.DBSQLServerQuery.Next;
       ShowMessage(IntToStr(j));
       j=j+1;
     }
     
   finally
     Clomosy.DBSQLServerQuery.Close;
   }
}  
 

void ComboChange

  if (ComboBox.ItemIndex > -1) 
  {
    SelectedYear = StrToInt(ComboBox.Items[ComboBox.ItemIndex]);
    AddDataToChart(SelectedYear);
  }
}

void ComboChanged
  if (ComboBox.ItemIndex > -1) 
  {
    Chart1.Series.Clear;
    SelectedYear = StrToInt(ComboBox.Items[ComboBox.ItemIndex]);
    AddDataToChart(SelectedYear);
  }
LoadtoCombo;
ComboChange;
ComboBox.OnChange = 'ComboChanged';

Merhabalar Yıllara göre aylık satış miktarının gelmesini istiyorum ama chartı yenileyemediğimden ötürü sadece bir kere oluşuyor her combobox değer değiştiginde o değere göre chart gelmesini nasıl sağlayabilirim.



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 30 Ekim 2025 Saat 09:10
Merhaba Gökçe, 
Aşağıda ki kodu inceleyebilir misin? 
//Seçilen yılın aylık aktif müşteri sayısının grafiği
void OlusturAylikChart
  var 
  secilenYil : String;
  Qry : TclSQLQuery;
  LblAylik : TClProLabel;
{
  try
  {
    secilenYil = cbZamanMusteri.Items[cbZamanMusteri.ItemIndex];

    Qry = Clomosy.DBSQLServerQueryWith(
      'SELECT FORMAT(OrderDate, ''MM'') AS Zaman, ' +
      'COUNT(DISTINCT CustomerId) AS AktifMusteri ' +
      'FROM Orders ' +
      'WHERE YEAR(OrderDate) = ' + secilenYil + ' ' +
      'GROUP BY FORMAT(OrderDate, ''MM'') ' +
      'ORDER BY Zaman'
    );

    Qry.Open;

    if not Qry.IsEmpty
    {
      zamanMusteriAyChart = MyForm.AddNewChart(PnlZamanMusteriChart, 'zamanMusteriAyChart', '');
      zamanMusteriAyChart.Margins.Left = 5;
      zamanMusteriAyChart.Margins.Right = 5;
      zamanMusteriAyChart.Margins.Bottom = 5;
      zamanMusteriAyChart.Align = alClient;
      zamanMusteriAyChart.Charttype = clCLine;
      zamanMusteriAyChart.XAxisText = 'Zaman';
      zamanMusteriAyChart.ChartItemText = 'Müşteri';
      zamanMusteriAyChart.ChartItemsValue = 'AktifMusteri';
      zamanMusteriAyChart.clLoadDataFromDataSet(Qry);
      
      LblAylik = MyForm.AddNewProLabel(zamanMusteriAyChart, 'LblAylik', secilenYil + ' Yılı Aylık Aktif Müşteri Sayısı');
      LblAylik.Align = alTop;
      LblAylik.Height = 30;
      LblAylik.Width = 350;
      LblAylik.clProSettings.FontHorzAlign = palcenter;
      LblAylik.Margins.Bottom = 4;
      LblAylik.clProSettings.FontSize = 18;
      LblAylik.clProSettings.TextSettings.Font.Style = [fsBold];
      LblAylik.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
      LblAylik.clProSettings.BackgroundColor = clAlphaColor.clHexToColor(renk_P1G1);
      LblAylik.clProSettings.BorderColor = clAlphaColor.clHexToColor(renk_P1G1);
      LblAylik.clProSettings.BorderWidth = 2;
      LblAylik.SetclProSettings(LblAylik.clProSettings);

      clRTMethod(LblAylik,'BringTofront');
    }
  }
  except
    ShowMessage('Aylık Chart hatası: ' + LastExceptionMessage);
  }
  Qry.Free;
}



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net