Sunday, November 17, 2013

VB 2010 : Menghilangkan bunyi Beep setelah menekan tombol ENTER

Bagi programmer VB 6, pasti familiar dengan kode berikut ini :

Private Sub txtfields_KeyPress(Index As Integer, KeyAscii As Integer)
  If mbEditFlag = True Or mbAddNewFlag = True Then
      If KeyAscii = 13 Then
       If Index <= 2 Then
          Me.txtFields(Index + 1).SetFocus
       ElseIf Index = 3 Then Me.cmbTitle.SetFocus
           ElseIf Index = 4 Then Me.cmbCompany.SetFocus
                  Else: Me.cmdUpdate.SetFocus
         
       End If
       KeyAscii = 0
      End If
  Else
    If KeyAscii = 13 Then
       If Index <= 2 Then
          Me.txtFields(Index + 1).SetFocus
       ElseIf Index = 3 Then Me.cmbTitle.SetFocus
           ElseIf Index = 4 Then Me.cmbDepart.SetFocus
               Else: Me.cmdClose.SetFocus
         
       End If
       KeyAscii = 0
    End If
  End If
End Sub


Statement KeyAscii=0 berfungsi untuk menghilangkan bunyi BEEP setelah menekan tombol ENTER. Nah bagaimana cara melakukan hal yang sama di VB 2010 ?

Di VB 2010, Statement KeyAscii=0 diganti dengan Statement e.Handled=True seperti terlihat pada contoh procedure berikut ini :

Private Sub txtHP_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtHP.KeyPress

        If e.KeyChar = Chr(13) Then
            Me.txtEmail.Focus()
            e.Handled = True
        Else
            If (Not Char.IsNumber(e.KeyChar) AndAlso Not e.KeyChar = Microsoft.VisualBasic.Chr(Keys.Back)) Then
                MsgBox("Enter a valid number", vbCritical)
                e.Handled = True
            End If
        End If
    End Sub


Statement If (Not Char.IsNumber(e.KeyChar) AndAlso Not e.KeyChar = Microsoft.VisualBasic.Chr(Keys.Back)) pada contoh di atas berfungsi untuk memvalidasi inputan pada control txtHP hanya untuk numeric saja. Sehingga jika user memasukkan selain numeric pada control txtHP akan menampilkan pesan "Enter a Valid Number".

Semoga bermanfaat.

TIPS: Network Design Example

Berikut ini adalah salah satu contoh Network Design. Beberapa Label Ruangan sengaja saya hapus untuk menyamarkan Nama dan Environment dari Client saya.




Fitur Table Type di SQL Server 2008

Tabel Type adalah fitur yang baru diperkenalkan di SQL SERVER 2008, yang belum pernah ada di SQL SERVER versi-versi sebelumnya. Kegunaan fitur ini antara lain ketika: 
  1. Mengirimkan data multiple rows ke Stored Procedure atau Function tidak perlu membuat temporary table
  2. Mengirimkan multple parameter ke Stored Prcedure atau Funtion dapat disederhanakan dengan adanya fitur ini.
Untuk memperjelas penggunaannya perhatikan contoh berikut ini. 
Misalkan kita ingin menginsert isi tabel berikut 



ke tabel :




1. Buat User Define Table Type di SQL Server 2008 seperti contoh berikut :

USE SITC
GO

CREATE TYPE SysAdmType AS TABLE
(
    KODESEKOLAH VARCHAR(5),
    NO_FORMULIR VARCHAR(20) NULL,
    KODESYARAT VARCHAR(10) NULL,
    SYARAT VARCHAR(50) NULL,
    JUMLAH NUMERIC(6,2) NULL,
    NILAI BIT NOT NULL,
    TGLUPDATE DATE NULL,
    USERID VARCHAR(10) NULL
   
)
GO


2. Buat Stored Procedure seperti berikut ini :

USE SITC
GO

CREATE PROCEDURE usp_InsSysAdmCalon
(
  @SysAdmCalon SysAdmType READONLY
)

AS
 
BEGIN
    INSERT INTO calonsiswa_syarat
                            (kodesekolah, no_formulir, kodesyarat, syarat, jumlah, nilai,
                             tglupdate, userid) 

                             Select kodesekolah,no_formulir,kodesyarat,syarat,jumlah,nilai,
                             tglupdate, userid FROM @SysAdmCalon
END


3. Selanjutnya adalah menulis coding di Visual Basic seperti berikut ini. Oh ya, saya menggunakan VB 2010. 

Private Sub UpdateSysAdm(cFormulirNo As String)
        Dim clsSysAdm As clsSyaratAdm
        Dim table1 As DataTable
        Dim currentRow As DataRowView
        Dim nCount As Integer

        table1 = New DataTable


Try
            clsSysAdm = New clsSyaratAdm

            With clsSysAdm
                .StoreProcName = "usp_psb_SysAdmIUD"
                .Statement = "Select"
                .KodeSekolah = cmbUnit.Text
                .Scope = "KODESEKOLAH"
                .FilterData()
            End With

            With table1
                .Columns.Add("KODESEKOLAH", GetType(String))
                .Columns.Add("NO_FORMULIR", GetType(String))
                .Columns.Add("KODESYARAT", GetType(String))
                .Columns.Add("SYARAT", GetType(String))
                .Columns.Add("JUMLAH", GetType(Integer))
                .Columns.Add("NILAI", GetType(Boolean))
                .Columns.Add("TGLUPDATE", GetType(Date))
                .Columns.Add("USERID", GetType(String))
            End With

 With clsSysAdm
        nCount = .BDSSysAdm.Count
        MsgBox(nCount)
        If nCount > 0 Then
           .BDSSysAdm.MoveFirst()
            For i As Integer = 0 To nCount - 1
                  currentRow = DirectCast(clsSysAdm.BDSSysAdm.Current, DataRowView)
                  With currentRow
                           table1.Rows.Add(.Item(0), cFormulirNo, .Item(1), .Item(2), .Item(3), False,   Date.Now, UserName)
                        End With
                        .BDSSysAdm.MoveNext()
           Next
      End If
End With

Catch ex As Exception
      MsgBox(ex.Message, vbCritical)
      clsSysAdm = Nothing
End Try

        Try
            Dim myConn = MyDB.Open
            Dim myCommand As SqlCommand
            Dim myParam As SqlParameter

            myCommand = New SqlCommand
            With myCommand
                .Parameters.Clear()
                .Connection = myConn
                .CommandType = CommandType.StoredProcedure
                .CommandText = "usp_InsSysAdmCalon"
            End With

            myParam = New SqlParameter("@SysAdmCalon", SqlDbType.Structured)
            myCommand.Parameters.Add(myParam)

            myParam.Value = table1
            myCommand.ExecuteNonQuery()

            myConn.Close()
            myCommand = Nothing
            myConn = Nothing
            myParam = Nothing
            table1.Clear()
            table1 = Nothing
        Catch ex As Exception
            MsgBox(ex.Message, vbCritical)

        End Try

    End Sub


Semoga bermanfaat.

Tuesday, November 12, 2013

DataGridView : Changing Row Color based on Row Value





Berikut ini adalah contoh coding di VB 2010 untuk memberi warna Row pada DataGridView sesuai dengan Value nya. Dalam contoh ini saya memberi warna yang berbeda untuk Kodesekolah SD, SMP dan SMA.

Coding ini saya ambil dari Project yang sedang saya kerjakan yaitu Software PPDB (Penerimaan Peserta Didik Baru) atau yang sebelumnya dikenal sebagai PSB (Penerimaan Siswa Baru) pada salah satu sekolah di Bogor Jawa Barat. Semoga bermanfaat.




Private Sub dgSysAdm_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgSysAdm.CellFormatting
        Dim currentRow As DataRowView
        If e.RowIndex >= 0 Then
            If e.RowIndex <= clsSysAdm.DSSysAdm.Tables(0).Rows.Count - 1 Then
                currentRow = clsSysAdm.DSSysAdm.Tables(0).DefaultView.Item(e.RowIndex)
                Dim cellColor As Color
                If currentRow.Item("KODESEKOLAH").ToString = "SD" Then
                    cellColor = Color.BlanchedAlmond  ' LightBlue
                ElseIf currentRow.Item("KODESEKOLAH").ToString = "SMP" Then
                    cellColor = Color.GreenYellow
                ElseIf currentRow.Item("KODESEKOLAH").ToString = "SMA" Then
                    cellColor = Color.PaleTurquoise
                End If
                e.CellStyle.BackColor = cellColor
            End If
        End If
    End Sub

Monday, November 4, 2013

Membuat Chart di VB 2010

Sekitar 1 bulan lalu saya diminta oleh seorang sahabat untuk mengajari beliau cara membuat Chart di VB 2010.  Karena waktu beliau juga sangat padat akhirnya saya buatkan coding yang disesuaikan dengan kebutuhan beliau sebagai contoh untuk pelajari.

Berikut ini saya share codingnya, semoga bermanfaat.






Imports System.Windows.Forms.DataVisualization.Charting
Public Class frmExample6
    Private dtTest As New DataTable
   

    Private Sub cmdProses_Click(sender As System.Object, e As System.EventArgs) Handles cmdProses.Click

        Dim i As Integer
        Dim j As Integer
        Dim jumlahData As Integer


        jumlahData = 1 + ((Val(Me.txtMaximum.Text) - Val(Me.txtMinimum.Text)) / Val(txtSelang.Text))
        Dim aLi(jumlahData) As Double
        Dim aWi(jumlahData) As Double
        Dim arrData(jumlahData, jumlahData) As Double

        aLi(0) = Val(Me.txtMinimum.Text)
        aWi(0) = Val(Me.txtA.Text) * aLi(0) ^ Val(Me.txtB.Text)
        For i = 1 To jumlahData - 1
            aLi(i) = aLi(i - 1) + Val(Me.txtSelang.Text)
            aWi(i) = Val(Me.txtA.Text) * aLi(i) ^ Val(Me.txtB.Text)
        Next


        dtTest.Columns.Add("aLi", GetType(Double))
        dtTest.Columns.Add("aWi", GetType(Double))

        For i = 0 To jumlahData - 1
            dtTest.Rows.Add(aLi(i), aWi(i))
        Next

        DataGridView1.DataSource = dtTest.DefaultView
        DataGridView1.Columns(0).Width = 50

      
    End Sub

    Private Sub cmdChart_Click(sender As System.Object, e As System.EventArgs) Handles cmdChart.Click
        Chart1.Dock = DockStyle.Bottom
        Chart1.Anchor = AnchorStyles.Bottom Or AnchorStyles.Top

        'Chart1.Series.Add("aWi")
        With Chart1.Series(0)
            '  .Name = "aLi"
            .Font = New Font("Arial", 8, FontStyle.Italic)
            .BackGradientStyle = GradientStyle.TopBottom
            .Color = Color.Magenta
            .BackSecondaryColor = Color.Purple
            .IsValueShownAsLabel = False
            .LabelBackColor = Color.Transparent
            .LabelForeColor = Color.Purple
            .Points.DataBind(dtTest.DefaultView, "aLi", "aWi", Nothing)
            .CustomProperties = "DrawingStyle = Cylinder ,PixelPointWidth = 15"
            .ChartType = SeriesChartType.Line
        End With

    End Sub

   
End Class

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews