23 July 2016

SQL Server 2008 Membuat Query Update Menggunakan Query Designer

SQL Server 2008 memiliki fitur Query Designer, fitur ini digunakan untuk membuat query secara visual. Dengan menggunakan fitur ini pembuatan sebuah query akan lebih mudah dan lebih cepat. Pada tulisan kali ini penulis akan memberikan contoh bagaimana membuat sebuah query update menggunakan Query Designer. Query yang akan penulis buat adalah query untuk melakukan update pada sebuah tabel yang mana value updatenya diambil dari tabel lain. Pada contoh ini tabel yang akan diupdate adalah tabel Pasien dan value updatenya diambil dari tabel tbPasien. Field yang akan diupdate pada tabel Pasien adalah NoIdentitas dan Field sumber value dari tabel tbPasien adalah cNoKTPSIM. Berikut langkah-langkahnya.

1. Klik kanan pada query editor, pilih Query Designer.



2. Pada window Add Table, pilih tabel yang akan diupdate dan tabel yang menjadi sumber valuenya


3. Hubungkan primary key kedua tabel tersebut, kemudian klik kanan pada area yang kosong, kemudian pilih Change Type->Update



4. Pada window update table pilih tabel yang akan diupdate valuenya


5. Kemudian centang field NoIdentitas pada tabel Pasien, kemudian ketik pada kolom New Value dengan cNoKTPSIM


6. Klik OK. Setelah itu akan muncul query update di query editor





10 June 2016

Kenapa saya sangat suka komputer?

Saya tidak begitu yakin kenapa saya sangat suka komputer. Tapi sejak kecil saya sudah tertarik dengan hal-hal yang berbau teknologi, apalagi dengan komputer. Setiap kali ada iklan mengenai komputer, setiap menonton film yang berbau teknologi terutama yanga ada hubungannya dengan komputer saya merasa sangat tertarik. Ada perasaan yang berbeda ketika saya melihat komputer. Sepertinya saya sudah jatuh cinta dengan komputer sejak kecil. Tapi saya tidak tahu alasannya kenapa saya bisa suka dengan komputer.

Ketika kelas 6 saya diminta ayah saya untuk kursus bahasa inggris. Saya sempat menolak karena saya inginnya kursus komputer. Tapi orangtua saya berhasil membujuk saya, kata mereka, "Komputer itu didalamnya pake bahasa inggris, kalau kamu ingin bisa komputer kamu harus bisa bahasa inggris dulu". Akhirnya saya mau untuk kursus bahasa inggris terlebih dahulu. Kebetulan di tempat kursus saya selain ada kursus bahasa inggris juga ada kursus komputer. Setiap kali istirahat saya selalu melihat di jendela menonton orang-orang yang kursus komputer, sambil membayangkan saya berada di posisi mereka, memegang benda yang sangat saya sukai, walaupun hanya menghayal tapi itu sangat menyenangkan. Setiap kali pulang kursus, saya selalu merengek minta dibelikan komputer ke Ibu saya, tapi pada waktu itu harga komputer masih mahal, dan ibu saya masih belum bisa membelikannya.

Menjelang lulus SMP saya sempat bingung apakah mau melanjutkan ke SMA atau SMK. Kalau saya inginnya masuk SMK, agar belajarnya bisa fokus pada satu kemampuan, karena SMK memang ditujukan utnuk mendidik siswanya agar punya kemampuan khusus di bidang tertentu, tidak seperti SMA, yang walaupun sudah ada pembagian seperti Jurusan IPS, IPA, Bahasa dan lain-lain, tapi itu masih "Ngambang". Akhirnya Ayah saya memasukkan saya ke SMKN 4 Bandung, saat masuk SMK ini lah saya pertama kali dibelikan komputer oleh orangtua saya, walaupun komputer bekas, tapi saya sangat bahagia. Saya masuk jurusan Rekayasa Perangkat Lunak. Saya mulai tahu bahwa dunia komputer itu sangat luas. Di SMKN 4 ini lah saya mulai belajar yang namanya bahasa pemrograman untuk membuat program komputer. 4 tahun saya sekolah di SMKN 4 Bandung, tapi saya masih bingung kenapa saya bisa sangat suka dengan komputer.

Setelah lulus dari SMKN 4 Bandung, saya tidak langsung kuliah karena tidak punya biaya untuk kuliah. Saya menganggur dulu satu tahun, setelah itu saya masuk Universitas Bale Bandung(UNIBBA) jurusan Teknik Informatika, saya kuliah 4 tahun disini dan masih tetap belum menemukan jawaban kenapa saya suka dengan komputer. Setelah lulus dari SMKN 4 bandung, saya langsung melamar kerja, setelah melamar ke beberapa tempat akhinya saya diterima di Jasamedika Saranatama sebagai Programmer VB 6.0, ketika wawancara terakhir orang yg mewawancarai saya menanyakan kepada saya kenapa saya menyukai komputer, dan lagi-lagi saya tidak bisa menjawabnya.

Pada waktu hampir satu tahun bekerja di Jasamedika, saya menemukan semacam kesenangan ketika membuat sebuah program, lebih tepatnya saat melakukan debugging, rasanya seperti menjadi detektif, mencari siapa tersangka pembunuhan dan memecahkan kasus. Hal itu benar-benar menyenangkan karena saya juga selain suka komputer sangat suka dengan teka-teki dan memecahkan misteri, teka-teki dan misteri selalu membuat saya tertantang untuk memecahkannya. Setelah menyadari itu, ketika ditanya kenapa suka dengan komputer saya akan menjawab, karena dengan komputer saya bisa membuat program komputer, dan dalam proses membuat program tersebut, banyak sekali teka-teki dan misteri yang harus dipecahkan.

08 June 2016

VB 6.0, Split

Split digunakan untuk memisahkan string berdasarkan tanda pemisah yang telah ditentukan. String-string yang dipisahkan, masing-masing disimpan dalam suatu elemen array, banyaknya elemen array yang dihasilkan tergantung berapa banyak string yang dipisahkan. Contoh penggunaan split
Dim arrTmp() As String
Dim i As Integer

Private Sub Command1_Click()
    Label1.Caption = ""

    arrTmp = Split(Text1.Text, ";") 'Tanda titik koma digunakan sebagai tanda untuk memisahkan string

    For i = LBound(arrTmp) To UBound(arrTmp)
        Label1.Caption = Label1.Caption & "" & arrTmp(i) & vbCrLf
    Next i
    
End Sub

15 March 2016

Input di Cell Flexgrid




Dim baris, kolom As Integer 'Untuk menyimpan informasi baris dan kolom yang dipilih user
Dim i, j As Integer 'Untuk keperluan looping
    
Private Sub cbTes_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        'Isi kolom flexgrid sesuai isi teks combo yang dipilih
        Call isiFlexGrid
        
        'Combo dihide dulu
        cbTes.Visible = False
        
        'Jika baris dan kolom yang dipilih adalah baris dan kolom yang terakhir
        If flexTes.Row = flexTes.Rows - 1 And flexTes.Col = flexTes.Cols - 1 Then
            'Cek, apakah ada kolom yang belum terisi
            For i = 1 To flexTes.Col
                If flexTes.TextMatrix(flexTes.Row, i) = "" Then Exit Sub 'Jika ada kolom yang belum terisi, maka jangan buat baris baru
            Next i
            
            'Buat baris baru
            flexTes.Rows = flexTes.Rows + 1
            
            'Pindah fokus ke baris yang baru
            flexTes.Row = flexTes.Row + 1
            
            'Pindah fokus ke kolom pada baris yang baru
            flexTes.Col = 1
            
            'Fungsi untuk seolah-olah tombol panah bawah keyboard ditekan
            'Ini berguna ketika baris flexgrid sudah mencapai batas bawah flexgrid, maka baris paling atas seolah-olah akan dihide
            'sehingga posisi baris yang baru akan dinaikkan agar lebih kelihatan
            SendKeys "{DOWN}"
                    
        'Jika kolom yang dipilih adalah kolom yang terakhir tetapi barisnya bukan baris terakhir(baris-baris sebelum baris yang terakhir)
        ElseIf flexTes.Col = flexTes.Cols - 1 And flexTes.Row < flexTes.Rows - 1 Then
            'Pindah ke baris berikutnya(tidak membuat baris baru, tetapi pindah ke baris berikutnya)
            flexTes.Row = flexTes.Row + 1
            
            'Pindah ke kolom berikutnya
            flexTes.Col = 1
        
        Else
            'Pindah ke kolom berikutnya
            flexTes.Col = flexTes.Col + 1
        End If
        
        
    End If
End Sub


Private Sub flexTes_KeyDown(KeyCode As Integer, Shift As Integer)
    'Jika ditekan tombol ennter
    If KeyCode = 13 Then
        'Tampilkan combobox
        Call tampilCombo
        
    'Jika ditekan tombol delete
    ElseIf KeyCode = vbKeyDelete Then
        'Tidak boleh melakukan hapus pada baris yang merupakan satu-satunya baris yang tersisa
        If flexTes.Rows = 2 Then Exit Sub
        
        'Hapus baris yang dipilih
        flexTes.RemoveItem flexTes.Row
    End If
    
End Sub

Private Sub Form_Load()
    'Default combobox dihide dulu
    cbTes.Visible = False
    
    'Tambahkan item(daftar isi) combobox
    cbTes.AddItem "Item 1"
    cbTes.AddItem "Item 2"
    
    'Setting flexgrid
    Call setGrid
End Sub

Private Sub tampilCombo()
    
    cbTes.Visible = True
    
    'Inisialisasi default koordinat kiri dan atas combo
    cbTes.Left = flexTes.Left 'Koordinat kiri combo disamakan dengan koordinat kiri flexgrid
    cbTes.Top = flexTes.Top 'Koordinat atas combo disamakan dengan koordinat atas flexgrid
    
    'Looping untuk menentukan koordinat kiri combo
    'Jika kita memilih kolom ke 3, maka looping akan dilakukan mulai dari kolom ke 0 sampai kolom ke 2
    For i = 0 To flexTes.Col - 1
        cbTes.Left = cbTes.Left + flexTes.ColWidth(i) 'Pada setiap looping koordinat kiri combo akan ditambah dengan lebar cell
    Next i
    
    'Looping untuk menentukan koordinat atas combo
    'Jika kita memilih baris ke 3, maka looping akan dilakukan mulai dari baris ke 0 sampai baris ke 2
    For j = 0 To flexTes.Row - 1
        cbTes.Top = cbTes.Top + flexTes.RowHeight(j) 'Pada setiap looping koordinat atas combo akan ditambah dengan tinggi cell
    Next j
    
    
    '***Setelah melakukan kedua looping diatas, combo akan berada pada koordinat atas dan kiri kolom yang dipilih***
    
    'Jika baris paling atas yang nampak di grid merupakan baris yang lebih dari baris ke 1, koordinat top dari cbTes dikurangi akumulasi lebar baris-baris
    'sebelum baris paling atas yang nampak di grid
    If flexTes.TopRow > 1 Then
        cbTes.Top = cbTes.Top - ((flexTes.TopRow - 1) * flexTes.RowHeight(1))
    End If
    
    'Munculkan combo yang sebelumnya dihide
    cbTes.Visible = True
     
    'Sesuaikan lebar combo dengan lebar cell yang dipilih
    cbTes.Width = flexTes.ColWidth(flexTes.Col)
    
    'Fokus ke combo
    cbTes.SetFocus
    
End Sub

Private Sub setGrid()
    'Setting baris dan kolom flexgrid
    flexTes.Rows = 2 '2 baris
    flexTes.Cols = 4 '4 kolom
    
    'Lebar untuk kolom 0 langsung dipatok 500
    'Kolom 0 akan diisi nomor baris
    flexTes.ColWidth(0) = 500
    
    'Teks akan ditaruh ditengan-tengah kolom
    flexTes.ColAlignment(0) = flexAlignCenterCenter
    
    'Judul baris ke 0 pada kolom ke 1,2 dan 3
    flexTes.TextMatrix(0, 1) = "Kolom 1"
    flexTes.TextMatrix(0, 2) = "Kolom 2"
    flexTes.TextMatrix(0, 3) = "Kolom 3"
    
    'Inisialisasi awal lebar flexgrid
    flexTes.Width = 0
    
    'Looping untuk menentukan lebar flexgrid agar sesuai dengan lebar seluruh cell
    For i = 0 To flexTes.Cols - 1
        flexTes.Width = flexTes.Width + flexTes.ColWidth(i)
    Next i
    
    'Menambah lebar flexgrid agar ada celah sedikit pada ujung sebelah kanannya
    flexTes.Width = flexTes.Width + 100

    
End Sub

Private Sub isiFlexGrid()
    'Informasi baris yang dipilih user disimpan di variabel baris
    baris = flexTes.Row
    
    'Informasi kolom yang dipilih user disimpan di variabel kolom
    kolom = flexTes.Col
    
    'Beri nomor Pada setiap baris pada kolom ke 0
    flexTes.TextMatrix(baris, 0) = flexTes.Row
    
    'Pada baris dan kolom yang dipilih user, setelah user melakukan enter, akan diisi dengan teks dari combo
    flexTes.TextMatrix(baris, kolom) = cbTes.Text
End Sub

15 February 2016

VB 6.0, Implementasi Algoritma Buble Sort

Berikut adalah implementasi Algoritma Buble Sort menggunakan VB 6.0

Dim arrAngka() As Integer

Dim bolAdaPerubahan As Boolean

Dim strTmp As String

Dim i, j As Integer



Private Sub cmdOK_Click()

    ReDim Preserve arrAngka(Len(Trim(txt1.Text)) - 1)

    

    'Masukan data ke array

    For i = 0 To Len(Trim(txt1.Text)) - 1

        arrAngka(i) = Mid(txt1.Text, i + 1, 1)

    Next i

    

    bolAdaPerubahan = True

    

    'Lakukan pembandingan selama masih ada perubahan

    Do While bolAdaPerubahan = True



x:

    i = 0

    bolAdaPerubahan = False

        

        'Bandingan data dengan data di sebelahnya

        For i = 0 To UBound(arrAngka())

            'Jika masih ada perubahan dan pembandingan sudah dilakukan sampai ke data terakhir

            'Maka ulangi pembandingan dari data pada deretan paling awal

            If bolAdaPerubahan = True And i = UBound(arrAngka()) Then GoTo x:

            

            'Jika sudah tidak ada perubahan dan pembandingan sudah dilakukan sampai ke data terakhir

            'Maka hentikan pembandingan, artinya data sudah terurut dari kecil ke besar

            If bolAdaPerubahan = False And i = UBound(arrAngka()) Then Exit For:

                                                    

            'Apakah angka di sebelahnya lebih kecil?

            If arrAngka(i + 1) < arrAngka(i) Then

                'Jika ya

                

                bolAdaPerubahan = False

                

                'Tukar posisi

                strTmp = arrAngka(i)

                arrAngka(i) = arrAngka(i + 1)

                arrAngka(i + 1) = strTmp

                

                bolAdaPerubahan = True

            End If

            

        Next i

        

    Loop

    

    txt2.Text = ""

    

    'Masukan ke teks hasil

    For i = 0 To UBound(arrAngka)

        txt2.Text = txt2.Text + CStr(arrAngka(i))

    Next i

    

End Sub





SQL Server 2008, Nested Case

Berikut contoh penggunan Case di dalam Case atau Nested Case di Sql Server 2008
SELECT
    col1,
    col2,
    col3,
    CASE WHEN condition THEN
      CASE WHEN condition1 THEN
        CASE WHEN condition2 THEN calculation1
        ELSE calculation2 END
      ELSE
        CASE WHEN condition2 THEN calculation3
        ELSE calculation4 END
      END
    ELSE CASE WHEN condition1 THEN 
      CASE WHEN condition2 THEN calculation5
      ELSE calculation6 END
    ELSE CASE WHEN condition2 THEN calculation7
         ELSE calculation8 END
    END AS 'calculatedcol1',
    col4,
    col5 -- etc
FROM table

14 February 2016

SQL Server 2008, ROW_NUMBER()

ROW_NUMBER() digunakan untuk membuat nomor yang berurutan pada suatu result set, berikut contoh penggunaan ROW_NUMBER()
select top 10 ROW_NUMBER() over(order by NoPendaftaran) as No, NoPendaftaran from detailBiayaPelayanan

--Menggunakan partition, agar nomornya direset ke 1 ketika beda NoPendaftaran
select top 10 ROW_NUMBER() over(partition by nopendaftaran order by NoPendaftaran) as No,NoPendaftaran from detailBiayaPelayanan

Pengumuman