Pages

Subscribe:

Wednesday, December 21, 2011

Cara Menggunakan XmartDataLink™ untuk koneksi ke SQL Server


Membuat sebuah aplikasi yang mampu menyimpan data-data tidak terlepas dari database, terkadang kita membuat aplikasi dimana database-nya berada di-PC kita sendiri, bagaimana caranya jika aplikasi dan database yang kita buat ingin dipindahkan ke-PC lainnya? Apakah kita harus membongkar coding kemudian ubah koneksinya dan di-compile ulang? Jawabannya TIDAK PERLU, kita dapat membuat sebuah aplikasi kecil untuk melakukan penyimpan "Connection String" baik ke textfile (saya pernah contohkan pada post tahun 2010) ataupun lainnya. Pada kali ini metode yang saya gunakan adalah menyimpan ke "app.config" yang telah disediakan oleh Visual Studio.

Pertanyaan berikutnya, apakah setiap membuat aplikasi baru saya harus membuat form untuk melakukan koneksi? Jawabannya TIDAK, saya telah membuat sebuah .dll (Library) yang bisa digunakan oleh siapapun dan tentunya FREE.

Berikut langkah-langkah menambahkan library.
1.         Tambahkan "Xmart.DataLink.dll" ke project yang Anda buat. Klik kanan pada Project yang Anda buat > Add Reference
2.         Pilih tab Browse > Cari lokasi tempat Anda menyimpan file "Xmart.DataLink.dll" > klik OK
3.         Jika Library berhasil ditambahkan, Anda dapat mengecek dengan klik tombol Show All Files (lihat gambar)

Sampai langkah-langkah diatas, Anda sudah berhasil menambahkan .dll yang saya buat.

Berikut cara penggunaanya:
1.         Anda harus melakukan Import pada form yang menggunakan Library tersebut.
Imports Xmart.DataLink
2.         Untuk menampilkan form konfigurasi cukup ketikan perintah berikut ditombol yang akan ada gunakan.
SQLDBConfig.SetUp()
Maka akan muncul deh form seperti dibawah ini.
Setelah ditekan tombol Save dan tidak ada muncul pesan Error, maka koneksi sudah berhasil dibuat. Kita tinggal menggunakannya saja, sebelumnya buatlah sebuah variabel yang bersifat Global sebaiknya diletakan di-module.  Variabel yang saya buat dengan nama ConnString
ConnString = SQLDBConfig.GetConnectionString
3.         Untuk contoh lengkapnya, bisa download source yang saya berikan.


Jika pada saat menjalankan aplikasi XmartDataLink terjadi error missing library, copy-kan 2 library ini kedalam lokasi library Xmart.DataLink.dll berada :

Download Library : Xmart.DataLink.dll
Download Demo : UsingXmartDataLink

 

Saturday, April 30, 2011

Membuat AutoComplete pada Combobox

Berikut merupakan cara bagaimana sewaktu kita menekan huruf awalan dari setiap kata di-comboxbox akan memunculkan suggestion/autocomplete seperti ini
, saya menggunakan database sample dari Microsoft yaitu AdventureWorks, berikut SQL Query-nya (StoredProcedure):

CREATE PROCEDURE [dbo].[spGetEmployee]
AS
BEGIN
      SELECT A.NationalIDNumber, B.FirstName AS [Name]
      FROM HumanResources.Employee AS A
            INNER JOIN Person.Contact AS B
            ON A.ContactID = B.ContactID
END

Jika ingin memunculkan Name dan NationalIDNumber sekaligus juga dapat menggunakan SQL-Query sbb:
CREATE PROCEDURE [dbo].[spGetEmployee]
AS
BEGIN
      SELECT A.NationalIDNumber, (B.FirstName + ' (' + A.NationalIDNumber + ')') AS [Name]
      FROM HumanResources.Employee AS A
            INNER JOIN Person.Contact AS B
            ON A.ContactID = B.ContactID
END

Berikut code pada Class yang digunakan untuk DataAccess:
    Public Function GetAllEmp() As DataSet
        Dim ds As New DataSet
        Using sqlConn As New SqlConnection(My.Settings.AdventureWorksConnectionString)
            Using sqlDA As New SqlDataAdapter("dbo.spGetEmployee", sqlConn)
                sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure
                sqlDA.Fill(ds)
            End Using
        End Using
        Return ds
    End Function

Code pada Form:
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ds As New DataSet
        ds = objSale.GetAllEmp
        cboEmployee.DataSource = ds.Tables(0)
        cboEmployee.DisplayMember = "Name"
        cboEmployee.ValueMember = "NationalIDNumber"
        cboEmployee.AutoCompleteMode = AutoCompleteMode.SuggestAppend
        cboEmployee.AutoCompleteSource = AutoCompleteSource.ListItems
    End Sub

Silahkan disesuaikan dengan kebutuhan, untuk Query yang menampilkan Name dan National ID akan muncul seperti ini:

Untuk menyimpan, gunakan Kode-nya dengan code:
lblNationalIDNumber.Text = cboEmployee.SelectedValue

ComboBox terdapat 2 property yang digunakan untuk memanipulasi data :
        cboEmployee.DisplayMember = "Name"
        cboEmployee.ValueMember = "NationalIDNumber

-          DisplayMember merupakan text yang ditampilkan
-          ValueMember merupakan text/code dari yang ditampilkan sehingga kita dapat menggunakan .SelectedValue untuk mengambil ID/Code-nya

Membuat Laporan dengan Crystal Report for Visual Studio

Laporan merupakan output dari sebuah sistem yang kita buat, maka oleh itu laporan sangat penting dari setiap sistem yang dibuat.
Berikut langkah-langkah singkat untuk membuat sebuat laporan dengan menggunakan Crystal Report for Visual Studio (Crystal Report yang sudah build in didalam Visual Studio diatas versi Express), sebenarnya Anda juga dapat menggunkan Crystal Report dengan aplikasi terpisah.

Pertama-tama, Anda harus membuat DataSet dengan menggunakan file .XSD, yang digunakan untuk menarik/ menempatkan field2 kedalam report designer nantinya:
... (next update)

Langkah-langkah berikutnya akan saya update nantinya beserta gambarnya...

Berikut Code untuk memunculkan Report:
- Buatlah sebuah Class sebagai DataAccess ke Database (misalnya: Class Sale)
Imports System.Data
Imports System.Data.SqlClient
Public Class Sales
    'Get Sales Invoice value and return in DATASET
    Public Function GenerateInvoice( _
            ByVal SalesOrderID As Integer, _
            ByVal PrintedBy As String) As DataSet
        Dim ds As New DataSet
        Using sqlConn As New SqlConnection(My.Settings.AdventureWorksConnectionString)
            Using sqlDA As New SqlDataAdapter("Sales.spGenerateInvoice", sqlConn)
                sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure
                With sqlDA.SelectCommand.Parameters
                    .AddWithValue("@SalesOrderID", SalesOrderID)
                    .AddWithValue("@PrintedBy", PrintedBy)
                End With
                sqlDA.Fill(ds)
            End Using
        End Using
        Return ds
    End Function

    'Get Sales Invoice value without return the value but
    'passing the control ByRef on parameter to fill directly
    Public Sub GenerateInvoice(ByRef dtReport As DataTable, _
         ByVal SalesOrderID As Integer, _
         ByVal PrintedBy As String)
        Using sqlConn As New SqlConnection(My.Settings.AdventureWorksConnectionString)
            Using sqlDA As New SqlDataAdapter("Sales.spGenerateInvoice", sqlConn)
                sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure
                With sqlDA.SelectCommand.Parameters
                    .AddWithValue("@SalesOrderID", SalesOrderID)
                    .AddWithValue("@PrintedBy", PrintedBy)
                End With
                sqlDA.Fill(dtReport)
            End Using
        End Using
    End Sub
End Class


- Berikut Code dari Form yang digunakan untuk memanggil Crystal Report
Public Class Form1
    Private dsR As New DataSet
    Private objDSReport As New dsReport
    Private objSale As New Sales
    Private Sub btnDirectPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDirectPrint.Click

        '----------- CARA 1 -------------
        'Dim ds As New DataSet
        'ds = objSale.GenerateInvoice(txtSalesOrderID.Text, "Budiyanto")
        'For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
        '    objDSReport.Tables("dtSalesInvoice").Rows.Add()
        '    With objDSReport.Tables("dtSalesInvoice").Rows(i)
        '        .Item(0) = ds.Tables(0).Rows(i).Item(0)
        '        .Item(1) = ds.Tables(0).Rows(i).Item(1)
        '        .Item(2) = ds.Tables(0).Rows(i).Item(2)
        '        .Item(3) = ds.Tables(0).Rows(i).Item(3)
        '        .Item(4) = ds.Tables(0).Rows(i).Item(4)
        '        .Item(5) = ds.Tables(0).Rows(i).Item(5)
        '        .Item(6) = ds.Tables(0).Rows(i).Item(6)
        '        .Item(7) = ds.Tables(0).Rows(i).Item(7)
        '        .Item(8) = ds.Tables(0).Rows(i).Item(8)
        '        .Item(9) = ds.Tables(0).Rows(i).Item(9)
        '        .Item(10) = ds.Tables(0).Rows(i).Item(10)
        '    End With
        'Next
        'Dim rSalesInvoice As New rptSalesInvoice
        'rSalesInvoice.SetDataSource(objDSReport.Tables("dtSalesInvoice"))
        'rSalesInvoice.PrintToPrinter(1, False, 1, 999)

        '------------ CARA 2 --------------
        objSale.GenerateInvoice(objDSReport.Tables("dtSalesInvoice"), _
                                txtSalesOrderID.Text, "Budiyanto")
        Dim rSalesInvoice As New rptSalesInvoice
        rSalesInvoice.SetDataSource(objDSReport.Tables("dtSalesInvoice"))
        rSalesInvoice.PrintToPrinter(1, True, 1, 999)
    End Sub

    Private Sub btnPreview_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles btnPreview.Click

        objSale.GenerateInvoice(objDSReport.Tables("dtSalesInvoice"), _
                                txtSalesOrderID.Text, "Budiyanto")
        Dim rSalesInvoice As New rptSalesInvoice
        rSalesInvoice.SetDataSource(objDSReport.Tables("dtSalesInvoice"))
        crvSalesInvoice.ReportSource = rSalesInvoice
        crvSalesInvoice.Refresh()

    End Sub
End Class

Silahkan dicoba, jika ada yang ingin membuat tutorial step by step, bisa email kesaya dalam bentuk document MS. Word, nanti saya postkan....
(dari mahasiswa untuk mahasiswa)

Saturday, January 22, 2011

Jadwal UAS Lab

Selasa (25 January 2011)
- Lab. Algoritma & Pemrograman I (1SIMA) - Pukul 19.45-21.25 WIB

Rabu (26 January 2011)
- Lab. Pemrograman Basis Data (5SIMC) - Pukul 19.45-21.25 WIB

Kamis (27 January 2011)
- Lab. Pemrograman Basis Data (5SIMB) - Pukul 17.15-18.55 WIB
- Lab. Pemrograman Basis Data (5SIMA) - Pukul 19.45-21.25 WIB

Jumat (28 January 2011)
- Lab. Pemrograman Berorientasi Obyek (1SIMA) - Pukul 19.45-21.25 WIB

NB: Ujian bertempat pada Lab yang biasa sewaktu kuliah (A214), kecuali terjadi perubahan pada saat hari H.

Saturday, December 11, 2010

Menggunakan DBMS Gratis dari Microsoft (SQL Server Express)

Bagi teman-teman mahasiswa yang ingin belajar DBMS menggunakan SQL Server 2008 Express, dapat men-download langsung dari website Microsoft (GRATIS!)

Note: untuk menjalankan SQL Server 2008 Express pastikan terlebih dahulu komputer Anda tidak pernah terinstall SQL Server Express 2005.

Secara default jika Anda menginstall Visual Studio 2005 otomatis akan terinstall SQL Server 2005 Express, jika Anda menginstall Visual Studio 2008 & 2010 maka akan otomatis terinstall SQL Server 2008 Express. Oleh karena itu Anda cukup menginstall "SQL Server Management Studio"-nya saja

Disini Anda dapat penjelasan singkat mengenai fitur yang terdapat pada SQL Server 2008 Express (lihat).

Berikut link untuk download SQL Server 2008 Express R2 with Management Studio (32bit) - (64bit)
Untuk instalasi lebih detail secara terpisah Anda bisa lihat disini

SQL Server 2008 Management Studio Express download

Jika Anda ingin mendownload SQL Server 2005 Express SP2 dapat melalui link berikut
SQL Server 2005 Express SP2 download
SQL Server 2005 Management Studio Express download


Sunday, November 14, 2010

Pembahasan “UTS Lab. PBO”

Berikut pembahasan dari soal UTS Lab PBO (cont'd Algo), jadikan code berikut hanya sebagai refensi, silahkan dikembangkan jika perlu. Tidak mutlak code harus sama persis seperti di bawah ini.


Source Code :

Imports System.IO
Public Class Form1
    Dim arrJenisMobil() As String
    Dim arrHargaMobil() As Double
    Dim cnt As Integer
    Sub ClearInput()
        txtNama.Text = ""
        txtAlamat.Text = ""
        txtNoHP.Text = ""
        cboJenisMobil.Text = "(Silahkan Pilih)"
        txtHari.Text = 0
        txtNama.Focus()
    End Sub
    Sub fillComboBox()
        cboJenisMobil.Items.Clear()
        For i As Integer = 0 To arrJenisMobil.GetUpperBound(0)
            cboJenisMobil.Items.Add(arrJenisMobil(i).ToString)
        Next
    End Sub
    Sub getJenisMobil()
        Dim sr As StreamReader
        Dim strJenisMobil As String
        Dim dblHargaMobil As Double
        If File.Exists("CarPrice.txt") Then
            sr = File.OpenText("CarPrice.txt")
            Do While sr.Peek <> -1
                strJenisMobil = sr.ReadLine
                dblHargaMobil = sr.ReadLine
                cnt += 1
            Loop
            sr.Close()
            ReDim arrJenisMobil(cnt - 1)
            ReDim arrHargaMobil(cnt - 1)
            sr = File.OpenText("CarPrice.txt")
            cnt = 0
            Do While sr.Peek <> -1
                arrJenisMobil(cnt) = sr.ReadLine
                arrHargaMobil(cnt) = sr.ReadLine
                cnt += 1
            Loop
        End If
    End Sub
    Function getHargaMobil(ByVal carIndex As Integer) As Double
        Return arrHargaMobil(carIndex)
    End Function
    Function ValidateInput() As Boolean
        If txtNama.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan Nama")
            txtNama.Focus()
            Return False
        ElseIf txtAlamat.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan Alamat")
            txtAlamat.Focus()
            Return False
        ElseIf txtNoHP.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan No. HP")
            txtNoHP.Focus()
            Return False
        ElseIf cboJenisMobil.SelectedIndex < 0 Then
            MessageBox.Show("Silahkan pilih mobil yang disewa")
            cboJenisMobil.Focus()
            Return False
        ElseIf txtHari.Text.Trim < 1 Then
            MessageBox.Show("Minimal sewa 1 hari")
            txtHari.Focus()
            Return False
        Else
            Return True
        End If
    End Function
    Private Sub btnHitung_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnHitung.Click
        Dim fmtStr As String = "{0,-20}{1,10}"
        Dim totalHarga As Double
        If ValidateInput() = False Then Exit Sub
        totalHarga = getHargaMobil(cboJenisMobil.SelectedIndex) * CInt(txtHari.Text)
        lstHasil.Items.Clear()
        With lstHasil.Items
            .Add("Customer : Mr./Ms. " & txtNama.Text.Trim)
            .Add("Alamat   : " & txtAlamat.Text.Trim)
            .Add("No NP    : " & txtNoHP.Text.Trim)
            .Add("Jenis Mobil yang disewa : " & cboJenisMobil.SelectedItem)
            .Add("Jumlah Hari penyewaan   : " & txtHari.Text & "hari  Total Rp. " & totalHarga)
        End With
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        getJenisMobil()
        fillComboBox()
        ClearInput()
    End Sub

    Private Sub txtHari_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtHari.KeyPress
        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then
            e.Handled = True
        End If
    End Sub

    Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpan.Click
        If lstHasil.Items.Count < 1 Then
            Exit Sub
        End If
        Dim sw As StreamWriter
        If File.Exists("History.txt") Then
            File.Delete("History.txt")
        End If
        sw = File.CreateText("History.txt")
        With sw
            .WriteLine("Nama        : " & txtNama.Text)
            .WriteLine("Alamat      : " & txtAlamat.Text)
            .WriteLine("No HP       : " & txtNoHP.Text)
            .WriteLine("Jenis Mobil : " & cboJenisMobil.SelectedItem)
            .WriteLine("Lama Sewa   : " & txtHari.Text & " hari")
            .WriteLine("Harga Sewa  : " & arrHargaMobil(cboJenisMobil.SelectedIndex))
            .WriteLine("Total       : " & CDbl(arrHargaMobil(cboJenisMobil.SelectedIndex)) * CInt(txtHari.Text))
        End With
        sw.Close()
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sr As StreamReader
        If File.Exists("History.txt") Then
            sr = File.OpenText("History.txt")
            Form2.ListBox1.Items.Clear()
            While sr.Peek <> -1
                Form2.ListBox1.Items.Add(sr.ReadLine)
            End While
            Me.Hide()
            Form2.Show()
        End If
    End Sub
End Class

Berikut form untuk menampilkan hasil:


Source Code:

Public Class Form2
    Private Sub btnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTutup.Click
        Form1.Close()
    End Sub
End Class

~ Semoga Bermanfaat  ~

Pembahasan "UTS Lab. Algoritma & Pemrograman"

Berikut pembahasan dari soal UTS Lab Algoritma dan Pemrograman, jadikan code berikut hanya sebagai refensi, silahkan dikembangkan jika perlu. Tidak mutlak code harus sama persis seperti di bawah ini.


Source Code:

Public Class Form1
    Sub ClearInput()
        txtNama.Text = ""
        txtAlamat.Text = ""
        txtNoHP.Text = ""
        cboJenisMobil.Text = "(Silahkan Pilih)"
        txtHari.Text = 0
        txtNama.Focus()
    End Sub
    Function getHargaMobil(ByVal JenisMobil As String) As Double
        Dim hrgMobil As Double
        Select Case JenisMobil
            Case Is = "Toyota Avanza"
                hrgMobil = 250000
            Case Is = "Toyota Innova"
                hrgMobil = 350000
            Case Is = "Toyota Corolla"
                hrgMobil = 200000
            Case Is = "Honda Jazz"
                hrgMobil = 300000
            Case Is = "Honda Accord"
                hrgMobil = 250000
            Case Is = "Nissan Sunny"
                hrgMobil = 200000
            Case Else
                hrgMobil = 180000
        End Select
        Return hrgMobil
    End Function
    Function ValidateInput() As Boolean
        If txtNama.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan Nama")
            txtNama.Focus()
            Return False
        ElseIf txtAlamat.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan Alamat")
            txtAlamat.Focus()
            Return False
        ElseIf txtNoHP.Text.Trim = "" Then
            MessageBox.Show("Silahkan masukkan No. HP")
            txtNoHP.Focus()
            Return False
        ElseIf cboJenisMobil.SelectedIndex < 0 Then
            MessageBox.Show("Silahkan pilih mobil yang disewa")
            cboJenisMobil.Focus()
            Return False
        ElseIf txtHari.Text.Trim < 1 Then
            MessageBox.Show("Minimal sewa 1 hari")
            txtHari.Focus()
            Return False
        Else
            Return True
        End If
    End Function
    Private Sub btnHitung_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnHitung.Click
        Dim fmtStr As String = "{0,-20}{1,10}"
        Dim totalHarga As Double
        If ValidateInput() = False Then Exit Sub
        totalHarga = getHargaMobil(cboJenisMobil.SelectedItem) * CInt(txtHari.Text)
        lstHasil.Items.Clear()
        With lstHasil.Items
            .Add("Customer : Mr./Ms. " & txtNama.Text.Trim)
            .Add("Alamat   : " & txtAlamat.Text.Trim)
            .Add("No NP    : " & txtNoHP.Text.Trim)
            .Add("Jenis Mobil yang disewa : " & cboJenisMobil.SelectedItem)
            .Add("Jumlah Hari penyewaan   : " & txtHari.Text & "hari  Total Rp. " & totalHarga)
        End With
    End Sub

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

    Private Sub txtHari_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtHari.KeyPress
        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then
            e.Handled = True
        End If
    End Sub
End Class

~ Semoga Bermanfaat ~