Sunday, November 17, 2013

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

Saturday, May 18, 2013

Apakah Ucapan "Pulang Saja Ke Rumah Orang Tuamu berati Jatuh Talaq?

Syaikh Wahbah Az Zuhaili dalam kitabnya Al Fiqh Al Islami wa Adillatuhu menjelaskan bahwa ucapan (lafazh) yang digunakan untuk menjatuhkan talak ada dua macam, yaitu ucapan yang sharih (jelas) dan ucapan yang kinayah (sindiran). Ucapan itu bisa jadi berupa ucapan berbahasa Arab ataupun selain bahasa Arab yang menurut bahasa (lughah) dan kebiasaan (‘urf) digunakan untuk menjatuhkan talak, baik itu diucapkan langsung (bil lafzhi), atau dengan tulisan (bil kitabah), atau dengan isyarat (bil isyarah). (Wahbah Az Zuhaili, Al Fiqh Al Islami wa Adillatuhu, 9/356; Al Mausu’ah Al Fiqhiyyah, 29/17).

Dua macam ucapan (lafazh) talak tersebut adalah; Pertama, ucapan talak yang sharih (jelas), yaitu ucapan yang jelas maksudnya dan menurut kebiasaan digunakan untuk menjatuhkan talak, seperti kata “thalaaq” (bahasa Arab), “talak” atau “cerai” (bahasa Indonesia), atau “pegat” (bahasa Jawa), dan sebagainya. Misalnya suami mengucapkan kepada istrinya dalam bahasa Arab, “Thallaqtuki” (kamu saya talak), atau dalam bahwa Indonesia,”Kamu saya talak.” Atau dalam bahasa Jawa, ”Kowe tak pegat.” (Kamu saya ceraikan). Hukum ucapan talak yang sharih seperti ini adalah bahwa talak dihukumi telah jatuh menurut kesepakatan seluruh fuqoha, tanpa melihat lagi niat dari suami ketika mengucapkannya. Artinya, baik suami berniat menceraikan atau tidak, talak tetap jatuh. Maka pada saat suami mengatakan kepada istrinya,”Kamu saya talak,” talak dihukumi telah jatuh walaupun suami mengklaim bahwa dia sebenarnya tidak berniat menjatuhkan talak. (Wahbah Az Zuhaili, Al Fiqh Al Islami wa Adillatuhu, 9/358; Al Mausu’ah Al Fiqhiyyah, 29/18, Musthofa bin Al ‘Adawi,Ahkam Al Thalaq fi Al Syari’ah Al Islamiyyah, hlm. 34).

Kedua, ucapan talak kinayah (sindiran), yaitu ucapan yang bisa berarti talak namun juga bisa berarti bukan talak dan masyarakat tidak biasa menggunakan ucapan itu untuk menjatuhkan talak. Misalkan ucapan suami kepada istrinya,”Pulanglah kamu ke keluargamu,” (Arab : ilhaqiy bi-ahliki), atau ucapan suami kepada istrinya,”Keluar kamu dari rumah ini,” atau,”Pergi kamu,” dan sebagainya. (Wahbah Az Zuhaili, Al Fiqh Al Islami wa Adillatuhu, 9/358; Musthofa bin Al ‘Adawi, Ahkam Al Thalaq fi Al Syari’ah Al Islamiyyah, hlm. 35).

Hukum ucapan talak kinayah ini adalah bahwa talak tidak jatuh, kecuali jika disertai niat untuk menceraikan. Alasannya, karena ucapan talak secara kinayah ini memang mengandung dua kemungkinan makna, yaitu bisa berarti menjatuhkan talak atau bisa juga tidak menjatuhkan talak. Misalnya ucapan suami kepada istrinya,”Pulanglah kamu ke rumah orang tuamu,” bisa jadi suami bermaksud menceraikan namun bisa jadi suami tak bermaksud menceraikan namun hanya menyuruh istrinya pulang ke rumah orang tuanya karena kesal. Maka dari itu, ucapan talak kinayah ini tidak berarti menjatuhkan talak, kecuali disertai niat dari suami untuk menceraikan. Ini juga disepakati seluruh fuqaha. (Wahbah Az Zuhaili, Al Fiqh Al Islami wa Adillatuhu, 9/359; Al Mausu’ah Al Fiqhiyyah, 29/18).

Jika seorang suami mengklaim di hadapan hakim (qadhi), bahwa dia sebenarnya tidak meniatkan cerai ketika mengucapkan talak secara kinayah, klaimnya diterima, yakni hakim memutuskan tidak jatuh talak, asalkan suami mengucapkan sumpah di hadapan hakim. Jika suami mengklaim tak berniat menceraikan tapi tak berani bersumpah, maka klaimnya tak diterima dan hakim memutuskan bahwa talaknya telah jatuh. (Wahbah Az Zuhaili, Al Fiqh Al Islami wa Adillatuhu, 9/359).
Kesimpulannya, ucapan suami kepada istrinya,”Pulang saja kamu ke rumah orang tuamu,” termasuk ucapan talak secarakinayah (sindiran) dan talaknya dihukumi jatuh jika suami memang berniat menceraikan. Jika tak berniat menceraikan, talaknya tidak jatuh. Wallahu a’lam.

Friday, May 17, 2013

VB 2010 - PAD A STRING WITH CHARACTERS


Example : PADL("1",4,"0") = "0001"
                 PADR("1,4,"0") = "1000"



Public Class Form1
    Private clsStr As clsStringFunction
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Me.Close()
        Application.Exit()
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        clsStr = New clsStringFunction
        Me.TextBox1.Text = "CT." & clsStr.PADL("1", 7, "0")
    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.TextBox1.Enabled = False
        Me.TextBox2.Focus()
    End Sub
End Class



Public Class clsStringFunction
    Public Function PADL(ByVal cWord As String, ByVal nLen As Integer, ByVal cInsert As String) As String

        Dim cResult As String
        Dim cTemp As String

        cTemp = ""
        cResult = ""

        If nLen > Len(cWord) Then
            For i = 0 To nLen - Len(cWord) - 1
                cTemp = cTemp & cInsert
            Next
            cResult = cTemp & cWord
        Else
            cResult = cWord
        End If
        Return cResult
    End Function

    Public Function PADR(ByVal cWord As String, ByVal nLen As Integer, ByVal cInsert As String) As String

        Dim cResult As String
        Dim cTemp As String

        cTemp = ""
        cResult = ""
        If nLen > Len(cWord) Then
            For i = 0 To nLen - Len(cWord) - 1
                cTemp = cTemp & cInsert
            Next
            cResult = cWord & cTemp
        Else
            cResult = cWord
        End If
        Return cResult
    End Function
End Class

 

Wednesday, January 4, 2012

VB 2010 : Membaca Data Excel dan Menyimpannya ke Database MDB

Setelah agak lama tidak update blog karena kesibukan, alhamdulillah hari ini saya bisa mengunjungi dan mengupdate kembali blog saya.

Setelah sebelumnya saya share coding untuk menyimpan data ke Excel dengan VB 2010, kali ini saya akan share coding tentang bagaimana membaca data dari file Excel, mengolah datanya dan  kemudian menyimpannya ke dalam database. Dalam hal ini saya menggunakan Microsoft Access Database (MDB).

File Excel yang akan saya simpan adalah file tsjob.xlsx seperti tampak di bawah ini.


Sedangkan Tabel yang akan saya update adalah table tsjob yang ada pada database PM.MDB. Struktur tabel tsjob adalah sebagai beikut :

Field Name       Field Type            Field Size
brandnm              text                       35
projectcat            text                       50
jobgroupno          text                       11
jobgroupnm         text                       50
jobno                   text                      50
oldjobno              text                      50
oldjobgroupno     text                      11
oldjobgroupnm    text                      50
jobid                   text                      10
jobnm                 text                     150
customernm        text                       40
jobmgr               text                       40
begin                  date/time
status                 text                       30
billable               Yes/No
description         memo
projectcode       text                        61
company           text                        25 


Selanjutnya lakukan langkah-langkah berikut :
1. Buka VB 2010 kemudian create project baru.
2. Tambahkan form dan beri name frmExcel2mdb.
3. Tambahkan 2 buah datagrid pada form yang telah dibuat.
4. Beri nama salah satu Datagrid yang baru saja ditambahkan dengan grdData. Datagrid ini digunakan untuk menampilkan data hasil import dari file excel.
5. Beri nama datagrid yang lainnya dengan grdJob. Datagrid ini digunakan untuk menampilkan data dari file mdb.
6. Tambahkan 2 button pada form. Satu button diberi nama cmdReadExcel. Dan yang satunya diberi nama cmdSavetoMDB.
7. Selanjutnya copy code di bawah ini.
8. Semoga bermanfaat.

 





Imports System.Data
Imports System.Data.OleDb

Public Class frmExcel2mdb
    Dim ds As DataSet
    Dim da As OleDbDataAdapter
    Dim ds2 As DataSet
    Dim da2 As OleDbDataAdapter

    Private Sub cmdReadExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdReadExcel.Click
        Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\MYBLOG\VB\EXCEL2MDB\tsjob.xlsx;Extended Properties=Excel 12.0;"
        Dim myConnection As OleDbConnection = New OleDbConnection
       
        Dim strSQL As String

        Try
          
            myConnection.ConnectionString = connString
            strSQL = "Select * from [Sheet1$]"
            da = New OleDbDataAdapter(strSQL, myConnection)
            ds = New DataSet
            da.Fill(ds, "dataTable")
            grdData.DataSource = ds.Tables(0)
            myConnection.Close()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Sub cmdSavetoMDB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSavetoMDB.Click
        Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\MYBLOG\VB\EXCEL2MDB\PM.mdb;Jet OLEDB:Database Password=;"
        Dim MyCon = New OleDbConnection()
        Dim strSql As String
        Dim dgRow As DataGridViewRow
        Dim strSQLi As String
        Dim strCmd As OleDbCommand

        Try
            MyCon.ConnectionString = strConn

            MyCon = New OleDbConnection(strConn)
            If MyCon.State <> ConnectionState.Closed Then MyCon.Close()
            MyCon.Open()

            For Each dgRow In Me.grdData.Rows

                Dim cmdJob As New OleDbCommand
                Dim daJob As New OleDbDataAdapter
                Dim dsJob As New DataSet
                Dim dtJob As New DataTable

                strSql = "Select count(*) from tbJob"
                cmdJob = MyCon.CreateCommand
                cmdJob.CommandText = "SELECT * FROM tsJob where Trim(JobNo) = '" & Trim(dgRow.Cells(3).Value) & "'"
                daJob.SelectCommand = cmdJob
                daJob.Fill(dsJob, "Job")
                dtJob = dsJob.Tables("Job")
                               

                If dtJob.Rows.Count > 0 Then

                    'TO DO : NOTHING
                Else
                    strSQLi = "Insert into tsjob (BRANDNM,PROJECTCAT,JOBGROUPNO,JOBGROUPNM,JOBNO,OLDJOBNO,OLDJOBGROUPNO,OLDJOBGROUPNM," & _
                              "JOBID,JOBNM,CUSTOMERNM,STATUS,DESCRIPTION,COMPANY) " & _
                              "VALUES('" & RTrim(dgRow.Cells(0).Value) & _
                                      "','" & RTrim(dgRow.Cells(2).Value) & "2012" & _
                                      "','" & RTrim(dgRow.Cells(1).Value) & _
                                      "','" & RTrim(dgRow.Cells(2).Value) & _
                                      "','" & RTrim(dgRow.Cells(3).Value) & _
                                      "','" & RTrim(dgRow.Cells(3).Value) & _
                                      "','" & RTrim(dgRow.Cells(1).Value) & _
                                      "','" & RTrim(dgRow.Cells(2).Value) & _
                                      "','" & RTrim(Mid(dgRow.Cells(3).Value, 4)) & _
                                      "','" & RTrim(dgRow.Cells(4).Value) & _
                                      "','" & RTrim(dgRow.Cells(5).Value) & _
                                      "','" & RTrim(dgRow.Cells(6).Value) & _
                                      "','" & "" & _
                                      "','" & "PUBLICIS INDONESIA" & "')"
                    strCmd = New OleDbCommand(strSQLi, MyCon)
                    strCmd.ExecuteNonQuery()
                    strSQLi = ""

                End If
            Next

            Call DisplayJob()
            MyCon.Close()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

    End Sub

    Private Sub DisplayJob()
        Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\MYBLOG\VB\EXCEL2MDB\PM.mdb;Jet OLEDB:Database Password=;"
        Dim MyCon = New OleDbConnection()

        Try
            MyCon.ConnectionString = strConn

            MyCon = New OleDbConnection(strConn)
            If MyCon.State <> ConnectionState.Closed Then MyCon.Close()
            MyCon.Open()

            Dim cmdJob As New OleDbCommand
            Dim daJob As New OleDbDataAdapter
            Dim dsJob As New DataSet
            Dim dtJob As New DataTable

            cmdJob = MyCon.CreateCommand
            cmdJob.CommandText = "SELECT * FROM tsJob"
            daJob.SelectCommand = cmdJob
            daJob.Fill(dsJob, "Job")
            dtJob = dsJob.Tables("Job")

            Me.grdJob.DataSource = dsJob.Tables(0)

            MyCon.Close()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Sub frmExcel2mdb_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.grdData.AllowUserToAddRows = False
        Me.grdJob.AllowUserToAddRows = False

        Call DisplayJob()
    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