efek salju

Rabu, 16 Januari 2013

artikel 7. 10 Hal Dasar Belajar Migrasi VB6 Ke VBNET


10 Hal Dasar Belajar Migrasi VB6 Ke VBNET

Berdasarkan pengalman saya, berikut ini saya tulis beberapa hal (penting) tentang belajar migrasi vb6 ke vbnet :

1.Index di VBNET selalu mulai dari 0, sedangkan VB6 ada yang dari 1 (contoh : listview.items), jadi jangan kaget klo nanti ada error :
"InvalidArgument=Value of '1' is not valid for 'index'. Parameter name: index"
maka dari itu anda harus mengubah sintak looping untuk additem listview, harus mulai dari 0

2.Jika anda mengubah nama object (rename), maka di VB6 anda harus mengubah ke sintak-nya juga apa
apa yang berkaitan dengan object itu, karena klo tidak anda akan mengalami error :
"Run-time error '424', Object required"
sedangkan di VBNET sekali anda me-rename object (termasuk form) pada jendela property, maka semua sintak yang berhubungan dengan object tersebut akan otomatis berubah/menyesuaikan.

3.Semua object yang mempunyai property Item (contoh listivew,combobox, listvox, dll) di VBNET selalu menggunakan property Item.Add, sedangkan VB6 ada yang Combo1.AddItem, ListView1.ListItems.Add, List1.AddItem , jadi di VBNET sudah sangat seragam dan terstruktur (mudah diingat)
4.Jika anda menggunakan Frame dan ingin menambahkan object2 lain kedalamnya, di VBNET tidak perlu Cut/Copy-Paste object ke frame itu seperti di VB6, cukup drag/seret saja object-nya ke dalam frame
5.Jika di VB6 anda melakukan add form (existing) misalnya dari folder lain (tidak 1 folder dengan project), maka jika anda cut/copy folder project anda dan jalankan di komputer lain atau anda cut/rename folder form yang di-add itu (yang bukan dalam 1 folde project), maka akan error :
"Path Not Found : '...\form_name.frm'--Continua Loading Project ?"
sedangkan di VBNET dia akan mengcopy kedalam 1 folder yang sama, bukan url pathnya melainkan formnya akan dicopy otomatis oleh VBNET kedalam folder project
6.Jika anda ingin me-remove form/module/class dll, di VB6 anda cukup remove saja, tetapi di VBNET ada tiga istilah : Exclude dan Include (bisa di remove dan add kembali dengan mudah) serta Delete (hapus ke Recycle Bin).
7.Ini merupakan kelanjutan dari Nomor 6, Perhatikan sintak VB6 berikut :
Private Sub Command1_Click()
End Sub
jika anda me-rename menjadi object menjadi Command2, maka sintak itu harus diubah menjadi :
Private Sub Command2_Click()
End Sub
sedangkan di VBNET anda harus INGAT Handles, contoh :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
jika anda me-rename menjadi object menjadi Command2, maka HANDLES akan berubah secara otomatis, tetapi TIDAK nama SUB-nya :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End Sub
Jadi jangan sampai terkecoh ya,,,
8.jika anda ingin memanggil fungsi (contoh) Command1_Click maka si VB6 anda cukup menulis seperti ini:
Call Command1_Click
tetapi di VBNET anda harus menulisnya seperti ini:
Call Button1_Click(Button1, New System.EventArgs)
9.Jika anda add object yang tidak terliat/visible-false seperti (timer,common dialog, menu, dll), di VB6 akan ikut masuk ke form, tetapi di VBNET akan terpisah dengan form sehingga kita tahu mana object yang visible dan tidak (lebih teratur)
10.VBNET menyediakan property .ToString pada semua object/methode/property/variable dari object, sehingga anda akan dengan mudah mengconvert dan mengetahui isi lengkap/detail-nya. contoh:
jika saya mengetik ListView1.ToString, maka hasilnya = "System.Windows.Forms.ListView, Items.Count: 1, Items[0]: ListViewItem: {ID}"
jika saya deklarasi dim nilai As Integer, maka saya bisa kombinasikan dengan string lain dengan cara : "Nilai Ke " + nilai.ToString + " Dari Total" 

11.Jika anda terbiasa dengan sintak SET di VB6, maka di VBNET tidak akan ada. Contoh  : "Set Con = New ADODB.Connection" atau "Set DataGrid1.DataSource = RecBarang" dan sebagainya, maka di VBNET anda tidak usah menggunakan SET, cukup dengan "con = New ADODB.Connection"

12.Jika di VB6 anda meggunakan sintak dibawah ini untuk clear object/textbox, contoh :
Dim iObject As Object
     For Each iObject In Me.Controls
             If TypeOf iObject Is TextBox Then
                iObject.Text = ""
            End If
   Next 
Maka jika di jalakan di VBNET Tidak akan ada masalah JIKA anda tidak menggunakan frame/panel/group/tabcontrol dan container lainnya. Kalau anda menempatkan TextBox itu pada salah satu container, maka textbox itu tidak bersih/clear karena di VBNET tidak mengecek/loop semua object secara global, tapi hanya cek/loop sebatas container-nya saja, jadi contohnya jika anda menempatkan textbox1 di sebuah frame dan textbox2 di panel dan textbox3 di form (langsung) maka sintak clear object nya seperti ini (VBNET) :

        Dim v_container() As Object = {Frame1, Panel1, Me}
        For i As Integer = 0 To v_container.Length - 1
            For Each obj As Object In v_container(i).Controls
                If TypeOf obj Is TextBox Then
                    obj.Text = ""
                End If
            Next
        Next
13.hhmm apalagi ya? sebenarnya masih banyak sih, hal hal yang kecil tetapi penting untuk diketahui, bila ada teman2 yang mau menambahkan silahkan berikan comment dibawah, agar ilmu kita semakin bertambah.
Tags:
cara convert vb6 ke vbnet, belajar vbnet dari awal, belajar dasar dasar vbnet, cara mngataasi error di vbnet, dasar dasar vbnet, cara cepat belajar vbnet.


sumber: http://djiesoft.blogspot.com/2012/09/10-hal-dasar-belajar-migrasi-vb6-ke.html

Rabu, 09 Januari 2013

artikel 24. LOGIKA PERCABANGAN (STRUKTUR KEPUTUSAN)


 LOGIKA PERCABANGAN

Pada beberapa kasus pemrograman terkadang kita menginginkan komputer melakukan suatu aksi tertentu bila suatu kondisi terpenuhi. Keberadaan perintah bersyarat pada suatu program memberikan pencabangan proses seperti ditunjukkan oleh Error! Not a valid link.. Bahasa Pascal menyediakan dua cara penyajian perintah bersyarat, yaitu If…Then…Else dan Case…of.

1. Percabangan If . . .
Perintah percabangan If…Then…Else adalah suatu perintah yang berfungsi untuk mengambil keputusan dari beberapa kondisi. Bentuk percabangan ini biasanya digunakan untuk kondisi yang jumlahnya tidak terlalu banyak.
1.1. IF … THEN : Pemilihan 1 kasus
Perintah bersyarat If – then digunakan hanya untuk melakukan 1 aksi bila kondisi dipenuhi.
Bentuk sintaks dari perintah bersyarat ini adalah:
If then
Begin
... {aksi-1}
end;
1.2. IF … THEN … ELSE : Pemilihan 2 kasus
Perintah bersyarat If…then…else umumnya digunakan untuk melakukan pencabangan sederhana (antara 2 atau 3 cabang). Atau untuk pencabangan yang banyak, dimana kondisi yang menjadi prasyaratnya melibatkan lebih dari satu parameter. Bentuk sintaks dari perintah bersyarat ini adalah:
If then
Begin
... {aksi-1}
end
else
Begin
... {aksi-2}
end;

1.3. IF … THEN … ELSE : Pemilihan N kasus
If then
Begin
... {aksi-1}
end
else If then
Begin
... {aksi-2}
end
else
Begin
... {aksi-3}
End;
Contoh Program Menggunakan Percabangan If :



Buat program dengan tampilan seperti diatas, untuk memberi keterangan terhadap nilai angka yang dimasukkan.
Nama-nama komponen serta nilai propertinya :



Masukkan perintah-perintah sesuai dengan nama komponen dan event yang dapat berlaku terhadap komponen tersebut.



Pada komponen SpeedButton1 yang menangani kejadian onClick terlihat menggunakan operasi percabangan untuk menentukan keterangan apa yang akan ditampilkan di edKet berdasarkan angka yang diperoleh dari edNilai.
Berikut program secara keseluruhannya :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
edNama: TEdit;
edNilai: TEdit;
edKet: TEdit;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
edNama.Clear;
edNilai.Clear;
edKet.Clear;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var n : double;
begin
n := StrToFloat(edNilai.Text);
if n >= 90 then
edKet.Text := 'Sangat Baik'
else if (n >= 70) and (n <= 89) then edKet.Text := 'Baik' else if (n >= 50) and (n <= 69) then edKet.Text := 'Cukup' else if (n >= 30) and (n <= 49) then edKet.Text := 'Kurang' else if (n <>


sumber:http://ahmad-delphi.blogspot.com/2009/12/logika-percabangan.html

artikel 23. Menampilkan data Mysql dengan List View vb.net


Menampilkan data Mysql dengan List View vb.net

Pada pembahasan kali ini saa akan mencoba menjelaskan bagaimana caranya agar data kita yang berda di database mysql dapat di tampilkan di porgramvb.net menggunakan toolbox List View.
Untuk tutorial kali ini saya menggunakan vs studio 2010 dengan bahasa pemrograman vb.net , dan .Net Framework 3.5.
Sebelum membuat program terlebih dahulu buatlah sebuah database yang natinya akan anda pakai di program , pada kasus ini saya membuat database dengan nama “mysqltut” dan tabel bernama “people” dengan tipe data dapat di lihat pada gambar di bawah ini .
setelah database di buat , selanjutnya kita akan membuat project vb.net , misalkan saya membuat sebuah project yang saya beri nama “MySql Tutorial”
Setelah membuat project selanjutnya kita akan memasukkan referensi tambahan yang berguna agar vb.net dapat memahami perintah-perintah mysql(mysql.data.dll)  yaitu dengan cara buka menu “project – > add reference”
 Setalah menambah referensi Mysql ,  selanjutnya  pada form default yang ada , anda tambahkan sebuah toolbox listview , sehingga tampilan form yang ada sebagai berikut .
Dan jangan lupa atur propertis dari list view tadi menjadi sebagai berikut 
pada jendela di atas pilih edit Columns , sehingga tampilan menjadi sebagai berikut
Untuk Kolom deader nya silahkan anda atur sendiri sesuai dengan data yang ada di data base (di propertis kolom header , misc -> Text)
setalah semua interface kita buat selnjutnya adalah bagian souce code pada form (klik 2 kali form) pada text editor yang tersedia masukkan code-code berikut ini

Imports MySql.Data.MySqlClient
Public Class Form1
Public sConnection As New MySqlConnection
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If sConnection.State = ConnectionState.Closed Then
sConnection.ConnectionString = “SERVER = localhost; USERID = root; PASSWORD =; DATABASE = mysqltut;”
sConnection.Open()
End If
LoadPeople()
End Sub
Public Sub LoadPeople()
Dim sqlQuery As String = “SELECT * FROM people”
Dim sqlAdapter As New MySqlDataAdapter
Dim sqlCommand As New MySqlCommand
Dim TABLE As New DataTable
Dim i As Integer
With sqlCommand
.CommandText = sqlQuery
.Connection = sConnection
End With
With sqlAdapter
.SelectCommand = sqlCommand
.Fill(TABLE)
End With
For i = 0 To TABLE.Rows.Count – 1
With lvPeople
.Items.Add(TABLE.Rows(i)(“id”))
With .Items(.Items.Count – 1).SubItems
.Add(TABLE.Rows(i)(“fname”))
.Add(TABLE.Rows(i)(“mname”))
.Add(TABLE.Rows(i)(“lname”))
End With
End With
Next
End Sub
End Class 

artikel 22. Koneksi Database pada Delphi


Koneksi Database pada Delphi

kali ini kita akan membahas Bagaimana caranya membuat koneksi ke database pada Delphi.
Fungsi dari mengapa kita membuat koneksi ke database jika kita akan membuat sebuah aplikasi desktop. Tujuannya jika kita melakukan input data pada aplikasi desktop tersebut, data akan tersimpan ke dalam database. Agar data dapat tersimpan kedalam database, kita perlu melakukan koneksi ke database terlebih dahulu.
Tahap awal adalah siapkan terlebih dahulu database dan table yang akan digunakan untuk menampung data yang akan kita input nanti. Berikut ini adalah cara membuat sebuah database dan tabel (dalam hal kita menggunakan Microsoft Access 2003) :
Langkah 1
Buka ms.acces dan tentukan lokasi penyimpanan database (dengan mengklik lambing folder), kemudian pilih format 2003 , lalu klik create :
Langkah 2
Buat table dengan klik kanan tabel -> pilih desain view -> save tabel dengan nama : tb_barang ->buatlah tabel dengan field-field seperti gambar dibawah ini :
Langkah 3
Selesai membuat table, sekarang coba kita isi data pada tabel secara manual saja, dengan mengklik 2x tb_barang :table, minimal 2 data saja.
Tahap kedua adalah membuka aplikasi Delphi, dan membuat koneksi database pada Delphi dengan menggunakan 3 komponen (AdoConnection, AdoQuery, dan DataSource). Berikut ini adalah langkah-langkahnya :
Langkah 1
Buka aplikasi Delphi -> pilih new project -> vcl form. Kemudian Desain form input data, dan tombol navigasi (text menggunakan label, inputan menggunakan edit, sedangkan tombol navigasi menggunakan Button).
Langkah 2
Selanjutnya tambahkan DBGRIB (terdapat pada komponen data Controls ) untuk menampilkan data yang ada pada database dan masukkan 3 komponen untuk koneksi ke database (AdoConnection : terletak pada komponen DBGO / ADO, AdoQuery : terletak pada komponen DBGO / ADO, dan DataSource terletak pada komponen data Access).
Langkah 3
Langkah berikutnya adalah setting ke-4 komponen diatas agar dapat terkoneksi ke dengan database, berikut ini adalah langkah-langkahnya BGRID
a. Setting AdoConnection
Pada properties yang perlu kita setting adalah Connection StringLogin Prompt.
- Klik connection string, lalu klik build,lalu pilih jenis provider yang digunakan, lalu pilih Next, Lalu pilih database yang akan dikoneksikan / digunakan, lalu klik OPEN.
Keterangan :
Microsoft jet 4.0 OLE Provider (untuk database access 2003).
Microsoft Off 12.0 Acces Database Engine OLE DB Provider (untuk Access 2007).
- Kemudian pada properties klik login prompt, lalu pilih false
b. Setting AdoQuery
Pada properties Adoquery yang perlu disetting adalah ConnectionSQL, dan Active.
- Klik AdoQuery kemudian pada properties,
- Pilih Connectio : AdoConnection1
- Pilih SQL : select * from barang
- Pilih Active : true
c. Setting Datasource
Pada DataSource yang perlu di setting hanya dataset : adoquery1.
d. Setting DBGRIB
Pada DBGrid yang disetting hanya datasource : datasource1.
Jika ke-4 komponen diatas berhasil anda setting maka pada DBGRID akan tampil data berdasarkan apa yang ada pada database, seperti gambar dibawah ini :
Dalam hal ini jika program tersebut di jalankan maka kitaklik tombol save, datanya belum akan ter-input(masuk ke database), karna kita belum membuat proses utnuk input data ke database.

sumber:http://www.aaezha.com/2012/11/koneksi-database-pada-delphi.html

artikel 21. KALKULATOR SEDERHANA dengan Visual Basic.NET


KALKULATOR SEDERHANA dengan Visual Basic.NET

Component yang akan kita gunakan :

Name                Text

Label1           Angka Pertama
Label2           Operator
Label3           Angka Kedua
Label4           Hasil
Label5           KALKULATOR SEDERHANA
Label6           Perbandingan
TextBox1       Kosongkan
TextBox2       Kosongkan
TextBox3       Kosongkan
ComboBox1    Kosongkan
ComboBox2    Kosongkan
Button1          Hitung
Button2          Perbandingan
Button3          Quit
Berikut desaign formnya :

Logika untuk tombol Perbandingan : jika kita masukan nilai pada textbox Angka Pertama dan Angka Kedua kemudian kita pilih combobox Perbandingan ( =, <>, <, >, <=, dan >= ), dan klik tombol / button Perbandingan, maka akan tampil MsgBox Benar atau Salahnya hasil perbandingan.
Logika untuk tombol Hitung : jika kita masukan nilai pada textbox Angka Pertama dan Angka Kedua kemudian kita pilih combobox Operator (+, -, / , ^, dan mod), dan klik tombol / button HITUNG, maka proses akan ditampilkan hasilnya pada textbox Hasil
Berikut saya tuliskan view code dari program aplikasi kalkulator sederhana tersebut :

Public Class kalkulator

    Private Sub kalkulator_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ComboBox1.Items.Add("+")
        ComboBox1.Items.Add("*")
        ComboBox1.Items.Add("-")
        ComboBox1.Items.Add("/")
        ComboBox1.Items.Add("^")
        ComboBox1.Items.Add("Mod")
        ComboBox1.Items.Add("&")
        ComboBox2.Items.Add("=")
        ComboBox2.Items.Add("<>")
        ComboBox2.Items.Add("<")
        ComboBox2.Items.Add(">")
        ComboBox2.Items.Add(">=")
        ComboBox2.Items.Add("<=")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim a, b, c As Integer
        a = TextBox1.Text
        b = TextBox2.Text
        Select Case ComboBox1.Text
            Case "+"
                c = a + b
            Case "*"
                c = a * b
            Case "-"
                c = a - b
            Case "/"
                c = a / b
            Case "^"
                c = a ^ b
            Case "Mod"
                c = a Mod b
            Case Else
                c = a & b
        End Select
        TextBox3.Text = c
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim a, b As Integer
        Dim c As Boolean
        Dim d As String
        TextBox3.Clear()
        a = TextBox1.Text
        b = TextBox2.Text
        Select Case ComboBox2.Text
            Case "="
                c = a = b
            Case "<>"
                c = a <> b
            Case "<"
                c = a < b
            Case ">"
                c = a > b
            Case ">="
                c = a >= b
            Case Else
                c = a <= b
        End Select
        If c = "True" Then d = "Benar" Else d = "Salah"
        MsgBox("Pernyataan operator perbandingan adalah ? " & d & "", MsgBoxStyle.Information, "Tri Aprila S.Kom")
        TextBox3.Clear()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Me.Close()
    End Sub

End Class


sumber:http://mugi.or.id/blogs/tri_aprila/archive/2012/01/10/kalkulator-sederhana-dengan-visual-basic-net.aspx

artikel 20. Cara Membuat Chart/Grafik/Kurva Dengan Ms.Chart di VBNET


Cara Membuat Chart/Grafik/Kurva Dengan Ms.Chart di VBNET

Untuk membuat sebuah chart/grafik/kurfa/dll pertama kita harus menentukan dulu komponen apa yang ingin digunakan. Banyak sekali komponen diluar sana dan kebanyakan berbayar (trial/shareware). Kali ini saya akan mencontohkan dengan komponen yang gratis, yaitu MSCHART. Tahapannya adalah:
1.Download MSChart (Setup untuk update Ms.Netframework 3.5 SP1)
2.Download MSChart (Add-On untuk update ToolBox visual studio 2008)
3.Buat project baru, add mschart ke form
Sekarang perhatikan ada 3 hal dasar yang harus diketahui dan difahami yaitu : X, Y dan Series :

Contoh pertama, saya ingin membuat grafik seperti dibawah ini (tanpa database/manual) :
Sintaknya sangat singkat, pertama tambahkan ini dipaling atas :

Imports System.Windows.Forms.DataVisualization.Charting
selanjutnya taruh ini di event form_load() :

        With Chart1 '=Nama Group
            .Series.Clear()
            .Series.Add("Mahasiswa MI")

            'Format Series/Chart

            .ChartAreas(0).AxisX.Interval = 1

            .ChartAreas(0).AxisX.IsStartedFromZero = True
            .Series(0).ChartType = SeriesChartType.Column 'Bentuk chart
            .Series(0).XValueType = ChartValueType.String
            .Series(0).YValueType = ChartValueType.Double
            'Isi Nilai Series/Chart (X,Y)
            .Series(0).Points.AddXY("Matematika", 10)
            .Series(0).Points.AddXY("Akuntansi", 7)
            .Series(0).Points.AddXY("Jaringan", 15)
            .Series(0).Points.AddXY("Algoritma", 5)
        End With
Bentuk chart yang disediakan sangat banyak, contohnya jika saya ubah menjadi :
.Series(0).ChartType = SeriesChartType.Pie 'Bentuk chart
maka akan langsung (otomatis) berubah menjadi :
OK, contoh selanjutnya adalah Multi Series (lebih dari satu) contoh chart-nya seperti dibawah ini :
Untuk sintaknya seperti dibawah ini :


With Chart1 '=Nama Group
            Dim prodi() As String = {"Mahasiswa MI""Mahasiswa TI"}
            .Series.Clear()
            For i As Integer = 0 To prodi.Length - 1
                .Series.Add(prodi(i))
            Next
            'Format Series/Chart
            .ChartAreas(0).AxisX.Interval = 1

            .ChartAreas(0).AxisX.IsStartedFromZero = True
            For Each seri As Series In .Series
                seri.ChartType = SeriesChartType.Column
                seri.XValueType = ChartValueType.String
                seri.YValueType = ChartValueType.Double
            Next
            'Isi Nilai Series/Chart (X,Y)
            .Series(0).Points.AddXY("Matematika", 100)
            .Series(0).Points.AddXY("Akuntansi", 70)
            .Series(0).Points.AddXY("Jaringan", 45)
            .Series(0).Points.AddXY("Algoritma", 60)

            .Series(1).Points.AddXY("Matematika", 90)
            .Series(1).Points.AddXY("Akuntansi", 25)
            .Series(1).Points.AddXY("Jaringan", 80)
            .Series(1).Points.AddXY("Algoritma", 60)
        End With
 Download contoh mschart full source code
Selain itu juga saya membuat contoh chart yang Realtime dengan menggunakan timer, jadi contoh berikut ini adalah chart yang bergerak/refresh setiap 1 detik sekali, berikut ini screenshot nya :
Download contoh mschart realtime/timer full source code

Dan terakhir saya membuat contoh chart dengan database, seperti biasa saya menggunakan ma.access northwind.accdb. Contoh kasus berikut ini adalah bagaimana cara menampilkan data order product, jadi dari setiap tanggal transaksi akan dihitung berapa quatity order nya. berikut ini screenshot di ms.access nya:
dan ini adalah chart nya :
Download contoh mschart database full source code

Tags:
contoh chart vbnet, download chart ocx, tutorial mschart vbnet, cara membuat grafik chart vbnet, sintak function chart/grafik di vbnet, reference untuk chart vbnet, dll/ocx chart, example chart vbnet, making chart in vbnet, mschart datasource, using mschart in vbnet with datasource database, cara add mschart controls di vbnet, tambah komponen mschart visual basic, membuat laporan dengan mschart vb, reporting with mschart vb.

sumber:http://djiesoft.blogspot.com/2012/10/cara-membuat-chartgrafikkurva-dengan.html