Mungkin tidak semua pengguna Access mengetahui bahwa aplikasi database ini mempunyai kemampuan dalam menyajikan grafik layaknya sebuah spreadsheet macam Excel. Bahkan kita bisa menampilkan grafik secara dinamis, di mana data bisa kita ubah sesuai dengan parameter/variabel yang dimasukkan.
Pada posting berikut ini, kita akan membuat grafik yang bisa berubah secara dinamis, sesuai dengan variabel yang dimasukkan. Untuk itu, kita akan menggunakan database grafik yang sudah kita buat sebelumnya di posting yang berjudul Membuat Grafik di Form Menggunakan Wizard. Bagi yang belum mempunyai file database grafik itu, silakan download pada link download yang tersedia di bawah. Adapun, file database yang didownload bernama grafikPemula.zip, sedangkan isi dari file zip itu adalah grafik.accdb yang terdiri dari dua buah objek di dalamnya. Objek pertama adalah table yang bernama tblSalesSummary, sedangkan objek yang kedua adalah form yang bernama frmGrafik.
Untuk membuat grafik dinamis, ikuti petunjuk di bawah ini.
Langkah selanjutnya, kita memodifikasi chart control yang bernama crtGrafik dengan menambahkan kode VBA di modul form Form_frmGrafik. Sisipkan kode VBA berikut ini: Pada event procedure Private Sub cmdTampilkan_Click(), sisipkan deklarasi variabel sebagai berikut:
Me.crtGrafik.Requery
Selanjutnya, kita mengatur batas minimum dan maksimun ketinggian sumbu vertikal dari grafik yang sifatnya konstan. Caranya adalah dengan menurunkan nilai minimum bila di sumbu x ada nilai negatif terendah (di bawah nol) dan menaikkan nilai maksimumbila di sumbu x ada nilai positif tertinggi (di atas nol).
cht.ChartTitle.Text = "Grafik Penjualan Berdasarkan " & Me.cbbKategori
Untuk mengatur sumbu vertikal, kita menggunakan kode vba berikut ini:
Bagi pembaca yang ingin memperolah file sample grafik dinamis yang dibuat dengan menggunakan kode VBA, silakan ikuti petunjuk di bawah ini:
Gambar 1. Bagian-bagian chart di Access |
Pada posting berikut ini, kita akan membuat grafik yang bisa berubah secara dinamis, sesuai dengan variabel yang dimasukkan. Untuk itu, kita akan menggunakan database grafik yang sudah kita buat sebelumnya di posting yang berjudul Membuat Grafik di Form Menggunakan Wizard. Bagi yang belum mempunyai file database grafik itu, silakan download pada link download yang tersedia di bawah. Adapun, file database yang didownload bernama grafikPemula.zip, sedangkan isi dari file zip itu adalah grafik.accdb yang terdiri dari dua buah objek di dalamnya. Objek pertama adalah table yang bernama tblSalesSummary, sedangkan objek yang kedua adalah form yang bernama frmGrafik.
Untuk membuat grafik dinamis, ikuti petunjuk di bawah ini.
- Buka Design View dari form frmGrafik yang ada di file grafik.accdb.
- Sisipkan form header/footer, caranya, pada area form, klik mouse kanan untuk menampilkan shortcut dan pilih show Form header/Footer.
- Di dalam Form header, sisipkan sebuah combo box dengan properti sebagai berikut:
- Name=cbbKategori
- Row Source Type= Field List
- Row Source="SELECT Spec, Country, Region FROM tblSalesSummary"
- Masih dalam Form header, sisipkan sebuah tombol perintah (command button) dengan properti sebagai berikut:
- Name=cmdTampilkan
- Caption=Tampilkan
- On Click=[Event Procedure]
Langkah selanjutnya, kita memodifikasi chart control yang bernama crtGrafik dengan menambahkan kode VBA di modul form Form_frmGrafik. Sisipkan kode VBA berikut ini: Pada event procedure Private Sub cmdTampilkan_Click(), sisipkan deklarasi variabel sebagai berikut:
- Dim cht As Graph.Chart, melakukan pengaturan global untuk objek yang berupa chart control yang bernama crtGrafik.
- Dim chtSeries As Graph.Series, digunakan untuk merinci object series dari cht
- Dim chtLabel As Graph.DataLabel, digunakan untuk merinci label object yang ada di cht
- Dim strSql As String, digunakan untuk mengatur row source dari chart control yang bernama crtGrafik
- Dim strSql1 As String Dim dblMax, dblMin As Double, digunakan untuk mengatur tinggi minimum dan maksimum dari grafik
- Dim byAxisTitleSize As Byte, digunakan untuk mengatur ukuran font.
- Dim qdf As dao.QueryDef, digunakan untuk membuat query temporer.
- strSql = "SELECT [" & Me.cbbKategori & "],format(Sum([WeightInKg]),'#,###.00') AS [Weight] FROM tblSalesSummary GROUP BY [" & Me.cbbKategori & "]"
- Me.crtGrafik.RowSource = strSql
Me.crtGrafik.Requery
Selanjutnya, kita mengatur batas minimum dan maksimun ketinggian sumbu vertikal dari grafik yang sifatnya konstan. Caranya adalah dengan menurunkan nilai minimum bila di sumbu x ada nilai negatif terendah (di bawah nol) dan menaikkan nilai maksimumbila di sumbu x ada nilai positif tertinggi (di atas nol).
- strSql1 = "SELECT [" & Me.cbbKategori & "],Sum([WeightInKg]) AS [Weight] FROM tblSalesSummary GROUP BY [" & Me.cbbKategori & "]"
- Set qdf = CurrentDb.CreateQueryDef("ss", strSql1)
- dblMax = CDbl(DMax("[Weight]", qdf.Name)) * 1.15
- dblMax = Round(dblMax / 1000000, 2) * 1000000dblMin = CDbl(DMin("[Weight]", qdf.Name)) * 1.15
- dblMin = Round(dblMin / 1000000, 2) * 1000000
- CurrentDb.QueryDefs.Delete qdf.Name
- byAxisTitleSize = 12, digunakan untuk mengatur ukuran font secara umum.
- Set cht = Me.crtGrafik.Object, menetapkan variabel cht sebagai objek dari chart control yang bernama crtGrafik
- cht.Floor.Interior.Color = vbWhite, mengatur warna latar belakang menjadi putih.
- cht.Application.PlotBy = xlColumns, mengarahkan bentuk .......
- cht.Left = 0, grafik diletakkan 0 point di sisi kiri
- cht.Top = 0, grafik diletakkan 0 point di sisi atascht.
- Width = 800, grafik diletakkan sepanjang 800 point ke kanan
- cht.Height = cht.Width * 0.86, grafik diletakkan setinggi 86% dari lebar grafik.
- cht.PlotArea.Left = cht.Left + 10, area plot diletakkan 10 point dari posisi grafik bagian kiri.
- cht.PlotArea.Top = cht.Top + 60, area plot diletakkan 60 point dari posisi grafik bagian atas.
- cht.PlotArea.Width = cht.Width - 90, area plot diletakkan sepanjang lebar grafik dikurangi 90 point.
- cht.PlotArea.Height = cht.Height - 200, area plot diletakkan setinggi lebar grafik dikurangi 200 point.
- cht.HasTitle=True, mengaktifkan judul grafik
- cht.ChartTitle.Top = cht.Top, posisi atas judul grafik diatur sama dengan bagian atas grafik
- cht.ChartTitle.Left = cht.Left, posisi kiri judul grafik diatur sama dengan bagian kiri grafik
cht.ChartTitle.Text = "Grafik Penjualan Berdasarkan " & Me.cbbKategori
Untuk mengatur sumbu vertikal, kita menggunakan kode vba berikut ini:
- With cht.Axes(xlValue), fokus ke sumbu vertikal (sumbu Y) dari grafik crtGrafik.
- .DisplayUnit = xlThousands, tampilkan nilai sumbu vertikal dalam ribuan
- With .DisplayUnitLabel, fokus label di sumbu vertikal
- .Font.Size = byAxisTitleSize, mengatur ukuran font sama dengan byAxisTitleSize (12)
- .Caption = "Dalam Ribuan", membuat keterangan judul untuk sumbu vertikal
- .Left = cht.Axes(xlValue).Left - 75, mengatur posisi kiri dari judul.
- End With
- .MaximumScaleIsAuto = False, menonaktifkan skala otomatis (automatic scale) untuk nilai maksimum .
- If Not .MaximumScaleIsAuto Then .MaximumScale = dblMax, jika automatic scale dinonaktifkan, maka tetapkan nilai maksimum sebesar dbMax di atas.
- .MinimumScaleIsAuto = False, menonaktifkan skala otomatis (automatic scale) untuk nilai minimum
- If Not .MinimumScaleIsAuto And dblMin < 0 Then .MinimumScale = dblMin Else .MinimumScale = 0, jika automatic scale dinonaktifkan dan nilai dblMin kurang dari nol, maka tetapkan nilai minimum sebesar dbMin di atas. Jika nilai dblMin lebih besar atau sama dengan nol, maka nilai dblMin adalah nol.
- .MajorUnitIsAuto = False, menonaktifkan skala otomatis (automatic scale) untuk major unit
- If Not .MajorUnitIsAuto Then _
.MajorUnit = (cht.Axes(xlValue).MaximumScale - cht.Axes(xlValue).MinimumScale) / 4
Jika automatic scale dinonaktifkan, maka major unit dibagi menjadi 4. - .TickLabels.Font.Size = .DisplayUnitLabel.Font.Size, mengatur ukuran font untuk nilai pada sumbu vertikal
- End With
- With cht.Axes(xlCategory), fokus ke sumbu horizontal (sumbu X) dari grafik crtGrafik.
- .TickLabels.Font.Size = cht.Axes(xlValue).DisplayUnitLabel.Font.Size, mengatur ukuran font untuk label di sumbu horizontal (=12)
- .TickLabels.Orientation = 65, mengatur (dalam hal ini) kemiringan penulisan label
- .MajorTickMark = xlTickMarkOutside, mengatur posisi tanda label untuk major scale
- .MinorTickMark = xlTickMarkOutside, mengatur posisi tanda label untuk minor scale
- .HasTitle = True, mengaktifkan judul sumbu horizontal
- If .HasTitle Then, jika judul sumbu horizontal aktif maka
- .AxisTitle.Text = CStr(Me.cbbKategori), judul sumbu sama dengan cbbKategori
- .AxisTitle.Font.Size = byAxisTitleSize, ukuran font sama dengan byAxisTitleSize (=12)
- End If
- End With
- For Each chtSeries In cht.SeriesCollection, untuk setiap urutan grafik lakukan pengaturan berikut ini
- chtSeries.Border.LineStyle = xlNone, menonaktifkan batas pada setiap urutan grafik
- chtSeries.BarShape = xlBox, mengatur bentuk urutan grafik menjadi kotak
- chtSeries.HasDataLabels = True, mengaktifkan label di setiap urutan grafik
- If chtSeries.HasDataLabels Then, jika setiap urutan grafik mempunyai label (label diaktifkan), maka
- For Each chtLabel In chtSeries.DataLabels, untuk setiap label dari setiap urutan grafik
- chtLabel.Font.Size = 10, mengatur ukuran font label dari setiap urutan grafik sebesar 10 point
- Next chtLabel
- End If
- Next chtSeries
- cht.HasLegend = False, menonaktifkan legend.
- If cht.HasLegend Then, jika legend diaktifkan
- cht.Legend.Position = xlLegendPositionBottom, menaruh posisi legend di bagian bawah grafik
- cht.Legend.Font.Size = 10, mengatur font legend sebesar 10 point
- cht.Legend.Border.LineStyle = xlNone, menonaktifkan batas legend
- End If
Gambar 2. Grafik berdasarkan Spec |
Gambar 3. Grafik berdasarkan Region |
Bagi pembaca yang ingin memperolah file sample grafik dinamis yang dibuat dengan menggunakan kode VBA, silakan ikuti petunjuk di bawah ini:
- Ikuti blog Access Terapan di Facebook dengan mem-follow atau me-like FB page di https://www.facebook.com/AccessTerapan atau follow Google Blog Follower. Bagi yang tidak memfollow, permintaan (request) akan diabaikan.
- Kirim email ke admin yanto.e.subroto@gmail.com untuk diikutsertakan menjadi anggota grup Access Terapan.
- Sebagai tanda bukti keanggotaan, admin grup Access Terapan akan mengirimkan email ke alamat yang dituju.
- Selanjutnya, silakan download file zip bernama grafikDinamis.zip yang merupakan Access Database membuat grafik secara dinamis (nama file grafikDinamis.accdb).
- Bukalah form frmGrafik dalam format Form View untuk melihat grafik dan ubah kategori seperti yang diinginkan.
Comments
Post a Comment