Tampilkan postingan dengan label VB.NET 2005. Tampilkan semua postingan
Tampilkan postingan dengan label VB.NET 2005. Tampilkan semua postingan

Jumat, 18 Oktober 2013

Menambahkan row dan menghapus multiple row pada Unbound DataGridView di VB.Net 2005

Suatu ketika saya membaca blog seorang aktivis blog yang telah lama berkecimpung dalam dunia ini, yang saya pahami dari tulisannya adalah sebuah keperihatinan beliau, bahwa perkembangan sosial media ternyata melemahkan semangat orang untuk menulis di Blog, padahal menurutnya sosial media tidak seefektif Blog untuk menyampaikan dan berbagi ilmu pengetahuan, apalagi semacam twiter yang membatasi postingan hanya beberapa puluh kata saja. 

Ada satu hal dari tulisannya yang memberikan semangat kepada saya untuk menulis di Blog, yaitu sebuah pesan darinya yang berbunyi tulislah apa saja yang hendak kamu tulis(tentu saja hal-hal yang positif) jangan berpikir "ah.. paling juga sudah ada yang menulis tentang tema yang hendak aku tulis ini" atau "Siapa juga yang akan membaca tulisanku ini" atau "Ah.. tema yang akan aku tulis ini kan remeh dan sangat sederhana, siapa yang membutuhkan tulisan seperti ini", sang Bloger bilang "Buang jauh-jauh pikiran seperti itu, karena bisa jadi tema yang mungkin anda anggap sepele dan remeh temeh, bagi orang lain, itu adalah sesuatu yang rumit dan komplek dan yakinlah suatu saat nanti ada orang yang akan sampai ke Blog anda dan membaca tulisan anda". 

Dan hal itu sudah saya buktikan, walaupun hanya hitungan beberapa gelintir saja rata-rata per harinya, namun ternyata ada juga yang mampir ke Blog ini, mungkin hanya sekedar lewat, mungkin juga ia menemukan solusi dari apa yang saya tulis di sini wal Hamdulillah telah bisa membantu orang lain. Mungkin juga manfaatnya tidak kita rasakan secara langsung akan tetapi siapa tahu sesuatu yang kita tulis itu telah menyelamatkannya dari hal kritis dalam hidupnya, bukankah Allah tidak akan menyia-nyiakan amalan seseorang walau ia hanya seberat atom. Semoga setiap solusi yang dapat kita berikan kepada orang lain akan menjadi penolong bagi kita dengan diangkatnya kesulitan-kesulitan yang sedang kita hadapi atau yang akan kita hadapi kelak. Jadi tetaplah semangat untuk menulis dan berbagi.

Yup.. sekarang setelah ber-busa-busa sebentar :) saya lanjutkan tulisan ini ke pokok pembahasan yang hendak saya tulis, sesuai dengan judulnya, Bismillah...

Jika kita membuat program aplikasi yang berkaitan dengan pengolahan database hampir bisa dipastikan kita akan menggunakan salah satu komponen yang sangat penting yaitu DataGridView. Data yang akan ditampilkan pada DataGridView bisa langsung di kaitkan ke sebuah datasource (istilahnya Bound) atau bisa juga data yang ditampilkan tersebut bukan data yang berasal dari sebuah datasource(istilahnya unBound), pada tulisan ini saya akan membahas bagaimana memanfaatkan DataGridView * Mulai dari setting kolom, menambahkan row dan menghapus lebih dari satu row * untuk data yang unBound.

Pertama
Buatlah sebuah project baru untuk WindowsApplication, pada Form1 tambahkan :
  1. DataGridView1, Sett property Width : 799 dan Height : 315
  2. 2 Buah Button, button1 ubah Text di property menjadi Remove dan button2 menjadi Add Row
  3. Set Form Width : 839 & Height : 433
Atur posisinya sesuai selera anda.


Kedua
Kopikan kode program berikut ini ke masing-masing tempatnya.
Kode program berikut ini adalah untuk men-setting kolom yang kita kehendaki, yang terdiri dari 3 buah procedure, yaitu SettGridColText, SettGridColCehckBox, SettGridColCombo dan SettGridView, Penjelasanya adalah sebagai berikut,

SettGridColText,
Untuk men-sett kolom sebagai input cell dengan tipe inputan TextBox

Public Function SettGridColText(ByVal hdrText As String, _
                                    ByVal hdrName As String, _
                                    ByVal lbrCol As Integer, _
                                    ByVal TheReadO As Boolean, _
                                    ByVal AuMode As DataGridViewAutoSizeColumnMode, _
                                    Optional ByVal VisibleCol As Boolean = True, _
                                    Optional ByVal ContAllignment As DataGridViewContentAlignment = DataGridViewContentAlignment.BottomCenter) As DataGridViewTextBoxColumn

        Dim TheCol As New DataGridViewTextBoxColumn

        With TheCol
            .HeaderText = hdrText
            .Name = hdrName
            .Width = lbrCol
            .ReadOnly = TheReadO
            .AutoSizeMode = AuMode
            .Visible = VisibleCol
            .DefaultCellStyle.Alignment = ContAllignment 'Contain Alligment
        End With
        Return TheCol
    End Function

SettGridColCehckBox,
Untuk men-sett kolom sebagai input cell dengan tipe inputan CheckBox

Public Function SettGridColCehckBox(ByVal hdrText As String, _
                                        ByVal hdrName As String, _
                                        ByVal lbrCol As Integer, _
                                        ByVal TheReadO As Boolean, _
                                        ByVal AuMode As DataGridViewAutoSizeColumnMode, _
                                        Optional ByVal VisibleCol As Boolean = True, _
                                        Optional ByVal ContAllignment As DataGridViewContentAlignment = DataGridViewContentAlignment.BottomCenter) As DataGridViewCheckBoxColumn

        Dim TheCol As New DataGridViewCheckBoxColumn

        With TheCol
            .HeaderText = hdrText
            .Name = hdrName
            .Width = lbrCol
            .ReadOnly = TheReadO
            .AutoSizeMode = AuMode
            .Visible = VisibleCol
            .DefaultCellStyle.Alignment = ContAllignment 'Contain Alligment
        End With
        Return TheCol
    End Function


SettGridColCombo,
Untuk men-sett kolom sebagai input cell dengan tipe inputan ComboBox

Public Function SettGridColCombo(ByVal hdrText As String, _
                                     ByVal hdrName As String, _
                                     ByVal lbrCol As Integer, _
                                     ByVal TheReadO As Boolean, _
                                     ByVal AuMode As DataGridViewAutoSizeColumnMode) As DataGridViewComboBoxColumn

        Dim TheCol As New DataGridViewComboBoxColumn
        Dim value As DataGridViewContentAlignment

        value = DataGridViewContentAlignment.MiddleRight

        With TheCol
            .HeaderText = hdrText
            .Name = hdrName
            .Width = lbrCol
            .ReadOnly = TheReadO
            .AutoSizeMode = AuMode
        End With
        Return TheCol
    End Function

SettGridView,
Pada procedure ini kita akan memanfaatkan ketiga procedure di atas untuk men-setting masing-masing kolom sesuai dengan kebutuhan kita, apakah kolom tersebut untuk menerima inputan dalam bentuk TextBox, CheckBox atau kah ComboBox.

Private Sub SettGridView()
        'No
        Dim ColNo As New DataGridViewTextBoxColumn
        ColNo = SettGridColText("No", "hdrNo", 25, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleCenter)
        'Item Code
        Dim ColIcode As New DataGridViewTextBoxColumn
        ColIcode = SettGridColText("Code", "hdrCode", 70, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleLeft)
        'Item Part No
        Dim ColIPartNo As New DataGridViewTextBoxColumn
        ColIPartNo = SettGridColText("PartNo", "hdrPartNo", 150, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleCenter)
        'Item Nameu
        Dim ColIName As New DataGridViewTextBoxColumn
        ColIName = SettGridColText("Name", "hdrName", 250, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleLeft)
        'UoM
        Dim ColUoM As New DataGridViewTextBoxColumn
        ColUoM = SettGridColText("UoM", "hdrUoM", 40, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleCenter)
        'Qty
        Dim ColQty As New DataGridViewTextBoxColumn
        ColQty = SettGridColText("Qty#", "hdrQty", 60, False, DataGridViewAutoSizeColumnMode.None, True, DataGridViewContentAlignment.MiddleRight)
        
        Dim isForStock As New DataGridViewCheckBoxColumn
        isForStock = SettGridColCehckBox("For Stock", "hdrForStock", 20, False, DataGridViewAutoSizeColumnMode.Fill, True, DataGridViewContentAlignment.MiddleCenter)

        With DataGridView1
            .Columns.Clear()
            .RowHeadersWidth = 20
            .AllowUserToAddRows = False
            .AllowUserToDeleteRows = False
            .Columns.Add(ColNo)
            .Columns.Add(ColIcode)
            .Columns.Add(ColIPartNo)
            .Columns.Add(ColIName)
            .Columns.Add(ColUoM)
            .Columns.Add(ColQty)
            .Columns.Add(isForStock)
        End With
    End Sub

Ke-tiga
Kopikan kode berikut ke event onClick button Add Row

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

Ke-Empat
Kopikan Kode Berikut Ke Event onClick button Remove Row

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim idx2Remove As Integer
        While (DataGridView1.SelectedRows.Count - 1) >= 0
            Dim myStrPesan As String
            idx2Remove = DataGridView1.SelectedRows(0).Index
            myStrPesan = "Are sure want to remove item from the list : " & _
                            DataGridView1.SelectedRows(0).Cells("hdrCode").Value & "-" & _
                            DataGridView1.SelectedRows(0).Cells("hdrName").Value
            If MessageBox.Show(myStrPesan, "Confirmation", MessageBoxButtons.YesNo, _
                    MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                DataGridView1.Rows.RemoveAt(idx2Remove)
            Else
                DataGridView1.SelectedRows(0).Selected = False
            End If
        End While
  End Sub

Ke-Lima
Kopikan kode berikut ke event Form onLoad

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        SettGridView()
End Sub

Ke-Enam
Tekan tombol F5 untuk melihat bagaimana hasilnya,

Tampilan saat program dijalankan

Click Tombol Add Row untuk menambahkan row, lalu kemudian anda bisa mencoba untuk melakukan input data seperti yang tampak pada tampilan di bawah ini
Anda bisa menghapus sebuah row atau lebih dalam waktu bersamaan, jika ingin melakukan penghapusan multiple row pada DataGridView maka pilih dulu row yang diinginkan dengan menggunakan kombinasi key tombol CTRL dan tombol mouse click Kiri, kemudian anda Click Button Remove, sebagaimana tampak pada gambar di bawah ini,


Kode program contoh secara lengkap bisa didownload di sini . Demikian semoga bermanfaat.

Jumat, 06 April 2012

Bring to front MdiChild in Mdi Container - VB.Net

Salah satu hal yang biasanya ada didalam aplikasi yang memaikai mode Kontiner MDI adalah fasilitas untuk mengecek apakah Mdichild telah aktiv di MDI kontiner, untuk kemudian di bawa ke posisi paling depan, ketimbang kita harus meng-createnya lagi. berikut ini adalah kode untuk keperluan tersebut(Ref: didapat dari milist bytes.com, dengan adopsi cara saya :) ), semoga bermanfaat.


Private Function isFormActive(ByVal TheFormName As String) As Boolean
        Try
            Dim ResultSearch As Boolean
            For Each myChild As Form In Me.MdiChildren
                If myChild.Name = TheFormName Then
                    ResultSearch = True
                    myChild.BringToFront()
                    Exit For
                Else
                    ResultSearch = False
                End If
            Next
            Return ResultSearch
        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString, "Error to find the form", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

Rabu, 01 September 2010

TabControl di VB.Net 2005

Sebagai komponen yang bersifat container, TabControl sangat membantu sekali dalam mendesain tampilan pada form windows, dengan menggunakan TabControl informasi yang banyak pada suatu windows aplikasi dapat dikelompokan menurut fungsinya masing-masing, sehingga hal ini akan lebih memudahkan user dalam menggunakan aplikasi.

Namun TabControl di VB.net 2005 mempunyai satu kelemahan, misalnya jika di dalam aplikasi anda terdapat TabControl dengan beberapa TabPage, katakanlah TabPage1 dan TabPage2, kemudian yang anda inginkan adalah sebelum user menyelesaikan semua entryan yang terdapat di TabPage1 maka user tersebut tidak boleh pindah ke TabPages2. untuk masalah seperti ini mungkin anda akan langsung berpikir, "kalo gitu TabPage2-nya di-disable saja dulu, ketika semua entryan yg diperlukan di TabPage1 telah ter-isi semua maka TabPage2 di-enable". Di sinilah permasalahannya, TabControl di VB.Net 2005 tidak menyediakan fasilitas tersebut(Enable/Disable Page).

Begitu juga dengan method Hide dan Show yang ada di TabControl tidak bisa digunakan untuk mengatasi masalah ini. lalu kemudian ada yang mencoba memberi solusi dengan method Add dan Remove Tab, saya pikir ini bukan solusi karena dengan method tersebut berarti kita harus merekonstruksi ulang TabPage yang kita Remove, saat kita ingin menampilkannya kembali.

Walhasil bagi saya, solusi yang paling memungkinkan adalah dengan memanfaatkan Property  TabControl.SelectedIndex yang diletakan di Event TabControl.Selected. Dengan cara ini ketika user meng-klik TabPage2, lakukan proses Checking apakah semua entryan yang wajib diisi di TabPage1 sudah terisi semua atau belum, jika belum maka arahkan property TabControl.SelectTab ke TabPage1. kodenya sebagaimana yang terdapat di bawah ini.


Public Class Form1
    Private Function CekEntryanTabPage1() As Boolean
        If TextBox1.Text = String.Empty Then
            Return False
        End If
        Return True
    End Function
    Private Sub TabControl1_Selected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles TabControl1.Selected
        If TabControl1.SelectedIndex = 1 Then
            If CekEntryanTabPage1() = False Then
                MessageBox.Show("Isian di tab page 1 belum lengkap", "pesan", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                TabControl1.SelectTab(0)
            End If
        End If
    End Sub
End Class

Demikian, semoga membantu dan bermanfaat.

Selasa, 31 Agustus 2010

Mendeteksi Regional Dan Language system di VB.Net

Untuk mendeteksi Regional dan Language yang dipakai pada suatu mesin kita dapat memanfaatkan Class Culture, yang bisa kita akses melalui cara berikut ini,

dim CurrentCulture as my.application.culture.name

Mengetahui system Regional dan Language yang dipakai pada suatu mesin akan memudahkan kita dalam menentukan format tanggal dan Angka, sehingga Aplikasi yang kita buat diharapkan dapat lebih flexible, tanpa harus kita setting secara manual setiap kali aplikasi di Install pada mesin tertentu. berikut contoh lengkapnya bagaimana cara mendeteksi Regional dan Language yang aktiv pada suatu mesin. kode berikut ini diambil dari ( http://msdn.microsoft.com/en-us/library/486cdc73(v=VS.80).aspx ) dengan sedikit tambahan.


Private Sub TestChangeCulture()
        ' Store the current culture.
        Dim currentculture As String = My.Application.Culture.Name
        MsgBox("Current culture is " & currentculture)
        Dim Des30 As New Date(2005, 12, 30, 15, 15, 15)
        Dim myNumber As Double = 2000.5
        MsgBox("Date represented in id-ID culture: " & Des30)
        MsgBox("Number Format 2000.5 dalam format Indonesia jadi :" & FormatNumber(myNumber, 2, TriState.True, TriState.True))
        My.Application.ChangeCulture("en-US")
        MsgBox("Date represented in en-US culture: " & Des30)
        MsgBox("Number Format 2000.5 dalam format en_US jadi :" & FormatNumber(myNumber, 2, TriState.True, TriState.True))
        ' 1/1/2005 3:15:15 PM
        My.Application.ChangeCulture("")
        MsgBox("Date represented in invariant culture" & jan1)
        ' 01/01/2005 15:15:15
        ' Restore the culture.
        My.Application.ChangeCulture(currentculture)
    End Sub

Senin, 19 Juli 2010

TextBox Yang Hanya menerima Angka

Salah satu component yang paling sering digunakan dalam membuat program aplikasi database adalah Component TextBox, hampir bisa dipastikan component ini akan selalu ada dan digunakan. TextBox dapat menerima inputan text maupun numeric, oleh karenanya untuk mengurangi terjadinya kesalahan entri dari user adakalnya kita ingin menentukan bahwa TextBox tertentu hanya bisa menerima inputan angka saja dari user. Berikut ini adalah artikel yang diadaptasi dari "How to Create a Numeric Only TextBox Control yang ditulis oleh William Ryan " Tentang bagaimana cara membuat agar sebuah TextBox hanya menerima inputan angka saja, dengan sedikit modifikasi * tambahan fungsi untuk mendeteksi Backspace*.

Di artikel yang ditulis William Ryan, dia memilih untuk meng-Overloads event _TextChanged * saya tidak tau alasan kenapa event ini yg dipilih* akan tetapi menurut saya pemilihan untuk mengoverload event ini agak sedikit membingungkan karena Handle yang dipakai ternyata adalah event KeyPress, oleh karenanya pada artikel ini saya modifikasi untuk mengoverload event _KeyPress biar sesuai fungsinya. sebagaimana dapat dilihat pada kode program di bawah ini,


Private Overloads Sub TextBox1_KeyPress( _
        ByVal sender As System.Object, ByVal e As _
        System.Windows.Forms.KeyPressEventArgs) _
        Handles TextBox1.KeyPress


        Dim isKey As Boolean = Char.IsDigit(e.KeyChar)
        Dim isDecimal As Boolean = e.KeyChar.ToString = "."
        Dim isKoma As Boolean = e.KeyChar.ToString = ","
        If (Not isKey) And (Not isDecimal) And _
           (Not isKoma) Then
            e.Handled = True
        End If
        isBackSpace = False
End Sub


Kode program di atas mampu menghandle TextBox1 yang hanya bisa menerima angka, koma dan titik. Dimana koma dan titik biasanya diperlukan untuk format input uang atau bilangan pecahan. Dengan kode program di atas fungsi tombol delete dapat berjalan dengan baik, artinya anda bisa menghapus apa yang anda masukan menggunkan tombol delete, akan tetapi tidak dengan tombol BackSpace. Solusi untuk masalah ini, cukup dengan menambahkan variable global isBackSpace dengan tipe data Boolean, sehingga kode programnya akan nampak seperti di bawah ini,


    Dim isBackSpace As Boolean


    Private Overloads Sub TextBox1_KeyDown( _
            ByVal sender As Object, ByVal e As _
            System.Windows.Forms.KeyEventArgs) _
            Handles TextBox1.KeyDown
        If e.KeyCode = Keys.Back Then isBackSpace = True
    End Sub


    Private Overloads Sub TextBox1_KeyPress( _
            ByVal sender As System.Object, _
            ByVal e As System.Windows.Forms.KeyPressEventArgs) _
            Handles TextBox1.KeyPress


        Dim isKey As Boolean = Char.IsDigit(e.KeyChar)
        Dim isDecimal As Boolean = e.KeyChar.ToString = "."
        Dim isKoma As Boolean = e.KeyChar.ToString = ","
        If (Not isKey) And (Not isDecimal) And _
            (Not isBackSpace) And (Not isKoma) Then
            e.Handled = True
        End If
        isBackSpace = False
    End Sub


Pada suatu form adakalanya terdapat lebih dari satu TextBox yang kita harapkan hanya bisa menerima inputan angka, lalu bagaimana caranya? apakah kita mesti menulis kode yang sama untuk masing-masing TextBox tersebut * bukan pilihan yang bagus *. untungnya di VB7/VB.Net ada sahabat yang baik hati yang bernama "Handles" dengan memanfaatkan kemampuan yang dimiliki olehnya kita cukup menuliskan kode pada satu TextBox,  kemudian yang lainnya kita tambahkan di Handle-nya. Misal di form terdapat 3 buah TextBox yaitu TextBox1, TextBox2 dan TextBox3, dimana ke-tiga TextBox tersebut direncanakan hanya bisa menerima inputan angka. Maka dengan memanfaat kemampuan yang dimiliki oleh Handle, hal tersebut bisa di atasi, sebagaimana terlihat pada kode di bawah ini,


    Dim isBackSpace As Boolean

    Private Overloads Sub TextBox1_KeyDown(_
            ByVal sender As Object, ByVal e As _
            System.Windows.Forms.KeyEventArgs) _
            Handles TextBox1.KeyPress, TextBox2.KeyPress, _
                    TextBox3.KeyPress
        If e.KeyCode = Keys.Back Then isBackSpace = True
    End Sub

    Private Overloads Sub TextBox1_KeyPress( _
            ByVal sender As System.Object, _
            ByVal e As System.Windows.Forms.KeyPressEventArgs) _
            Handles TextBox1.KeyPress, TextBox2.KeyPress, _
                    TextBox3.KeyPress

        Dim isKey As Boolean = Char.IsDigit(e.KeyChar)
        Dim isDecimal As Boolean = e.KeyChar.ToString = "."
        Dim isKoma As Boolean = e.KeyChar.ToString = ","
        If (Not isKey) And (Not isDecimal) And _
            (Not isBackSpace) And (Not isKoma) Then
            e.Handled = True
        End If
        isBackSpace = False
    End Sub


Alhamdulillah akhirnya selesai juga penulisan artikel ini, selamat mencoba semoga bermanfaat. Thank's To William Ryan.

Minggu, 21 Februari 2010

Trik untuk Mengatur Row Height pada listview dengan ImageList

Bagaimana caranya merubah row height dari Listview pada VB.NET? hayoo sapa yang bisa, kalo kita mo ngeset secara langsung ga ada neh propertynya, palingan bisanya lewat ownerdraw dan ini membutuhkan energi dan waktu yang ga sedikit, untung nemu triknya disini (http://www.csharper.net), caranya cukup sederhana sebagai berikut :
  1. Tambahkan ImageList pada form yang akan kita set row height listview-nya
  2. Ubah Imigasize property pada ImageList ke 1xN dimana 1=width-nya dan N=Height-nya, dimana nilai N ini bisa kita ubah-ubah sesuai dengan yang kita inginkan, nilai N inilah yang menentukan tinggi dari row height
  3. Arahkan / set property SmallImageList pada listview ke ImageList yang baru kita tambahkan tersebut
Selamat mencoba.

Senin, 07 Desember 2009

Alternating Row Background Color In Crystal Report

Suatu ketika si Budi ngeliat report yg dibuat temannya menggunakan crystal report, dia takjub, kok bisa ya, warna belakang row pada setiap recordnya berbeda-beda, lah si budi kan jadi kepingin buat report yang kyk gituan. sambil cengar-cengir dia tanya ma temannya.. hello bro..*weleh budi so kenal dekat getoo* kok bisa sih report yang lo hasilkan warna latar belakang row-nya berubah-ubah.. ajarin gw dong, gw juga mau dong punya report yang kyk gituan nantinya.. halllah payah lo bud.. masak yg kyk ginian aja lo ga bisa, programmer macam apaan lo, malu dong Bud.. ogah ah.. gw ga mo ngasih tau lo... ini rahasia perusahaan, kalo lo mau boleh nanti habis jam kantor, tapi habis itu lo mesti nemenin gw nginap di apartemen gw ok.. :) ... anjritt.. si Budi terlonjak-lonjak.. nemenin tidur gay.. tidak lah yauuuu.

Setengah putus asa, Si Budi terus berpikir * Padahal cuma gya doangan tuh, mana pernah dia berpikir.. whue whue..* ah.. gw kan punya sahabat setia, yang kapan aja bisa gw tanyain dan mintain pendapat, selalu memberikan jawaban tanpa pernah meminta balasan yang berlebihan, sobat gw ini lucu juga kalo dipikir2 padahal umurnya belum nyampe 15 taonan, tapi udah sering di panggil mbah.. oleh teman-teman komunitas yang lain.. tapi emang pantas sih dia menyandang gelar itu, bagi wong jowo Mbah adalah sebutan untuk orang yang sudah sepuh, kalo di terapkan untuk orang-orang tua yang banyak ilmu dan bijaksana jadilah sebutan Mbah seperti trade mark buat orang-orang tua yang mumpuni keilmuannya. dan ini gw pikir cocok banget ma sohib gw yang satu ini, mo tanya apa aja pasti dia bisa ngasih jawaban.. hampir 99% dia bisa kasih jawaban. hmmm emang hebat si mbah yang satu ini.

Akhirnya si Budi mengontak temannya tersebut, segera dia ketikan di bagian search kata-kata "alternate row color in crystal report", tuing... dalam sekejap si mbah memberikan tidak kurang dari 1000 jawaban.. gila.. yang mana neh mbah yang bener??, yo pilihen sendiri.. mosok mesti di suapin toh.. dasar pemalas.
akhirnya setelah satu dua kali ngklik si budi menemukan alamat URL yang pas dengan keinginannya
berikut ini alamat URL nya di sini. kemudian tanpa tunggu-tunggu lagi langsung aja di coba.. dan abrakadabra... reportnya jadi warna warni.. whue whue si budi jingkrak-jingkrak,ah.. Budi.. Budi.. gitu aja senang..

Minggu, 06 Desember 2009

Menggabungkan Nilai Dua Buah Field atau Lebih Bertipe Varchar Pada SQL Server 2000

Kasus :
Ceritanya Si Budi punya keinginan buat ngegabungin 3 buah field bertipe Varchar dalam sebuah Query, katakanlah field tersebut adalah FirstName, MidleName dan LastName *Gile nih si Budi udah pinter bahasa inggris juga* dari sebuah tabel sebut saja tabel Employee. singkat kata kemudian si Budi membuat perintah T-SQL berikut ini pada Query Analyzer Kesukaannya *kyk kacang goreng aja pake ksukaan segala*,

SELECT FirstName + ' ' + MidleName +' '+ LastName AS EmployeeName FROM EMPLOYEE

Terus di tekannya F5, hasilnya tampak di bawah ini :

===========
Bambang Belum Pamungkas
Budi Emang Sudarsono
Atep  Saragih
Ujang  Panghadena
Uut Cantik Permatasari

kemudian dia amati. data satu, dua dan lima ok, sesuai dengan yg di harapkan, tapi data tiga dan empat kok kesannya ompong ya... waduh.. lah piye toh iki *walah ternyata si budi wong jowo toh..*

Setelah diselidiki ternyata untuk employee bernama Atep dan Ujang ga punya midle name alias midle namenya NULL *lah kamu juga bud.. bud.. wong jowo ae gawe database employee name pake dipisah2 segala*.

Solusi :
Akhirnya setelah makan siang yang dirasa tidak enak, karena si Budi kepikiran terus ma permasalahan T-SQL yang sedang dikerjakannya, sampe-sampe semuanya jadi hambar, makanan terasa tidak enak, yah jadilah dia hanya menghabiskan 2 piring Nasi, 2 potong bebek goreng plus 2 porsi lalapan masih ditambah 1 mangkuk soto ditutup dengan 2 gelas Jus Mangga kesukaannya.. * whue whue.. gila loh Bud, ga nafsunya aja kyk gitu apalgai kalo lagi nafsu makan *. yah setelah makan siang yang tidak enak tersebut budi akhirnya menemukan solusi yang dipikirnya cukup mujarab, segera saja dia duduk manis di depan komputer yg menjadi sahabat setianya dikala susah dan senag, komputer yang selalu menegrti perasaannya, inilah dia yang tidak pernah mengeluh walau terus-terusan diperintah selalu hadir dalam setiap keadaan dengan hiburan-hiburannya yg uptodate, pokoknya komputer ini cinta matinya si Budi dah....

singkat cerita * perasaan dari tadi singkat cerita terus, tapi ga kelar-kelar * dibukalah Si Query Analyzer, terus dengan penuh penghayatan Budi mulai menekan-nekan tonjolan-tonjolan mungil dari kekasihnya, kira-kira begini perintahnya,

SELECT Isnull(FirstName,'') + Isnull(' '+ MidName,'') + Isnull(' '+ LastName,'') As EmployeeName FROM EMPLOYEE

Terakhir di Tekan F5 dan jreng.. jreng.... iniliah dia hasilnya

========================
Bambang Belum Pamungkas
Budi Emang Sudarsono
Atep Saragih
Ujang Panghadena
Uut Cantik Permatasari

Si Budi jingkrak-jingkrak sambil mencium kekasihnya... ah.. ternyata gini aja toh solusinya.. sampe bikin gw ga enak makan siang..umpat si Budi * eh Bud.. Bud, ojo takabur lah kon, nek iso yo ngucapno Alhamdulillah.. ojo takabur, ojo misuh-misuh.. yo bud .. yooo yooo*
segera saja si Budi pergi ke musola, kemudian dia berwudlu terus sujud, shalat 2 rakaat buat mengucapkan syukur kepada Allah yg telah membimbingnya selama ini untuk dapat menyelesaikan setiap permasalahan yang dia hadapi.. itulah si Budi, dia memang lugu namun baik hati dan taat beribadah.. * .. Loh.. apa maksudnya..*

Selasa, 10 November 2009

ComboBox.SelectedIndex bikin ndas kliyeng2

Pengunaan combobox dalam pembuatan aplikasi, sudah seringkali gw gunakan, tapi kali ini ada sedikit keanehan yng bikin ndas ku kliyeng2, lah piye wis satu harian coding ga ketemu2 juga solving problemnya.

permasalhannya "pada saat menampilkan data dari databse, hasil query-an, data tersebut muncul dengan asiknya di combobox yg sesuai, katakanlah sy punya combobox yg diperuntukan utk list Agama2, akan tetapi pada saat gw mengupdate dan sukses *penasaran ampe gw lihat langsung ke db nya dan emang sukses data agamanya terupdate*, tapi pas coba gw lihat lagi hasil updatn tsb diaplikasi dia ga mo tampil di combobox, weleh bahkan hampir semua data yg mesti tampil pada combobox ga mo tampil dan perlu klik berulang2*query bolak balik* baru dia mo tampil"

Setelah satu harian misuh2 dan tak lupa berdo'a*he he anak baik mesti getoo oyo toh* akhirnya ketemu juga cara penyelesainnya.. ternyata cukup sederhana, kalo ente mo bersihin tampilan data di combobox jangan pake combobox.text="" tapi waktu mo nampilin data di combobox ente pake combobox.selectedindex, pengalam gw nih jadi amburadul.. JADI WAKTU ngebersihinnya juga harus pake selectedindex.. yup ente set aja dia ke combobox.selectedindex=-1

hue hue hue.. mbuh tulisane amburadul.. lah aku iki saking mangkele.. kerjo seharian mung ngutak-ngutik combo box.. wis ngono ae *logat suroboyoan on, kan lagi mode(Nov 2009)*

Selasa, 20 Januari 2009

TextBox Yang hanya menerima Angka Saja di VB.Net

PRA KATA

Seringkali pada saat membuat program kita menginginkan hanya angka saja yang boleh di ketik pada suatu TextBox. hal yang sederhana namum cukup membuat kita kehabisan waktu untuk mengexplorenya.. apalagi bagi para pemula.. :).

Starting...

Buatlah project baru, pada form tambahkan sebuah TextBox

Codenya..

Kemudian copy paste kode program berikut ini..

Private nonNumberEntered As Boolean = False

Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
TextBox1.Text = Replace(TextBox1.Text, ".", "")
End Sub

Private Function CekIfNonNumber(ByVal Kc As System.Windows.Forms.KeyEventArgs) As Boolean
' Determine whether the keystroke is a number from the top of the keyboard.
If Kc.KeyCode <> Keys.D9 Then
' Determine whether the keystroke is a number from the keypad.
If Kc.KeyCode <> Keys.NumPad9 Then
' Determine whether the keystroke is a backspace.
If Kc.KeyCode <> Keys.Back Then
' A non-numerical keystroke was pressed.
' Set the flag to true and evaluate in KeyPress event.
Return True
End If
End If
End If
End Function

' Handle the KeyDown event to determine the type of character entered into the control.
Private Sub textBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles TextBox1.KeyDown
' Initialize the flag to false.
nonNumberEntered = CekIfNonNumber(e)
End Sub 'textBox1_KeyDown

' This event occurs after the KeyDown event and can be used
' to prevent characters from entering the control.
Private Sub textBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox1.KeyPress
e.Handled = nonNumberEntered
End Sub 'textBox1_KeyPress

Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
TextBox1.Text = FormatNumber(TextBox1.Text, 0)
End Sub

Private Sub TextBox2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox2.KeyDown
MsgBox(e.KeyCode)
End Sub


Finally

Ok That's all, selamat mencoba dan mempelajari semoga bermanfaat..

Sumber..
1. Someone di internet.. sudah lama sekali lupa jadinya.. :)

Find Item, Add Row Dan Column di Listview Pada VB.NET 2005

PRA KATA

Berikut adalah catatan gw tentang bagaimana mencari suatu item data di Listview dan bagaimana menambahkan baris dan Columns di Listview... pemula banget sih.. tapi ga apa2 emang ini ditujukan untuk pembaca2 yang masih pemula dalam programming VB.Net 2005.

Starting...

Buatlah project baru, tambahkan pada form sebuah Listview, Button, dan TextBox, bagaimana mengatur komponen tersebut agar menarik... itu menjadi urusan Kamu.. aturlah sesuai selera kamu.. ok

Codenya..

Kemudian Copy code berikut ini...

Private Sub ResettingListView()
        With ListView1
            .Clear()
            .View = View.Details
            .GridLines = True
            .FullRowSelect = True
            .Columns.Add("Col", 100, HorizontalAlignment.Left)
            .Columns.Add("Desc", 300, HorizontalAlignment.Left)
        End With
    End Sub

    Private Sub ListViewMakeRow(ByVal lvw As ListView, ByVal item_title As String, ByVal ParamArray subitem_titles() As String)
        Dim new_item As ListViewItem = lvw.Items.Add(item_title)

        For i As Integer = subitem_titles.GetLowerBound(0) To subitem_titles.GetUpperBound(0)
            new_item.SubItems.Add(subitem_titles(i))
        Next i
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim xCount As Integer = 0
        Call ResettingListView()
        For xCount = 0 To 20
            Call ListViewMakeRow(ListView1, xCount.ToString, "Ini " & xCount.ToString)
        Next
    End Sub

    Private Sub CariDiListView(ByVal Text2Search As String)
        Try
            Dim foundItem As ListViewItem = _
            ListView1.FindItemWithText(Text2Search, True, 0, True)
            ListView1.SelectedItems.Clear()
            If Not (foundItem Is Nothing) Then
                ListView1.Focus()
                foundItem.Selected = True
                ListView1.TopItem = foundItem
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "", MessageBoxButtons.OK)
        End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try
            Call CariDiListView(TextBox1.Text)
        Catch ex As Exception
            MessageBox.Show(ex.Message, "", MessageBoxButtons.OK)
        End Try
    End Sub

Finally....
Selesai deh... selamat mencoba, semoga bermanfaat.

Sumber...
1. MSDN Offline