Penulis Topik: VB 2008 lebih lanjut  (Dibaca 5534 kali)

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
VB 2008 lebih lanjut
« pada: 07 April 2008, 10:33:20 »
Atas permintaan stash, aku lompat ke topik VB 2008 yang lebih lanjut. Sementara ini, ada 3 topik bahasan yang akan diulas:

1. Menggunakan kontrol tabel (sebenarnya tidak ada kontrol tabel; kita akan gunakan bantuan kontrol DataGridView).

2. Membuat grafik.

3. Mengambil/memanipulasi data dari berkas Excel. Yang akan digunakan hanya Excel 2007.

Kalau ada pertanyaan lain yang dirasa cukup rumit, silakan ajukan di sini, mudah-mudahan ada yang bisa jawab (ayo antonmaju dan sendi, jagonya .NET nih :D)

Mulai yuk!
« Edit Terakhir: 07 April 2008, 10:58:45 oleh Èxsharaèn »
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
Kontrol DataGridView
« Jawab #1 pada: 07 April 2008, 10:58:30 »
Kontrol DataGridView boleh lah dibilang kontrol tabel untuk orang awam, karena bentuknya memang seperti tabel. Kontrol ini biasanya digunakan untuk menampilkan data dari basis data (misalnya Access dan MS SQL Server). Karena itu, di jendela Toolbox kontrol ini berada pada grup Data.

Coba tambahkan kontrol tersebut ke form kita. Bentuknya seperti ini:



Pertama kali ditambahkan, mungkin akan langsung muncul opsi untuk DataGridView. Opsi-opsi tersebut tidak akan aku jelaskan, silakan diutak-atik sendiri :)

Nah, lalu, bagaimana caranya kita menambahkan data? Di contoh ini aku akan tambahkan data secara langsung. Kalau datanya tersimpan di dalam array misalnya, silakan tebak sendiri caranya (well, ini topik tingkat lanjut kan? ;)).

Misalkan saja di even Form_Load aku berikan kode untuk menambah data ke DataGridView kita. Asumsikan namanya tetap DataGridView1.

Kode: [Pilih]
' Tambahkan kolom baru dulu...
DataGridView1.Columns.Add("Column1", "2000")
DataGridView1.Columns.Add("Column2", "2008")
' Tambahkan baris baru...
DataGridView1.Rows.Add()
' Untuk mengeset header row
Dim rowHeader As New DataGridViewRowHeaderCell
rowHeader.Value = "Sapi"
DataGridView1.Rows(0).HeaderCell = rowHeader
' Ayo masukkan datanya!
DataGridView1.Rows(0).Cells(0).Value = 100
DataGridView1.Rows(0).Cells(1).Value = 200

Coba jalankan. Hasilnya seperti ini:



Ya, tulisan Sapi-nya memang tidak terlihat. Besarkan saja row headernya.

Kelihatan rumit? Sebenarnya tidak. Yuk kita tilik satu per satu baris kodenya.
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
Jelaskan kodenya!
« Jawab #2 pada: 07 April 2008, 11:04:45 »
Kalau DataGridView kita masih polos, alias tidak ada data yang dimasukkan, kita harus buat kolomnya dulu. Ini perintahnya:

Kode: [Pilih]
DataGridView1.Columns.Add("Column1", "2000")
Parameter pertama adalah nama kolom. Isikan sembarang saja, dalam String. Parameter kedua adalah teks yang akan muncul pada kolom ini, juga dalam String.

Setelah itu, jangan lupa tambahkan baris baru untuk memasukkan datanya:
Kode: [Pilih]
DataGridView1.Rows.Add()

Kalau mau punya row header, pertama-tama kita buat dulu objek DataGridViewRowHeaderCell, misalkan saja namanya rowHeader. Kemudian, berikan nilai ke objek tersebut. Kalau sudah, set properti HeaderCell row yang bersangkutan ke objek rowHeader.
Kode: [Pilih]
Dim rowHeader As New DataGridViewRowHeaderCell
rowHeader.Value = "Sapi"
DataGridView1.Rows(0).HeaderCell = rowHeader

Terakhir, kita tambahkan data. Penambahan datanya, sayangnya, harus dilakukan satu per satu (tapi ada blok For kan?) per sel. Itu sebabnya kodenya berbentuk seperti ini:
Kode: [Pilih]
DataGridView1.Rows(0).Cells(0).Value = 100
DataGridView1.Rows(0).Cells(1).Value = 200

Ternyata nggak terlalu susah ya? Ayo lanjut ke permasalahan berikutnya: membuat grafik!
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
Membuat grafik
« Jawab #3 pada: 07 April 2008, 11:18:16 »
Ada banyak cara untuk membuat grafik dalam VB 2008. Aku ambil salah satunya yang aku temukan. Agak susah memang, tapi coba dipahami pelan-pelan.

Kontrol untuk membuat grafik kebetulan tidak tersedia pada keadaan dasar. Kita harus menambahkannya dulu. Bagaimana caranya? Pertama, kita tambahkan dulu reference ke library kontrol yang ingin kita gunakan, kemudian kontrolnya kita tambahkan ke tab Toolbox (andaikan tidak muncul secara otomatis), dan barulah kontrol itu bisa gunakan. Bagaimana caranya?

1. Pilih menu Project > Add Reference. Sabar sedikit, pemuatannya mungkin agak lama.

2. Pilih tab COM.

3. Gulir ke bawah sampai kalian menemukan Microsoft Office Web Components. Tergantung versi Office yang terinstal ke komputer, mungkin nomor versinya tidak sama dengan yang dicontohkan. Di sini kita akan menggunakan versi 11.0 (dengan Office 2007 terinstal).

4. Klik OK.

Sekarang, cek di tab Toolbox, apa ada kontrol bernama Microsoft Office Chart 11.0. Kontrol ini mungkin ada di grup General. Kalau tidak ada, cari saja di grup All Windows Forms, seharusnya ada di bawah sendiri. Kalau masih tidak ada juga:

5. Pilih menu Tools > Choose Toolbox items.... Sabar sedikit, pemuatannya mungkin agak lama.

6. Pindah ke tab COM Components.

7. Cari masukan Microsoft Office Chart 11.0 dan beri tanda centang.

8. Klik OK.

Sekarang, seharusnya kontrol Microsoft Office Chart 11.0 sudah tersedia. Ayo lanjut!
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
Coding pembuatan grafik
« Jawab #4 pada: 07 April 2008, 11:29:52 »
Sudah ditambahkan kontrol grafiknya? Tampilannya mungkin seperti ini di awal:



Kita akan menambahkan data secara manual melalui coding. Seharusnya bisa diset di awal, tapi pada kasus tertentu datanya tidak bisa didapat dari awal (misalnya harus menunggu user memasukkan data dulu baru grafiknya muncul). Lagi-lagi asumsikan proses ini dilakukan di event Form_Load, dan nama kontrol kubiarkan AxChartSpace1. Berikut contoh kodenya:

Kode: [Pilih]
' Datanya...
Dim arrData(3) As Object
arrData(0) = 100
arrData(1) = 200
arrData(2) = 300
arrData(3) = 400
' Teks untuk keterangan X-axis
Dim arrKategori(3) As Object
arrKategori(0) = "1997"
arrKategori(1) = "1998"
arrKategori(2) = "1999"
arrKategori(3) = "2000"

With AxChartSpace1
     ' Tambahkan chart baru
     .Charts.Add()
     ' Tambahkan data baru
     .Charts(0).SeriesCollection.Add()
     ' Setting
     .Charts(0).HasTitle = True
     .Charts(0).Title.Caption = "Contoh"
     .Charts(0).Type = OWC11.ChartChartTypeEnum.chChartTypeColumnClustered
     ' Masukkan data
     ' X axis
     .Charts(0).SeriesCollection(0).SetData(OWC11.ChartDimensionsEnum.chDimCategories, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, arrKategori)
     ' Y axis
     .Charts(0).SeriesCollection(0).SetData(OWC11.ChartDimensionsEnum.chDimValues, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, arrData)
End With

Coba jalankan. Hasilnya seperti ini:



Ribet? Agak :P tapi kalau ditilik, sebetulnya kodenya cukup sederhana. Ayo kodenya dikupas tuntas!
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
Kodenya panjang amat...
« Jawab #5 pada: 08 April 2008, 12:00:23 »
Apakah kodenya terlihat "mengerikan"? Sepertinya iya :P mudah-mudahan ada yang bisa menemukan cara tersingkat untuk membuat grafik. Yuk mengupas tuntas kodenya!

Pertama-tama, kita masukkan datanya dulu. Kali ini aku anggap datanya dimasukkan saat itu juga (di kehidupan nyata nggak mungkin seperti ini :)).

Kode: [Pilih]
Dim arrData(3) As Object
arrData(0) = 100
arrData(1) = 200
arrData(2) = 300
arrData(3) = 400

Waduh, kenapa tipenya Object? Bukannya itu isinya Integer semua? Memang, tapi nanti saat penambahan data ke kontrol, kita akan mengetahui bahwa dia meminta tipe datanya Variant (pada VB 2008, tipe data ini diganti Object). Karena itu, biarkan apa adanya.

Perlu teks untuk x-axis? Nii...

Kode: [Pilih]
Dim arrKategori(3) As Object
arrKategori(0) = "1997"
arrKategori(1) = "1998"
arrKategori(2) = "1999"
arrKategori(3) = "2000"

Sama seperti penambahan data, dia harus bertipe data Object.

Nah, setelah datanya didapat, ayo masukkan ke kontrol Graph kita! Oh ya, ada yang nyadar blok With? Untungnya blok ini masih disediakan di VB 2008, jadi kita bisa menyingkat penulisan.

Caranya, pertama-tama kita tambahkan dulu grafik baru ke kontrol kita.
Kode: [Pilih]
.Charts.Add()

Lalu, tambahkan koleksi data baru ke kontrol. Istilahnya SeriesCollection.
Kode: [Pilih]
.Charts(0).SeriesCollection.Add()

Perlu mempercantik grafik? Boleh dilakukan sekarang. Yang jelas, jangan lupa mendefinisikan tipe grafik kita (batang? garis? pie?)
Kode: [Pilih]
.Charts(0).Type = OWC11.ChartChartTypeEnum.chChartTypeColumnClustered

Jangan khawatir, enumeration itu akan muncul sendiri dalam bentuk panjangnya :)

Sekarang, ayo masukkan datanya! Coba judul X-axis-nya duluan...
Kode: [Pilih]
.Charts(0).SeriesCollection(0).SetData(OWC11.ChartDimensionsEnum.chDimCategories, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, arrKategori)
Ini yang kelihatannya mengerikan, padahal nggak :D kita lihat, fungsi SetData hanya meminta 3 parameter.

Parameter pertama adalah enum ChartDimensionsEnum yang menunjukkan jenis data yang ingin diisi. Ada beberapa enum yang bisa digunakan:

chDimBubbleValues Set the values for the markers on a Bubble chart.
chDimCategories Set the values to use as categories.
chDimCharts Sets the source fields for new charts when the HasMultipleCharts property is set to True.
chDimCloseValues Set the closing values for a Stock chart.
chDimFilter Sets the fields to place on the filter axis.
chDimFormatValues Set the values to use in a format map.
chDimHighValues Set the high values for a Stock chart.
chDimLowValues Set the low values for a Stock chart.
chDimOpenValues Set the opening values for a Stock chart.
chDimRValues Set the R values for a Polar chart.
chDimSeriesNames Set the values to use as series names.
chDimThetaValues Set the Theta values for a Polar chart.
chDimValues Set the values to be charted.
chDimXValues Set the x values for an XY (Scatter) or Bubble chart.
chDimYValues Set the y values for an XY (Scatter) or Bubble chart.

Maaf, lagi malas menerjemahkan :P

Parameter kedua menunjukkan bagaimana kontrol Graph kita akan mendapat data. Isinya adalah salah satu dari enum ChartSpecialDataSourcesEnum berikut:

chDataBound Binds the specified object to the external data source specified in the DataReference argument.  
chDataLinked Binds the specified object to another dimension. Use this value when you specify chDimFormatValues in the Dimension* argument to create a format map.
chDataLiteral Binds the specified object to the literal data specified in the DataReference argument.  
chDataNone Clears the specified object.
* Parameter pertama.

DataReference adalah parameter ketiga, yaitu data kita. Kalau parameter kedua diisi chDataLiteral, kita bisa menggunakan array satu dimensi atau daftar yang dipisahkan dengan koma (CSV, Comma-Separated Value) untuk menampung data kita.

Fyuh, itulah penjelasan tentang fungsi SetData. Untuk informasi lebih lanjut, pada Designer View, klik kanan pada kontrol Graph dan pilih Help.

Ups, datanya sendiri belum masuk! Nii...
Kode: [Pilih]
.Charts(0).SeriesCollection(0).SetData(OWC11.ChartDimensionsEnum.chDimValues, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, arrData)

Nah, itulah caranya membuat grafik. Later on, aku akan beri tahu caranya menggunakan berkas Excel, bahkan basis data untuk membuat grafik. Ditunggu ya!
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Offline Stash

  • The Sentinel of Volcano
  • Kru RPGFWID
  • Lv 7 Ahli
  • ******
  • Tulisan: 3.205
  • Karma: 0
  • Jenis kelamin: Pria
  • Journey Never Ending
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Catatan Stefano
Re: VB 2008 lebih lanjut
« Jawab #6 pada: 09 April 2008, 03:51:06 »
Sekedar tambahan, mulai Office 2007, web component sdh tdk ada didalam installan office. Jadi misal kalian punya office 2007, langkah yang harus dilakukan adalah
1. Download web component untuk office 2003 disini
2. Trus download updatenya (SP1 untuk office 2007) disini

Kalau sudah, baru deh bisa dilakukan seperti kata exshan
Twitter ID : stefano1003
Facebook : http://www.facebook.com/stefano.ariestasia
Google+ : stefano.ariestasia
Blog : http://catatanstefano.wordpress.com

Offline Stash

  • The Sentinel of Volcano
  • Kru RPGFWID
  • Lv 7 Ahli
  • ******
  • Tulisan: 3.205
  • Karma: 0
  • Jenis kelamin: Pria
  • Journey Never Ending
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Catatan Stefano
Re: VB 2008 lebih lanjut
« Jawab #7 pada: 09 April 2008, 09:11:00 »
Kebetulan tadi aku menemukan sesuatu yang baru buat aku. Misal kita ada 2 seri data, yang 1 kita maunya grafik scatter smooth line, yang 1 scatter with marker.

Gini cara buatnya
Kode: [Pilih]
  With GrafikPnMn
            ' Tambahkan chart baru
            .Charts.Add()
            ' Tambahkan data baru
            .Charts(0).SeriesCollection.Add()
            .Charts(0).SeriesCollection.Add()
            ' Setting
            .Charts(0).HasTitle = True
            .Charts(0).Title.Caption = "Grafik Pn-Mn"
            .Charts(0).[b]SeriesCollection(0)[/b].Type = OWC10.ChartChartTypeEnum.chChartTypeScatterSmoothLine
            .Charts(0).[b]SeriesCollection(1)[/b].Type = OWC10.ChartChartTypeEnum.chChartTypeScatterMarkers
            ' Masukkan data
            ' X axis
            .Charts(0).SeriesCollection(0).SetData(OWC10.ChartDimensionsEnum.chDimXValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, mngrafik)
            .Charts(0).SeriesCollection(1).SetData(OWC10.ChartDimensionsEnum.chDimXValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, mu)
            ' Y axis
            .Charts(0).SeriesCollection(0).SetData(OWC10.ChartDimensionsEnum.chDimYValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, pngrafik)
            .Charts(0).SeriesCollection(1).SetData(OWC10.ChartDimensionsEnum.chDimYValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, pu)
        End With

Lihat bagian yang aku tebalkan? Kalau lihat contoh exshan diatas, karena grafiknya cuma 1 seri, gak perlu ditambah itu. Tapi kalau kita mau combine 2 seri didalam 1 grafik, dan tipe grafiknya beda, gitu caraku. Entah apa exshan ada cara lebih singkat lagi.
« Edit Terakhir: 09 April 2008, 09:22:10 oleh stash »
Twitter ID : stefano1003
Facebook : http://www.facebook.com/stefano.ariestasia
Google+ : stefano.ariestasia
Blog : http://catatanstefano.wordpress.com

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
Re: VB 2008 lebih lanjut
« Jawab #8 pada: 09 April 2008, 11:23:58 »
Wah kalau begitu aku beruntung sekali sudah ada Web Components jadi nggak perlu ngapa-ngapain lagi :D

Catatan saja, semua BBC tidak bekerja di dalam BBC code, jadi yang ditebalkan di atas adalah properti SeriesCollection. Memang begitu caranya, tidak ada cara lain :)
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Offline Stash

  • The Sentinel of Volcano
  • Kru RPGFWID
  • Lv 7 Ahli
  • ******
  • Tulisan: 3.205
  • Karma: 0
  • Jenis kelamin: Pria
  • Journey Never Ending
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Catatan Stefano
Re: VB 2008 lebih lanjut
« Jawab #9 pada: 09 April 2008, 12:03:47 »
Kode: [Pilih]
  ' Datanya...
        Dim arrData(4) As Object
        arrData(0) = 2.4
        arrData(1) = 0
        arrData(2) = -2.1
        arrData(3) = 0
        ' Teks untuk keterangan X-axis
        Dim arrKategori(4) As Object
        arrKategori(0) = 0
        arrKategori(1) = 1.2
        arrKategori(2) = 0
        arrKategori(3) = -2

        Dim x As Object, y As Object
        x = 1
        y = 1

        With AxChartSpace1
            ' Tambahkan chart baru
            .Charts.Add()
            ' Tambahkan data baru
            .Charts(0).SeriesCollection.Add()
            .Charts(0).SeriesCollection.Add()
            ' Setting
            .Charts(0).HasTitle = True
            .Charts(0).Title.Caption = "Contoh"
            .Charts(0).SeriesCollection(0).Type = OWC10.ChartChartTypeEnum.chChartTypeScatterSmoothLine
            .Charts(0).SeriesCollection(1).Type = OWC10.ChartChartTypeEnum.chChartTypeScatterMarkers


            .Charts(0).SeriesCollection(0).SetData(OWC10.ChartDimensionsEnum.chDimYValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, arrKategori)
            .Charts(0).SeriesCollection(0).SetData(OWC10.ChartDimensionsEnum.chDimXValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, arrData)

            .Charts(0).SeriesCollection(1).SetData(OWC10.ChartDimensionsEnum.chDimXValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, x)
            .Charts(0).SeriesCollection(1).SetData(OWC10.ChartDimensionsEnum.chDimYValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, y)
        End With

Coba kamu jalanin kode ini. Trus coba angka x dan y kamu ganti 1.5.
Twitter ID : stefano1003
Facebook : http://www.facebook.com/stefano.ariestasia
Google+ : stefano.ariestasia
Blog : http://catatanstefano.wordpress.com

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
Re: VB 2008 lebih lanjut
« Jawab #10 pada: 09 April 2008, 12:22:02 »
Ada sedikit salahnya yang nggak kelihatan jelas, yaitu di baris berikut:

Kode: [Pilih]
Dim x As Object, y As Object
x = 1
y = 1

Ini data untuk seri 1 kan? Coba lihat keterangan untuk parameter ketiga fungsi SetData, yaitu DataReference. Di situ disyaratkan jika parameter kedua diisi chDataLiteral:

Kutip
.Charts(0).SeriesCollection(1).SetData(OWC10.ChartDimensionsEnum.chDimXValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, x)
.Charts(0).SeriesCollection(1).SetData(OWC10.ChartDimensionsEnum.chDimYValues, OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, y)

maka DataReference harus berupa array satu dimensi atau CSV.

Kelihatan x dan y bukan array satu dimensi? Seharusnya seperti ini:

Kode: [Pilih]
Dim x(1) As Object, y(1) As Object
x(0) = 1
y(0) = 1
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
Mengambil data dari Excel
« Jawab #11 pada: 25 April 2008, 01:49:01 »
Mungkin ini sudah ditunggu-tunggu, akhirnya ketemu juga :) Yang akan aku gunakan di sini adalah Excel 2007, namun sepertinya bisa juga digunakan untuk Excel 2003.

Errata sebentar...

Errata

Di kontrol Grafik, aku sebutkan Microsoft Office Chart 11.0 itu untuk Office 2007. Yang benar adalah untuk Office 2003.

Balik lagi ke topik! Ada reference yang harus ditambahkan supaya program kita bisa berkomunikasi dengan Excel, yaitu Microsoft Excel 12.0 Object Library (versi 11.0 untuk Office 2003). Nah, setelah itu, kita bisa langsung gunakan coding berikut. Anggap saja terjadinya di Form1_Load :P

Sebelum masuk ke Sub Form1_Load, pastikan untuk menambahkan baris ini di posisi teratas (di luar Public Class Form1):

Kode: [Pilih]
Imports Microsoft.Office.Interop

Baru setelahnya kita masuk Sub Form1_Load:

Kode: [Pilih]
Dim xlApp As New Excel.Application, xlWorkbook As Excel.Workbook
Dim xlWorksheet As Excel.Worksheet

Try
    System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
    ' Buka workbook
    xlWorkbook = xlApp.Workbooks.Open(My.Application.Info.DirectoryPath & "\coba.xlsx")
    ' Pilih worksheet
    xlWorksheet = xlWorkbook.Sheets("Sheet1")
    ' Ambil data!
    Label1.Text = xlWorksheet.Range("B2").Value
    xlWorkbook.Close(False)
Catch ex As Exception
    MessageBox.Show(ex.ToString)
End Try

Sebelum mencoba, pastikan dulu hal-hal berikut:

1. Pastikan sudah ada satu label bernama Label1 pada form.

2. Pastikan berkas coba.xlsx sudah ada di map bin\Debug pada map projek (jadi lengkapnya mungkin seperti ini: D:\My Documents\Visual Studio 2008\Projects\Sample\Sample\bin\Debug).

3. Pastikan pada sel B2 ada isinya, atau program ini tidak akan menghasilkan apa-apa :D

Sekarang coba jalankan. Apa keluar sesuatu di label?
« Edit Terakhir: 25 April 2008, 01:51:40 oleh Èxsharaèn »
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Offline Èxsharaèn

  • Pölisia mar Ranch-i-ru
  • Administrator
  • Lv 9 Petualang senior
  • ************
  • Tulisan: 5.650
  • Karma: 8
  • Jenis kelamin: Pria
  • Veni, veni, venias; ne me mori facias...
  • Bergabung sejak: 14/10/2006
    YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • RPG Fantasy Web Indonesia
Explain the code!
« Jawab #12 pada: 25 April 2008, 02:12:41 »
Terlihat susah? Sebenarnya nggak juga, asal kita tahu konsepnya. Yuk disimak!

Seperti yang kita tahu, sebuah dokumen Excel disebut sebagai workbook. Satu workbook akan memiliki satu atau lebih worksheet. Nah, aplikasi VB kita akan merujuk pada urutan ini untuk mendapatkan nilai tertentu dari suatu sel, atau bahkan dari suatu range tertentu. Jadi, urutannya seperti ini:

VB -> Excel.Application -> Excel.Workbook -> Excel.Worksheet -> Excel.Range

Ayo tilik kodenya!

Pertama-tama, kita akan mengimpor namespace Microsoft.Office.Interop:

Kode: [Pilih]
Imports Microsoft.Office.Interop

Apa harus diimpor? Jawabnya tidak, namun nanti kita akan menemui kesulitan saat menggunakan namespace ini. Di mana efeknya? Di sini:

Kode: [Pilih]
Dim xlApp As New Excel.Application, xlWorkbook As Excel.Workbook
Dim xlWorksheet As Excel.Worksheet

Andaikan kita tidak mengimpor, lengkapnya adalah:

Kode: [Pilih]
Dim xlApp As New Microsoft.Office.Interop.Excel.Application, xlWorkbook As Microsoft.Office.Interop.Excel.Workbook
Dim xlWorksheet As Microsoft.Office.Interop.Excel.Worksheet

Panjang kan? Kalau mau, boleh saja yang diimpor langsung spesifik merujuk ke Microsoft.Office.Interop.Excel. Sementara aku potong sampai Interop supaya aku ingat MS Office apa yang aku gunakan (walaupun nama objek sudah aku beri awalan xl untuk menandai MS Excel).

Langkah berikutnya agak ribet, dan ini berhubungan dengan locale (set bahasa) Windows kita terhadap locale Microsoft Office yang kita miliki. Kalau kebetulan tidak sama, akan terjadi kesalahan Old type of library atau sejenisnya. Karena itu, untuk mengatasinya, sementara kita samakan dulu locale komputer kita dengan locale default MS Office, yaitu English (US). Kode yang diperlukan dihapalkan saja:

Kode: [Pilih]
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")

Kemudian, kita membuka workbook yang akan kita gunakan.

Kode: [Pilih]
xlWorkbook = xlApp.Workbooks.Open(My.Application.Info.DirectoryPath & "\coba.xlsx")

Sebenarnya, fungsi Open meminta path ke workbook kita. Nah, kalau aku gunakan path absolut D:\My Documents\..., risikonya adalah aplikasi kita mungkin nggak jalan di komputer lain. Siapa tahu My Documents-nya di drive berbeda? Lalu, apakah pengguna pasti menginstal aplikasi kita ke situ? Nggak kan? Nah, supaya aman, gunakan path relatif. My.Application.Info.DirectoryPath akan otomatis merujuk ke map tempat aplikasi kita berada. Kalau workbook kita juga diletakkan di situ, aman sudah :)

Setelah buka workbook, kita pilih worksheet:

Kode: [Pilih]
xlWorksheet = xlWorkbook.Sheets("Sheet1")

Baru deh kita bisa akses data yang ada di worksheet itu!

Kode: [Pilih]
Label1.Text = xlWorksheet.Range("B2").Value

Terakhir, jangan lupa menutup aplikasi Excel-nya. Lho, memangnya Excel-ku terbuka kah? Kok nggak ada? Ya memang karena xlApp tidak ditampilkan :D Kalau aplikasi Excel kita tidak ditutup, workbook kita akan terbuka terus dan tidak akan bisa diakses lagi dari Excel lainnya sampai Excel yang terbuka tadi ditutup paksa (satu-satunya cara lewat Task Manager). Karena itu, tutup dulu Excel kita:

Kode: [Pilih]
xlWorkbook.Close(False)

Fungsi Close sejatinya boleh tidak menggunakan parameter sama sekali, namun nanti akan muncul konfirmasi apakah workbook kita akan disimpan atau tidak. Supaya tidak muncul, beri saja parameter False, berarti workbook kita tidak disimpan.

Ternyata mudah ya ;) untuk mengubah nilai di suatu sel, tinggal beri nilai saja ke range tersebut. Contoh:

Kode: [Pilih]
xlWorksheet.Range("B2").Value = 5

Jangan lupa disimpan :)
Jangan lupa ikutan serunya petualangan Our Journey!
~ A, èxshna il utnön qu our journey shallaran a èndh... ~

Profiles
WAYN http://Exsharaen.wayn.com
About.me http://about.me/hoshiro.exsharaen

Tags:
 

Dengan Jawab-Cepat Anda dapat menggunakan kode buletin board dan smiley seperti tulisan normal, tapi jauh lebih menyenangkan.

Peringatan: topik ini belum dituliskan setidaknya 120 hari.
Kecuali Anda yakin ingin menjawabnya, harap pertimbangkan untuk memulai sebuah topik baru.

Nama: Email:
Anti-spam: complete the task