On Kamis, 17 Juni 2010 0 komentar

Ada banyak software yang membantu bagi para programmer VB untuk membuat membuat laporan dalam bentuk chart. Diantaranya adalah MS Chart (standard control dari visual studio) namun dirasa masih sangat terbatas dari segi fungsi yang ada. Ada pula Chart Director (www.advsofteng.com) yang sangat lengkap mulai dari Bar Chart, Line Chart, Pie Chart, XY Chart, Polar Chart, sampai Meters and Gauges Chart. Chart Director juga dapat digunakan bagi programmer PHP,ASP,JAVA,Python,C++,dll. Chart Director merupakan chart komponen yang paling lengkap yang pernah saya coba untuk aplikasi VB, tetapi komponen ini tidak gratis alias harus bayar, tetapi bagi para programmer dapat mencobanya dengan mendownload versi trialnya di www.advsofteng.com. Ada juga yang lain khusus untuk VB net yaitu dotnetchart (www.dotnetcharting.com) tetapi komponen ini pun tidak gratis. Ada lagi yang lain yang freeware yaitu RM Chart (www.rmchart.com). Dalam komponen ini cukup lengkap fitur yang diberikan dan pemakaiannya pun tidaklah sulit. Menurut saya RMChart komponent yang paling bagus yang pernah saya coba sebagai komponen yang sifatnya gratis. Komponent ini dapat juga digunakan untuk pengembang VB net.
Disini saya akan membahas cara membuat chart di Microsoft Excel. Mengapa excel? Sekarang hampir semua komputer baik kantor maupun rumah yang menggunakan sistem operasi Windows, pasti memiliki aplikasi excel didalamnya. Jadi tidaklah sulit bagi para pengembang menggunakan excel sebagai output laporannya untuk program aplikasinya. Selain itu pengguna dapat dengan mudah merubah type chart yang dihasilkan langsung dari excel tanpa merubah coding. Jadi laporan chart dari excel lebih dinamis.
Demikian contoh membuat laporan chart di Excel menggunakan VB
Pertama tambahkan referensi “Microsoft Excel 9.0 Object Library” untuk pengguna Microsoft Office 2000, “Microsoft Excell 11.0 Object Library” untuk pengguna Microsoft Office 2003. Perlu diperhatikan pada saat kita membuat program dan mengkompilenya menggunakan Excel 11.0 lalu mencoba menjalankan aplikasinya untuk komputer yang memiliki Office 2000, maka program tersebut tidak dapat jalan karena menggunakan versi yang lebih baru. Maka perlu dibuat setupnya, untuk membuatnya dapat menggunakan Package and Development Wizardnya punya Visual Studio.
Tambahkan juga referensi “Microsoft ActiveX Data Objects 2.8 Library” dan “Microsoft ActiveX data Objects Recordset 2.8 Library” khusus bagi pengguna Windows XP SP2
Tambahkan juga referensi “Microsoft Shell Controls And Automation”
Tambahkan component “Microsoft Common Dialog Control 6.0”

Berikut contoh codingnya
Dim objExcelA As Excel.Application
Dim objExcelW As Excel.Workbook
Dim objExcelSI As Excel.Worksheet
Dim objExcelCI As Excel.Chart
Dim objExcelCS As Excel.ChartObject
Dim rst1 As ADODB.Recordset
Dim row As Long
Dim chgtype As Long
Dim LastCell As String
Dim statYear As String
Dim bkmark As Variant
Private Sub Form_Load()
‘untuk set common dialognya dengan nama: dlgFileLocation
‘menentukan alamatnya dahulu untuk file xls yang akan dibuat
With dlgFileLocation
.DefaultExt = “.XLS”
.DialogTitle = “Where is the Spread Sheet”
.Filter = “Excel SpreadSheet|*.XLS|All Files|*.*”
.FilterIndex = 1
.FileName = “Issue Statistics”
.CancelError = True
.Flags = FileOpenConstants.cdlOFNHideReadOnly + _
FileOpenConstants.cdlOFNCreatePrompt + _
FileOpenConstants.cdlOFNOverwritePrompt
.InitDir = “C:\TEMP\”
.ShowSave
End With
Set objExcelA = New Excel.Application
Set objExcelW = objExcelA.Workbooks.Add
Set rst1 = New ADODB.Recordset
‘buat recordsetnya
With rst1
.Fields.Append “code”, adVarChar, 20, adFldIsNullable
.Fields.Append “name”, adVarChar, 40, adFldIsNullable
.Fields.Append “value”, adInteger, , adFldIsNullable
.Open
End With
Set objExcelSI = objExcelW.Worksheets.Add
objExcelSI.Name = “test1″
objExcelSI.Cells(1, 1).Value = “kode1″
objExcelSI.Cells(1, 2).Value = “name2″
objExcelSI.Cells(1, 3) = “value1″
objExcelW.Charts.Add
Set objExcelCI = objExcelW.ActiveChart
objExcelCI.Activate
objExcelCI.Name = “chart 1″
Dim i%, row%
For i = 1 To 50
rst1.AddNew
rst1.Collect(”code”) = “a”
rst1.Collect(”name”) = “aaaaa”
rst1.Collect(”value”) = i
Next
row = 2
rst1.MoveFirst
‘isi data
Do While Not rst1.EOF
objExcelSI.Cells(row, 1).Value = rst1.Collect(”code”)
objExcelSI.Cells(row, 2).Value = rst1.Collect(”name”)
objExcelSI.Cells(row, 3).Value = rst1.Collect(”value”)
rst1.MoveNext
If rst1.EOF Then
LastCell = “D” & Mid$(Str$(row), 2)
objExcelCI.SetSourceData objExcelSI.Range(”a1:” & LastCell), xlColumns
objExcelCI.ChartType = xlLineMarkers
objExcelCI.Legend.Position = xlLegendPositionBottom
objExcelCI.HasTitle = True
objExcelCI.ChartTitle.Text = objExcelCI.Name
Else
If chgtype <> rst1.Fields(”code”) Then
LastCell = “D” & Mid$(Str$(row), 2)
objExcelCI.SetSourceData objExcelSI.Range(”a1:” & LastCell), xlColumns
objExcelCI.ChartType = xlLineMarkers
objExcelCI.Legend.Position = xlLegendPositionBottom
objExcelCI.HasTitle = True
objExcelCI.ChartTitle.Text = objExcelCI.Name
End If
End If
row = row + 1
Loop
objExcelCI.SetSourceData objExcelSI.Range(”a1:” & LastCell), xlColumns
objExcelCI.ChartType = xlLineMarkers
objExcelCI.Legend.Position = xlLegendPositionBottom
objExcelCI.HasTitle = True
objExcelCI.ChartTitle.Text = objExcelCI.Name

On Error GoTo err
objExcelA.DisplayAlerts = False
objExcelW.SaveAs dlgFileLocation.FileName
objExcelA.Quit
Set objExcelA = Nothing
Set objExcelW = Nothing
Set objExcelSI = Nothing
Set objExcelCI = Nothing
Set objExcelCS = Nothing
Set rst1 = Nothing
Dim shl As New Shell
shl.Open dlgFileLocation.FileName
Me.MousePointer = vbNormal
Exit Sub
err:
Msgbox “Error create excel because of file already opened”,vbExclamation,”Confirm”
End
End Sub

0 komentar:

Posting Komentar