Aplikasi ujian digital

Ujian digital ini biasa digunakan di perusahaan, sekolah atau kampus ketika akan menerima karyawan atau siswa (mahasiswa) baru. Ujian digital ini memberikan kemudahan dalam pengolahan data dibandingkan dengan ujian menggunakan bentuk soal berupa kertas.

4.1 Membuat Project Baru

Tahapan pertama dalam pembuatan aplikasi ujian digital ini adalah membuat project baru dengan langkah sebagai berikut:

1.         Buka visual studio 2008

2.         Klik create project

3.         Tulis nama project “Aplikasi Ujian Digital”

4.         OK

Setelah membuat project baru dan menyimpannya di posisi tertentu, maka akan terbentuk folder project secara otomatis yang di dalamnya terdapat folder ... >> BIN>> DEBUG. Folder inilah yang akan dijadikan tempat menyimpan database.

4.2  Membuat Database Dan Tabel

Lakukan langkah-langkah di bawah ini untuk membuat database dan tabel.

1.              Buka database access 2003

2.              Buatlah sebuah database yang baru kemudian tulis nama database “DTUjian.mdb” dan  simpan di posisi DEBUG project anda

3.              Kemudian buatlah tabel user dengan cara klik menu Create >> Table >> Klik kanan table1 >> Design View dan tulis nama tabel

4.              Selanjutnya buatlah beberapa tabel dengan struktur berikut ini :

Gambar 4.1 Tabel User

Tipe data dalam tabel user semuanya menggunakan text karena tidak ada data yang akan dihitung dalam kalkulasi matematika.

Gambar 4.2  Tabel siswa

Tipe data dalam tabel siswa semuanya menggunakan text karena tidak ada data yang akan dihitung dalam kalkulasi matematika.

 

Gambar 4.3 Tabel mata kuliah

Tipe data SKS dalam tabel mata kuliah menggunakan number, karena akan dihitung bobotnya setelah ada komponen nilai yang dientri. Selain itu semuanya menggunakan text.

Gambar 4.4 Tabel soal

Field Nomor menggunakan tipe data number, hal ini digunakan untuk memudahkan pengurutan data.

Gambar 4.5 Tabel master jawaban

Secara umum tipe data tanggal dan waktu menggunakan date-time, tipe data yang akan digunakan dalam perhitungan menggunakan number, selain itu menggunakan tipe text.

 

Gambar 4.6 Tabel detail jawaban

4.3 Bentuk Relasi Tabel

Bentuk relasi tabel dapat dilihat pada ilustrasi di bawah ini. Gambar ini diambil dari hasil relasi pada crystal report.

Gambar 4.7 Relasi tabel

4.4  Membuat Module Koneksi Database

Tujuan utama membuat module ini adalah agar koneksi ke database cukup dibuat satu kali dan dapat digunakan berkali-kali pada semua form dalam project yang bersangkutan dengan hanya menuliskan nama fungsinya.

Gambar 4.8  Membuat module

Coding dalam module koneksi :

Imports System.Data.OleDb

Imports CrystalDecisions.CrystalReports.Engine

Imports CrystalDecisions.Shared

 

 

Module Module1

 

    Public Conn As OleDbConnection

    Public DA As OleDbDataAdapter

    Public DS As DataSet

    Public CMD As OleDbCommand

    Public DR As OleDbDataReader

 

    Public cryRpt As New ReportDocument

    Public crtableLogoninfos As New TableLogOnInfos

    Public crtableLogoninfo As New TableLogOnInfo

    Public crConnectionInfo As New ConnectionInfo

    Public CrTables As Tables

 

    Public Sub seting_laporan()

        With crConnectionInfo

            .ServerName = (Application.StartupPath.ToString & "\DTUjian.mdb")

            .DatabaseName = (Application.StartupPath.ToString & "\DTUjian.mdb")

            .UserID = ""

            .Password = ""

        End With

 

        CrTables = cryRpt.Database.Tables

        For Each CrTable In CrTables

            crtableLogoninfo = CrTable.LogOnInfo

            crtableLogoninfo.ConnectionInfo = crConnectionInfo

            CrTable.ApplyLogOnInfo(crtableLogoninfo)

        Next

    End Sub

 

    Public Sub Koneksi()

        Try

            Conn = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=DTUjian.mdb")

            Conn.Open()

        Catch ex As Exception

            MsgBox(ex.Message)

            End

        End Try

    End Sub

End Module

 

 

jika penulisan coding anda mengalami error, maka anda harus tambahkan references dengan cara sebagai berkut :

1.         Klik menu project >> Pilih add reference

2.         Pilih crystalldecisions.crystalreport.engine >> ok

3.         Lakukan hal yang sama untuk crystalldecisions.share >> ok

Gambar 4.9  Menambah reference

4.5  Form Login

Form login digunakan sebagai sarana keamanan data dalam aplikasi agar tidak sembarang orang dapat menggunakan aplikasi tersebut.

 

Gambar 4.10  Form login

Logika program :

 

1.              Setelah mengisi nama user lalu menekan enter maka kursor pindah ke password

2.              Setelah mengisi password lalu menekan enter maka kursor pindah ke button Login

3.              Pada saat Login di klik maka cari nama_user dan pass_user di tabel user

4.              Jika data tidak ditemukan maka munculkan pesan “password salah”

5.              Jika data ditemukan, maka form login disembunyikan dan menu untuk admin ditampilkan

6.              Pada Menu utama panel1 tampilkan kode user, di panel2 tampilkan nama user, di panel3 tampilkan status user

Catatan :

Sebelumnya menu utama harus dibuat terlebih dahulu dengan menambahkan MenuStrip dan StatusStrip. Pembahasan tentang hal dapat dilihat dalam video tutorial.

Coding

 

Imports System.Data.OleDb

 

Public Class Login

 

 

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

        If e.KeyChar = Chr(13) Then

            TextBox2.Focus()

        End If

    End Sub

 

    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

        If e.KeyChar = Chr(13) Then

            Button1.Focus()

        End If

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

        Try

            Call Koneksi()

            CMD = New OleDbCommand("select * from tbluser where nama_user='" & TextBox1.Text & "' and PASS_user='" & TextBox2.Text & "'", Conn)

            DR = CMD.ExecuteReader

            DR.Read()

            If Not DR.HasRows Then

                MsgBox("Login gagal")

                TextBox1.Clear()

                TextBox2.Clear()

                TextBox1.Focus()

            Else

                Me.Visible = False

                MenuUtama.Panel1.Text = DR.Item("kode_user")

                MenuUtama.Panel2.Text = DR.Item("nama_user")

                MenuUtama.Panel3.Text = DR.Item("status_user")

                MenuUtama.GroupBox1.Visible = True

                MenuUtama.GroupBox2.Visible = False

            End If

 

        Catch ex As Exception

            MsgBox(ex.Message)

        End Try

    End Sub

 

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

        Me.Close()

    End Sub

 

End Class

4.6  Form Menu Utama Admin

Menu utama digunakan sebagai sarana integrasi untuk dapat memanggil semua form dalam project yang bersangkutan.

Gambar 4.11  Form menu utama

4.7  Form User

Logika dan proses program dalam form User adalah sebagai berikut :

1.              Ketik kode user dengan pola USR01, jika kode ditemukan maka tampilkan nama, password dan statusnya di masing-masing texbox

2.              Jika datanya tidak ditemukan maka entrilah data yang baru

3.              Pada saat button simpan di klik maka, program akan mencari kode tersebut ke dalam tabel user

4.              Jika kodenya tidak ada maka data tersebut akan disimpan sebagai data baru (proses Insert)

5.              Jika kode tersebut ada maka data tersebut akan diedit (proses update)

6.              Proses edit dan hapus cukup dengan memilih data user dalam grid maka data akan masuk ke masing-masing textbox atau combo, kemudian lakukan proses edit atau hapus sesuai kebutuhan.

Gambar 4.12  Form user

Dalam pembuatan sebuah form, sebaiknya menggunakan GroupBox agar mengatur posisi objek-objek di dalamnya lebih mudah.

4.8  Form siswa

Logika dan proses program dalam form siswa adalah sebagai berikut :

1.              Pilih jurusan dalam combobox1

2.              NIM dan kelas akan muncul secara otomatis berdasarkan jurusannya

3.              Langkan selanjutnya mengisi nama siswa dan menyimpan data baru tersebut

4.              Proses edit dan hapus cukup dengan memilih data siswa dalam grid maka data akan masuk ke masing-masing textbox atau combo, kemudian lakukan proses edit atau hapus sesuai kebutuhan.

Gambar 4.13  Form siswa

Coding :

Imports System.Data.OleDb

 

Public Class DataSiswa

 

    Sub Tampilgrid()

        Call Koneksi()

        DA = New OleDbDataAdapter("select * from TBLSiswa", Conn)

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

        DGV.ReadOnly = True

    End Sub

 

 

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

        ComboBox1.Items.Add("MANAJEMEN INFORMATIKA")

        ComboBox1.Items.Add("MANAJEMEN ADMINISTRASI")

        ComboBox1.Items.Add("AKUNTANSI")

        ComboBox1.Items.Add("SEKRETARI")

        Call Tampilgrid()

        TextBox1.Enabled = False

        TextBox2.Enabled = False

        TextBox5.Enabled = False

    End Sub

 

      Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress

        If e.KeyChar = Chr(13) Then

            Call CariJumlahSiswa()

            Call Carikelas()

            TextBox3.Focus()

        End If

    End Sub

 

    Sub CariJumlahSiswa()

        Call Koneksi()

        CMD = New OleDbCommand("select count(*) from tblsiswa where jurusan='" & ComboBox1.Text & "'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            TextBox5.Text = 1

        Else

            TextBox5.Text = DR.Item(0) + 1

        End If

    End Sub

 

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        Call CariJumlahSiswa()

        Call Carikelas()

        TextBox3.Focus()

    End Sub

 

    Sub Carikelas()

        If ComboBox1.Text = "MANAJEMEN INFORMATIKA" And Val(TextBox5.Text) <= 3 Then

            TextBox1.Text = "MI" & Format(Today, "yy") & "A"

        ElseIf ComboBox1.Text = "MANAJEMEN INFORMATIKA" And Val(TextBox5.Text) > 3 And Val(TextBox5.Text) <= 6 Then

            TextBox1.Text = "MI" & Format(Today, "yy") & "B"

        ElseIf ComboBox1.Text = "MANAJEMEN INFORMATIKA" And Val(TextBox5.Text) > 6 And Val(TextBox5.Text) <= 9 Then

            TextBox1.Text = "MI" & Format(Today, "yy") & "C"

        ElseIf ComboBox1.Text = "MANAJEMEN INFORMATIKA" And Val(TextBox5.Text) > 9 Then

            TextBox1.Text = "MI" & Format(Today, "yy") & "Z"

 

        ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" And Val(TextBox5.Text) <= 3 Then

            TextBox1.Text = "MA" & Format(Today, "yy") & "A"

        ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" And Val(TextBox5.Text) > 3 And Val(TextBox5.Text) <= 6 Then

            TextBox1.Text = "MA" & Format(Today, "yy") & "B"

        ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" And Val(TextBox5.Text) > 6 And Val(TextBox5.Text) <= 9 Then

            TextBox1.Text = "MA" & Format(Today, "yy") & "C"

        ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" And Val(TextBox5.Text) > 9 Then

            TextBox1.Text = "MA" & Format(Today, "yy") & "Z"

 

        ElseIf ComboBox1.Text = "AKUNTANSI" And Val(TextBox5.Text) <= 3 Then

            TextBox1.Text = "AK" & Format(Today, "yy") & "A"

        ElseIf ComboBox1.Text = "AKUNTANSI" And Val(TextBox5.Text) > 3 And Val(TextBox5.Text) <= 6 Then

            TextBox1.Text = "AK" & Format(Today, "yy") & "B"

        ElseIf ComboBox1.Text = "AKUNTANSI" And Val(TextBox5.Text) > 6 And Val(TextBox5.Text) <= 9 Then

            TextBox1.Text = "AK" & Format(Today, "yy") & "C"

        ElseIf ComboBox1.Text = "AKUNTANSI" And Val(TextBox5.Text) > 9 Then

            TextBox1.Text = "AK" & Format(Today, "yy") & "Z"

 

        ElseIf ComboBox1.Text = "SEKRETARI" And Val(TextBox5.Text) <= 3 Then

            TextBox1.Text = "SK" & Format(Today, "yy") & "A"

        ElseIf ComboBox1.Text = "SEKRETARI" And Val(TextBox5.Text) > 3 And Val(TextBox5.Text) <= 6 Then

            TextBox1.Text = "SK" & Format(Today, "yy") & "B"

        ElseIf ComboBox1.Text = "SEKRETARI" And Val(TextBox5.Text) > 6 And Val(TextBox5.Text) <= 9 Then

            TextBox1.Text = "SK" & Format(Today, "yy") & "C"

        ElseIf ComboBox1.Text = "SEKRETARI" And Val(TextBox5.Text) > 9 Then

            TextBox1.Text = "SK" & Format(Today, "yy") & "Z"

        End If

 

        Call CariNIM()

    End Sub

 

    Sub CariNIM()

        Call Koneksi()

        CMD = New OleDbCommand("select nim from tblsiswa where jurusan='" & ComboBox1.Text & "' order by nim desc", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            If ComboBox1.Text = "MANAJEMEN INFORMATIKA" Then

                TextBox2.Text = Format(Today, "yy") + "01" + "001"

            ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" Then

                TextBox2.Text = Format(Today, "yy") + "02" + "001"

            ElseIf ComboBox1.Text = "AKUNTANSI" Then

                TextBox2.Text = Format(Today, "yy") + "03" + "001"

            ElseIf ComboBox1.Text = "SEKRETARI" Then

                TextBox2.Text = Format(Today, "yy") + "04" + "001"

            End If

        Else

            Dim Hitung As String = Microsoft.VisualBasic.Right(DR.Item("NIM"), 3) + 1

 

            If ComboBox1.Text = "MANAJEMEN INFORMATIKA" Then

                TextBox2.Text = Format(Today, "yy") + "01" + Microsoft.VisualBasic.Right("000" & Hitung, 3)

            ElseIf ComboBox1.Text = "MANAJEMEN ADMINISTRASI" Then

                TextBox2.Text = Format(Today, "yy") + "02" + Microsoft.VisualBasic.Right("000" & Hitung, 3)

            ElseIf ComboBox1.Text = "AKUNTANSI" Then

                TextBox2.Text = Format(Today, "yy") + "03" + Microsoft.VisualBasic.Right("000" & Hitung, 3)

            ElseIf ComboBox1.Text = "SEKRETARI" Then

                TextBox2.Text = Format(Today, "yy") + "04" + Microsoft.VisualBasic.Right("000" & Hitung, 3)

            End If

        End If

 

    End Sub

 

    Sub Kosongkan()

        ComboBox1.Text = ""

        TextBox1.Clear()

        TextBox2.Clear()

        TextBox3.Clear()

        TextBox5.Clear()

        TextBox4.Clear()

        ComboBox1.Enabled = True

        TextBox3.Enabled = True

        ComboBox1.Focus()

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If ComboBox1.Text = "" Or TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Then

            MsgBox("data belum lengkap")

            Exit Sub

        Else

            Call Koneksi()

            CMD = New OleDbCommand("select * from TBLSiswa where NIM='" & TextBox2.Text & "'", Conn)

            DR = CMD.ExecuteReader

            DR.Read()

            If Not DR.HasRows Then

                Call Koneksi()

                Dim simpan As String = "insert into TBLSiswa values('" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox1.Text & "','" & UCase(ComboBox1.Text) & "','" & TextBox2.Text & "')"

                CMD = New OleDbCommand(simpan, Conn)

                CMD.ExecuteNonQuery()

            Else

                Call Koneksi()

                Dim edit As String = "update TBLSiswa set Nama='" & TextBox3.Text & "',jurusan='" & UCase(ComboBox1.Text) & "',kelas='" & TextBox1.Text & "' where NIM='" & TextBox2.Text & "'"

                CMD = New OleDbCommand(edit, Conn)

                CMD.ExecuteNonQuery()

            End If

            Call Kosongkan()

            Call Tampilgrid()

        End If

    End Sub

 

 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Call Kosongkan()

    End Sub

 

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        Me.Close()

    End Sub

 

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

        If TextBox2.Text = "" Then

            MsgBox("NIM harus diisi dulu")

            TextBox2.Focus()

            Exit Sub

        Else

            If MessageBox.Show("hapus data ini...?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then

                Call Koneksi()

                Dim hapus As String = "delete from TBLSiswa where NIM='" & TextBox2.Text & "'"

                CMD = New OleDbCommand(hapus, Conn)

                CMD.ExecuteNonQuery()

                Call Kosongkan()

                Call Tampilgrid()

            Else

                Call Kosongkan()

            End If

        End If

    End Sub

 

    Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick

        On Error Resume Next

        ComboBox1.Enabled = False

        TextBox1.Enabled = False

        TextBox2.Enabled = False

 

        TextBox3.Text = DGV.Rows(e.RowIndex).Cells(1).Value

        TextBox1.Text = DGV.Rows(e.RowIndex).Cells(2).Value

        TextBox2.Text = DGV.Rows(e.RowIndex).Cells(0).Value

        ComboBox1.Text = DGV.Rows(e.RowIndex).Cells(3).Value

 

    End Sub

 

    Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress

        If e.KeyChar = Chr(13) Then

            Button1.Focus()

        End If

    End Sub

 

    Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged

        Call Koneksi()

        CMD = New OleDbCommand("select * from TBLSiswa where Nama like '%" & TextBox4.Text & "%'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            Call Koneksi()

            DA = New OleDbDataAdapter("select * from TBLSiswa where Nama like '%" & TextBox4.Text & "%'", Conn)

            DS = New DataSet

            DA.Fill(DS)

            DGV.DataSource = DS.Tables(0)

        Else

            MsgBox("Nama user tidak ditemukan")

        End If

    End Sub

End Class

4.9  Form Mata Kuliah

Proses program dalam pengolahan data mata kuliah sama dengan data siswa.

Gambar 4.14  Form mata kuliah

4.10  Form Soal Ujian

4.10.1 Soal Ujian Model Pertama

Bentuk form soal ujian terdiri dari dua model, yang pertama adalah dengan mengetik soal ujian satu  persatu sesuai mata kuliahnya. Bentuk form model pertama adalah sebagai berikut :

Gambar 4.15  Form soal ujian model pertama

Coding :

Imports System.Data.OleDb

 

Public Class SoalUjian

 

    Sub TampilKuliah()

        CMD = New oledbCommand("select * from TBLKuliah order by 1", CONN)

        DR = CMD.ExecuteReader

        ComboBox1.Items.Clear()

        Do While DR.Read

            ComboBox1.Items.Add(DR.Item("IDKuliah") & Space(2) & DR.Item("MataKuliah"))

        Loop

    End Sub

 

    Sub JumlahSoal()

        For jumlah As Integer = 5 To 50 Step 5

            ComboBox2.Items.Add(jumlah)

        Next

    End Sub

 

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

        Call Koneksi()

        Call TampilKuliah()

        Call JumlahSoal()

    End Sub

 

    Sub AturKolomBaru()

        DGV.Columns.Add("Pertanyaan", "Pertanyaan")

        DGV.Columns(1).Width = 550

        DGV.Columns.Add("A", "Jawaban A") : DGV.Columns(2).Width = 75

        DGV.Columns.Add("B", "Jawaban B") : DGV.Columns(3).Width = 75

        DGV.Columns.Add("C", "Jawaban C") : DGV.Columns(4).Width = 75

        DGV.Columns.Add("D", "Jawaban D") : DGV.Columns(5).Width = 75

        DGV.Columns.Add("Jawaban", "Kunci Jawaban") : DGV.Columns(6).Width = 75

        DGV.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

    End Sub

 

    Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

        DGV.Columns.Clear()

        DGV.DataSource = Nothing

        DGV.Refresh()

        DGV.Columns.Add("Nomor", "Nomor")

        DGV.Columns(0).ReadOnly = True

        DGV.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

        DGV.Columns(0).Width = 50

        For baris As Integer = 0 To Val(ComboBox2.Text) - 1

            DGV.RowCount = DGV.RowCount + 1

            DGV.Rows(baris).Cells(0).Value = DGV.RowCount - 1

        Next

 

        Call AturKolomBaru()

 

    End Sub

 

    Sub AturKolomKetemu()

        DGV.Columns(0).Width = 50

        'DGV.Columns(0).ReadOnly = True

        DGV.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

        DGV.Columns(1).Width = 550

        DGV.Columns(2).Width = 75

        DGV.Columns(3).Width = 75

        DGV.Columns(4).Width = 75

        DGV.Columns(5).Width = 75

        DGV.Columns(6).Width = 75

        DGV.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

        For baris As Integer = 0 To DGV.RowCount - 2

            DGV.Rows(baris).Cells(0).ReadOnly = True

        Next

    End Sub

 

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        Call Koneksi()

        CMD = New oledbCommand("select Nomor,Pertanyaan,A,B,C,D,Jawaban from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 5) & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            Call Koneksi()

            DA = New oledbDataAdapter("select Nomor,Pertanyaan,A,B,C,D,Jawaban from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 5) & "' order by 1 ", CONN)

            DS = New DataSet

            DA.Fill(DS)

            DGV.DataSource = DS.Tables(0)

            Call AturKolomKetemu()

            ComboBox2.Enabled = False

        Else

            DGV.Columns.Clear()

            ComboBox2.Enabled = True

        End If

    End Sub

 

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

        ComboBox1.Text = ""

        ComboBox2.Text = ""

        DGV.Columns.Clear()

    End Sub

 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Me.Close()

    End Sub

  

    Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label4.Click

 

    End Sub

End Class

4.10.2 Soal Ujian Model Kedua

Bentuk form soal ujian model kedua adalah dengan cara import data dari excel. Cara ini dianggap lebih mudah dan lebih efektif dibandingkan dengan cara pertama.

Gambar 4.16  Form soal ujian model pertama

Coding :

Imports System.Data.OleDb

 

Public Class ImportSoalUjian

 

    'membuat definisi variabel untuk koneksi yang baru ke data excel

    Dim connexcel As OleDbConnection

    Dim daexcel As OleDbDataAdapter

    Dim dsexcel As DataSet

    Dim cmdexcel As OleDbCommand

    Dim drexcel As OleDbDataReader

 

    Sub excelkoneksi()

        'string koneksi ke data excel

        connexcel = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & Label1.Text & "';Extended Properties=""Excel 12.0 Xml;HDR=YES"";")

        connexcel.Open()

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        OpenFileDialog1.Filter = "(*.xls)|*.xls|(*.xlsx)|*.xlsx|All files (*.*)|*.*"

        OpenFileDialog1.ShowDialog()

        Label1.Text = OpenFileDialog1.FileName

        Call excelkoneksi()

 

        Dim dtSheets As DataTable = connexcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)

        Dim listSheet As New List(Of String)

        Dim drSheet As DataRow

        'menambahan nama-nama sheet excel agar dianggap sebagai tabel

        For Each drSheet In dtSheets.Rows

            listSheet.Add(drSheet("TABLE_NAME"))

        Next

        'menampilkan nama-nama worksheet dalam file excel

        For Each sheet As String In listSheet

            ListBox1.Items.Add(sheet)

        Next

    End Sub

 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Label1.Text = ""

        ListBox1.Items.Clear()

        DGV.Columns.Clear()

    End Sub

 

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        Me.Close()

    End Sub

 

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

        Call excelkoneksi()

        'menampilkan isi worksheet excel yang dipilih dalam listbox1 ke dalam grid

        daexcel = New OleDbDataAdapter("select * from [" & ListBox1.Text & "]", connexcel)

        dsexcel = New DataSet

        daexcel.Fill(dsexcel)

        DGV.DataSource = dsexcel.Tables(0)

        DGV.ReadOnly = True

    End Sub

 

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

        If ListBox1.Text = "" Then

            MsgBox("pilih soal ujian dalam listbox")

            Exit Sub

        End If

 

        For baris As Integer = 0 To DGV.RowCount - 2

            Call Koneksi()

            CMD = New OleDbCommand("select idkuliah from Tblsoal where idkuliah='" & DGV.Rows(baris).Cells(0).Value & "'", Conn)

            DR = CMD.ExecuteReader

            DR.Read()

            If DR.HasRows Then

                'data yang sudah ada dihapus terlebih dahulu

                Dim hapus As String = "delete * from Tblsoal where idkuliah='" & DGV.Rows(baris).Cells(0).Value & "'"

                CMD = New OleDbCommand(hapus, Conn)

                CMD.ExecuteNonQuery()

            End If

        Next

        DGV.Columns.Clear()

    End Sub

End Class

4.11    Form Ujian Digital

Logika dan proses program dalam ujian digital adalah sebagai berikut :

1.              Peserta melakukan login terlebih dahulu ke dalam sistem

2.              Peserta memilih soal ujian (mata kuliah)

3.              Memilih nomor soal dalam list sebelah kiri

4.              Membaca soal ujian dan memberikan jawaban pada radio button yang telah disediakan

5.              Klik button jawab, maka hasil jawaban akan muncul di dalam grid sebelah kanan

6.              Butir soal ujian yang sudah dijawab tidak dapat diulang kembali

7.              Setelah selesai mengerjakan soal ujian peserta memilih button “selesai” maka akan muncul hasil akumulasi jawaban

Gambar 4.17  Form transaksi ujian digital

 

Tidak boleh menjawa dua kali pada nomor soal yang sama

 

 

Petunjuk mengerjakan soal ujian digital

 

 

Hasil ujian

 

Coding :

 

Imports System.Data.OleDb

 

Public Class Ujian

 

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

        Label11.Text = Format(Today, "MM/dd/yyyy")

        Call Koneksi()

        'tampilkan mata kuliah yang cocok dengan hasil login yang tercantum di panel1 menu utama (sesuai jurusan)

        CMD = New oledbCommand("select * from tblkuliah WHERE LEFT(IDKULIAH,1)='" & Trim(Microsoft.VisualBasic.Mid(MenuUtama.Panel1.Text, 4, 1)) & "'", CONN)

        DR = CMD.ExecuteReader

        ComboBox1.Items.Clear()

        Do While DR.Read

            ComboBox1.Items.Add(DR.Item("Idkuliah") & Space(5) & DR.Item("matakuliah"))

        Loop

        Label14.Text = 0

        Label15.Text = 0

        Label16.Text = 0

        Label17.Text = 0

        Label18.Text = 0

        Label19.Text = "-"

        DGV.ReadOnly = True

        DGV.Rows.Clear()

    End Sub

 

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        'cari data NIM yang pernah melakukan ujian di mata kuliah yang dipilih di combobox1

        CMD = New OleDbCommand("select * from tblmasterjawaban where nim='" & Label23.Text & "' and idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            'jika sudah ada maka tampilkan pesan

            MsgBox("Anda sudah mengikuti test mata kuliah ini " & Chr(13) & _

                    "Tanggal    :" & Format(DR.Item("tanggal"), "dd-MMM-yyyy") & " " & Chr(13) & _

                    "Mulai      :" & Format(DR.Item("Mulai"), "hh:mm:ss") & " " & vbCrLf & _

                    "Selesai    :" & Format(DR.Item("selesai"), "hh:mm:ss") & " " & vbCrLf & _

                    "Jml Soal   :" & DR.Item("jmlsoal") & " " & vbCrLf & _

                    "Dijawab    :" & DR.Item("dijawab") & " " & vbCrLf & _

                    "Jml Benar  :" & DR.Item("benar") & " " & vbCrLf & _

                    "Jml Salah  :" & DR.Item("salah") & " " & vbCrLf & _

                    "Keterangan :" & DR.Item("keterangan") & " ")

            Exit Sub

        End If

 

        'jika belum ada maka tampilkan nomor soal ujiannya

        CMD = New OleDbCommand("select nomor from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' order by 1", Conn)

        DR = CMD.ExecuteReader

        ListBox1.Items.Clear()

        Do While DR.Read

            ListBox1.Items.Add(DR.Item("Nomor"))

        Loop

        ListBox1.Focus()

    End Sub

 

 

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

        Call BersihkanJawaban()

        'tampilkan pertanyaan soal ujian dalam textbox1 sesuai dengan nomor soal yang dipilih

        CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & Val(ListBox1.Text) & "'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox1.Text = DR.Item("pertanyaan")

            RadioButton1.Text = DR.Item("A")

            RadioButton2.Text = DR.Item("B")

            RadioButton3.Text = DR.Item("C")

            RadioButton4.Text = DR.Item("D")

        End If

    End Sub

 

    Sub BersihkanJawaban()

        RadioButton1.Checked = False

        RadioButton2.Checked = False

        RadioButton3.Checked = False

        RadioButton4.Checked = False

    End Sub

 

    Private Sub RadioButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton1.Click

        'jika jawaban A dipilih maka lakukan proses penyesuaian jawaban apakah benar atau salah

        CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & ListBox1.Text & "'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            Label20.Text = "A"

            Label21.Text = DR.Item("Jawaban")

            If Label20.Text = Label21.Text Then Label22.Text = "BENAR" Else Label22.Text = "SALAH"

        End If

    End Sub

 

    Private Sub RadioButton2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton2.Click

        'jika jawaban B dipilih maka lakukan proses penyesuaian jawaban apakah benar atau salah

        CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & ListBox1.Text & "'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            Label20.Text = "B"

            Label21.Text = DR.Item("Jawaban")

            If Label20.Text = Label21.Text Then Label22.Text = "BENAR" Else Label22.Text = "SALAH"

        End If

    End Sub

 

    Private Sub RadioButton3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton3.Click

        'jika jawaban C dipilih maka lakukan proses penyesuaian jawaban apakah benar atau salah

        CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & ListBox1.Text & "'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            Label20.Text = "C"

            Label21.Text = DR.Item("Jawaban")

            If Label20.Text = Label21.Text Then Label22.Text = "BENAR" Else Label22.Text = "SALAH"

        End If

    End Sub

 

    Private Sub RadioButton4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton4.Click

        'jika jawaban D dipilih maka lakukan proses penyesuaian jawaban apakah benar atau salah

        CMD = New OleDbCommand("select * from tblsoal where idkuliah='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 3) & "' and VAL(nomor)='" & ListBox1.Text & "'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            Label20.Text = "D"

            Label21.Text = DR.Item("Jawaban")

            If Label20.Text = Label21.Text Then Label22.Text = "BENAR" Else Label22.Text = "SALAH"

        End If

    End Sub

 

 

    Private Sub BTNJawab_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNJawab.Click

        'jika mata kuliah belum dipilih

        If ComboBox1.Text = "" Then

            MsgBox("Anda belum memilih mata kuliah")

            Exit Sub

        End If

        'jika belum memeilih nomor soal

        If ListBox1.Text = "" Or TextBox1.Text = "" Then

            MsgBox("Anda belum memilih nomor soal")

            Exit Sub

        End If

 

        'jika belum memilih jawaban

        If RadioButton1.Checked = False And RadioButton2.Checked = False And RadioButton3.Checked = False And RadioButton4.Checked = False Then

            MsgBox("Anda belum memilih jawaban")

            Exit Sub

        End If

 

        'jika nomor soal tersebut sudah dijawab

        For BARIS As Integer = 0 To DGV.RowCount - 1

            If ListBox1.Text = DGV.Rows(BARIS).Cells(0).Value Then

                MsgBox("Nomor ini sudah dijawab")

                Exit Sub

            End If

        Next

        'jawaban akan tampil di dalam grid sebelah kanan

        DGV.Rows.Add(ListBox1.Text, Label20.Text, Label21.Text, Label22.Text)

        ListBox1.Focus()

        ListBox1.SelectedItem = ListBox1.SelectedItem + 1

    End Sub

 

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Label12.Text = TimeOfDay

        Timer1.Enabled = False

    End Sub

 

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

        Label13.Text = TimeOfDay

    End Sub

 

    'membuat fungsi untuk menghitung jumlah jawaban yang benar

    Sub JumlahBenar()

        Dim hitung As Integer = 0

        For baris As Integer = 0 To DGV.RowCount - 2

            If DGV.Rows(baris).Cells(3).Value = "BENAR" Then

                hitung = hitung + 1

                Label17.Text = hitung

            End If

        Next

    End Sub

 

    'membuat fungsi untuk menghitung jumlah jawaban yang benar

    Sub JumlahSalah()

        Dim hitung As Integer = 0

        For baris As Integer = 0 To DGV.RowCount - 2

            If DGV.Rows(baris).Cells(3).Value = "SALAH" Then

                hitung = hitung + 1

                Label18.Text = hitung

            End If

        Next

    End Sub

 

    Private Sub BTNSelesai_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNSelesai.Click

        Try

            'ketika BTNselesai di klik maka....

            Timer2.Enabled = False

            Dim awal As Date = TimeValue(Label12.Text)

            Dim hasil As TimeSpan = Now - awal

            'hitung durasi pengerjaan soal ujian

            Label14.Text = (String.Format("{0}:{1}:{2}", hasil.Hours, hasil.Minutes, hasil.Seconds))

            'hitung banyaknya nomor soal ujian

            Label15.Text = ListBox1.Items.Count

            Label16.Text = DGV.RowCount - 1

 

            Call JumlahBenar()

            Call JumlahSalah()

            'jika jumlah benar > jumlah salah maka "LULUS"

            If Val(Label17.Text) > Val(Label18.Text) Then

                Label19.Text = "LULUS"

            Else

                Label19.Text = "GAGAL"

            End If

 

        Catch ex As Exception

            MsgBox(ex.Message)

        End Try

    End Sub

 

    Private Sub BTNTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNTutup.Click

        ComboBox1.Text = ""

        ListBox1.Items.Clear()

        TextBox1.Clear()

        DGV.Rows.Clear()

        Me.Close()

    End Sub

 

    Private Sub BTNPetunjuk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNPetunjuk.Click

        MsgBox("1. Pilih Materi di combo paling atas" & Chr(13) & _

        "2. Pilih Nomor Soal dalam list di sebelah kiri" & Chr(13) & _

        "3. Pilih Jawaban pada option button" & vbCrLf & _

        "4. Klik Jawab" & vbCrLf & _

        "5. Lanjutkan ke soal nomor Berikutnya")

    End Sub

 

    Private Sub BTNBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNBatal.Click

        ComboBox1.Text = ""

        ListBox1.Items.Clear()

        TextBox1.Clear()

        DGV.Rows.Clear()

        Call BersihkanJawaban()

    End Sub

End Class

4.12            Laporan Master

Tahapan pembuatan laporan telah dibahas pada bab sebelumnya, untuk itu silakan dipelajari kembali.

4.12.1 Laporan Data Siswa

Sebelum membuat laporan master, buatlah sebuah form dengan bentuk seperti gambar di bawah ini.

Gambar 4.18  Laporan data siswa

Imports System.Data.OleDb

 

Public Class LaporanMaster

 

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

        Call Koneksi()

 

        CMD = New OleDbCommand("select distinct kelas from tblsiswa", Conn)

        DR = CMD.ExecuteReader

        ComboBox1.Items.Clear()

        Do While DR.Read

            ComboBox1.Items.Add(DR.Item("kelas"))

        Loop

 

        CMD = New OleDbCommand("select nama from tblsiswa", Conn)

        DR = CMD.ExecuteReader

        ComboBox2.Items.Clear()

        Do While DR.Read

            ComboBox2.Items.Add(DR.Item("nama"))

        Loop

 

        CMD = New OleDbCommand("select matakuliah from tblkuliah", Conn)

        DR = CMD.ExecuteReader

        ComboBox3.Items.Clear()

        Do While DR.Read

            ComboBox3.Items.Add(DR.Item("matakuliah"))

            ComboBox5.Items.Add(DR.Item("matakuliah"))

        Loop

 

        CMD = New OleDbCommand("select distinct jurusan from tblkuliah", Conn)

        DR = CMD.ExecuteReader

        ComboBox4.Items.Clear()

        Do While DR.Read

            ComboBox4.Items.Add(DR.Item("jurusan"))

        Loop

 

    End Sub

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        CRV.ReportSource = Nothing

        cryRpt.Load("LAPORAN siswa.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

 

    End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        CRV.ReportSource = Nothing

        CRV.SelectionFormula = "{tblsiswa.kelas}='" & ComboBox1.Text & "'"

        cryRpt.Load("LAPORAN siswa.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

 

    Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

        CRV.ReportSource = Nothing

        CRV.SelectionFormula = "{tblsiswa.nama}='" & ComboBox2.Text & "'"

        cryRpt.Load("LAPORAN siswa.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

4.12.2 Laporan Data Mata Kuliah

Laporan master data mata kuliah berada satu form dengan laporan master lainnya.

Gambar 4.19  Laporan data mata kuliah

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

        CRV.ReportSource = Nothing

        cryRpt.Load("LAPORAN mtkuliah.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

Private Sub ComboBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged

        CRV.ReportSource = Nothing

        CRV.SelectionFormula = "{tblkuliah.matakuliah} like '*" & ComboBox3.Text & "*'"

        cryRpt.Load("LAPORAN mtkuliah.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

 

    Private Sub ComboBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox4.SelectedIndexChanged

        CRV.ReportSource = Nothing

        CRV.SelectionFormula = "{tblkuliah.jurusan} like '*" & ComboBox4.Text & "*'"

        cryRpt.Load("LAPORAN mtkuliah.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

4.12.1 Laporan Data Soal Ujian

Laporan master data soal ujian berada satu form dengan laporan master lainnya.

Gambar 4.20  Laporan data soal ujian

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        CRV.ReportSource = Nothing

        cryRpt.Load("LAPORAN soal ujian.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

 

    Private Sub ComboBox5_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox5.SelectedIndexChanged

        CRV.ReportSource = Nothing

        CRV.SelectionFormula = "{tblkuliah.matakuliah} like '*" & ComboBox5.Text & "*'"

        cryRpt.Load("LAPORAN soal ujian.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

4.13 Laporan Hasil  Ujian digital

Tahapan pembuatan laporan dimulai dengan mendesain bentuk-bentuk laporan yang diperlukan, silakan gunakan Ms. Word atau Ms. Excel sebagai model awalnya atau bahkan dengan coretan tangan pada lembaran kertas kosong, kemudian masing-masing laporan tersebut diprediksi tabel apa yang terlibat di dalamnya. Setelah desain selesai dan prediksi tabel-tabel yang diperlukan diketahui, maka mulailah membuat laporan dengan Crystal report.

4.13.1 Laporan Hasil Ujian Per Kelas

Pembuatan laporan hasil ujian diawali dengan membuat form seperti gambar di bawah ini dan membuat laporan di crystal report.

Gambar 4.21  Laporan ujian per kelas dan mata kuliah

Imports System.Data.OleDb

 

Public Class LaporanNilai

 

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

        Call Koneksi()

        CMD = New OleDbCommand("select distinct kelas from tblsiswa,tblmasterjawaban where tblsiswa.nim=tblmasterjawaban.nim", Conn)

        DR = CMD.ExecuteReader

        ComboBox1.Items.Clear()

        Do While DR.Read

            ComboBox1.Items.Add(DR.Item("kelas"))

        Loop

 

        CMD = New OleDbCommand("select distinct matakuliah from tblkuliah,tblmasterjawaban where tblkuliah.idkuliah=tblmasterjawaban.idkuliah", Conn)

        DR = CMD.ExecuteReader

        ComboBox2.Items.Clear()

        Do While DR.Read

            ComboBox2.Items.Add(DR.Item("matakuliah"))

        Loop

 

        CMD = New OleDbCommand("select distinct NIM from tblmasterjawaban", Conn)

        DR = CMD.ExecuteReader

        ComboBox3.Items.Clear()

        Do While DR.Read

            ComboBox3.Items.Add(DR.Item("NIM"))

        Loop

    End Sub

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        CRV.ReportSource = Nothing

        CRV.SelectionFormula = "{tblsiswa.kelas}='" & ComboBox1.Text & "' and {tblkuliah.matakuliah}='" & ComboBox2.Text & "'"

        cryRpt.Load("LAPORAN per kelas.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

 

4.13.2 Laporan Hasil Ujian Per Nim

Laporan hasil ujian per nim (siswa) dapat dilihat pada form di bawah ini.

Gambar 4.22  Laporan hasil ujian per nim

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

        CRV.ReportSource = Nothing

        CRV.SelectionFormula = "{tblmasterjawaban.nim}='" & ComboBox3.Text & "'"

        cryRpt.Load("LAPORAN per nim.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub