Pages

Friday, July 23, 2010

Memberi Warna Baris Pada DataGridView

Coding berikut ini untuk memberi warna background baris pada DataGridView berdasarkan nilai atau teks tertentu yang terdapat pada cell.

For Each row As DataGridViewRow In DataGridView1.Rows
  If Not row.IsNewRow Then
    If Not row.Cells(1).Value Is DBNull.Value Then
      If row.Cells(1).Value = "Yes" Then
        row.DefaultCellStyle.BackColor = Color.Red
      End If
    End If
  End If
Next

Tuesday, July 13, 2010

Manghapus dan Menambah Item Pada ListView

Contoh coding untuk menambah item:
' Adds a new item with ImageIndex 3
ListView1.Items.Add("List item text", 3)


Contoh coding untuk menghapus item:
' Removes the first item in the list
ListView1.Items.RemoveAt(0)
' Clears all items:
ListView1.Items.Clear()

Saturday, July 10, 2010

Conversion From Type 'DBNull' to Type 'String' is Not Valid

Suatu saat kita tentu pernah berhadapan dengan pesan exception seperti pada gambar berikut:


Pesan tersebut muncul ketika kita akan menampilkan data dimana baris record tersebut pada salah satu field-nya berisi nilai 'null' alias tidak terdapat data. Agar pesan exception tersebut tidak muncul lagi pastikan bahwa semua field berisi data dan tidak ada yang kosong alias 'null'. Cara lainnya adalah dengan menggunakan IsDBNull. Contoh pemakaian perintah IsDBNull seperti pada syntax di bawah ini:

cn.Open()
comm.Connection = cn
comm.CommandType = CommandType.Text
comm.CommandText = "select * from test where kolom1 = '888'"
dr = comm.ExecuteReader
    If dr.Read Then
         If IsDBNull(dr!kolom2) Then
             TextBox1.Text = ""
         Else
             TextBox1.Text = dr!kolom2
         End If
     End If

Pada syntax di atas jika terdapat nilai 'null' pada kolom2, maka pada TextBox1 akan tampil kosong dan sebaliknya, jika terdapat data akan menampilkan isi dari field kolom2.

Friday, July 9, 2010

Kapan Menggunakan ExecuteReader, ExecuteNonQuery, ExecuteScalar

SqlClient namespace in ADO.NET provides 3 basic methods to run queries with SqlCommand against MSSQL:

    * ExecuteReader
    * ExecuteNonQuery
    * ExecuteScalar

.NET Framework is around for 5 years already now, but these 3 methods are among the most misused in application development. The problem is that ExecuteReader will work for every query via SqlCommand, so most people use it everywhere. The direct result - slow and non-scalable solution. Other results include database bottlenecks, locks and connection leaks.


ExecuteReader

Do not use: when database query is going to provide for sure exactly 1 record. It may be getting record by its id (which is PK in the database) - GetOrderById and such. In this case use ExecuteNonQuery with output parameters.

Use: when database query is going to provide a set of records. It may be search or report.

ExecuteNonQuery

Use: when we are talking about a single database record - in Update, Insert, Delete and Get by Id. In all these cases we can use input/output/input-output parameters. Please note that from the application architecture point of view it is also good practices when your Insert and Update stored procedure returns changed record exactly like Get By Id method does.

ExecuteScalar

Do not use: when database query returns a single value and this value can be defined as parameter in T-SQL. ExecuteNonQuery with output parameter(s) is always preferred in this case since it is more flexible, tomorrow there will be 2 values therefore having ExecuteNonQuery we do not need to change method signatures.

Use: when database query returns a single value and this value cannot be defined as output parameter, because of T-SQL type limitation for variables. For example type image cannot be output parameter in MSSQL.

The most common example for ExecuteScalar is fetching a single image stored in the database and converting it to array of bytes. If you google it - most examples will demonstrate using of ExecuteReader to accomplish image handler, however ExecuteScalar will be more scalable and faster.

Conclusion

Always use ExecuteNonQuery except: when you have a set of records - use ExecuteReader and when you have a single output value that cannot be defined as a parameter - use ExecuteScalar.

Saturday, July 3, 2010

Try … Catch Pada VB .NET

VB.NET memiliki kelas inbuilt yang berhubungan dengan errors. Kelas ini disebut Exception. Ketika error exception ditemukan, objek Exception dibuat. Struktur coding pada VB.NET untuk menangani error dengan Exception tersebut disebut struktur Try ... Catch.

Try


Catch ex As Exception


Finally


End Try


Kata Try berarti "Coba jalankan code ini". Kata Catch berarti "Tangkap semua error di sini". Sedangkan variabel ex, dan tipe variabel itu adalah sebuah objek Exception. Ketika program Anda dijalankan, VB akan mencoba mengeksekusi semua code pada bagian Try. Jika program berjalan dengan baik, bagian Catch akan dilewatkan. Sebaliknya, jika terjadi sebuah error, VB.NET akan menuju langsung ke Catch. Tambahkan baris berikut ke bagian Catch:

MsgBox(ex.Message)

Jika program dijalankan dan terjadi error, maka pesan error tersebut akan muncul sebagai message box dan tidak berupa pesan error seperti berikut:


Bagian Finally akan selalu dijalankan, walaupun terjadi error atau tidak. Biasanya bagian Finally berisi coding untuk membersihkan layar atau menutup koneksi/file yang telah terbuka.

Thursday, July 1, 2010

Membuat Grafik Pada Visual Basic 2008

Untuk membuat grafik pada VB NET bisa melalui laporan (report) atau melalui form. Saya akan mengajarkan menampilkan grafik pada form VB .NET menggunakan komponen Microsoft Chart Control 6.0 (SP4) (OLEDB).

Langkah-langkah membuat grafik pada form sebagai berikut:
1. Buka sebuah project lalu tambahkan sebuah form baru.
2. Pada menu Tools pilih Choose Toolbox Items.


3. Pada window Choose Toolbox Items masuk ke tab COM Components lalu centang Microsoft Chart Control 6.0 (SP4) (OLEDB), klik OK.


4. Pada Toolbox sudah terdapat komponen Microsoft Chart Control 6.0 (SP4) (OLEDB), pillih, lalu tambahkan pada form Anda.


5. Sekarang form Anda telah terdapat komponen tampilan grafik dan langkah selanjutnya adalah membuat coding untuk menampilkan grafik tersebut.

Beberapa atribut dasar yang terdapat pada AxMSChart:
.chartType untuk menentukan tipe/jenis tampilan grafik
.ColumnCount untuk menentukan jumlah grafik atau perbandingan tampilan grafik
.RowCount untuk menentukan berapa banyak baris data angka/nilai yang akan ditampilkan pada grafik
.ColumnLabel untuk menampilkan label pada kolom grafik
.RowLabel untuk menampilan label pada baris angka/nilai grafik
.Data untuk menentukan nilai dari data grafik baik untuk kolom maupun baris
.Row untuk menentukan baris
.Column untuk menentukan kolom

Berikut ini adalah contoh coding untuk menampilkan grafik:

Dim T As Integer

'Tentukan jenis tampilan grafik
AxMSChart1.chartType = MSChart20Lib.VtChChartType.VtChChartType2dBar
AxMSChart1.RowCount = 5 'Menentukan jumlah baris adalah 5
AxMSChart1.ColumnCount = 2 'Menentukan jumlah grafik adalah 2

'Perulangan
For T = 1 To AxMSChart1.RowCount 'Here it is dynamically and will work in all cases of values for AxMSChart1.Row

'Set that we want to edit the row "T"
AxMSChart1.Row = T

'Setting it's label to T
AxMSChart1.RowLabel = T

'Memanipulasi grafik 1
AxMSChart1.Column = 1 'Set that I want to edit the first graph
AxMSChart1.Data = T * 20

'Memanipulasi grafik 2
AxMSChart1.Column = 2 'Set that I want to edit the second graph
AxMSChart1.Data = T * 15
Next

Jika Anda ingin membuat grafik perbandingan antara satu grafik dengan grafik yang lain buatlah jumlah kolomnya (column) lebih dari 1 sesuaikan dengan jumlah perbandingan grafik. Jangan pusing @_@ dengan istilah kolom (column) dan baris (row) pada grafik. Kalian bisa lihat pada tampilan form Grafik Penjualan di bawah ini. Baris (row) ditunjukkan dengan angka 1 s.d. 5 pada sumbu X sedangkan kolom terlihat pada banyaknya grafik di salah satu baris (misalnya baris 1 terdapat dua grafik yaitu grafik hijau dan grafik merah berarti ada 2 kolom).

Tampilan grafik dari coding di atas:

 

Blogger news

About Me

My photo
Palembang, Sumatera Selatan, Indonesia
Seorang yang ingin terus belajar.