Wednesday, January 24, 2018

APLIKASI UJIAN DIGITAL DENGAN VB NET

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. 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 ObjectByVal e AsSystem.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 ObjectByVal e AsSystem.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 AsSystem.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 AsSystem.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 dalamnyalebih 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 AsSystem.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 ObjectByVal e AsSystem.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, ByValAs 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 AndVal(TextBox5.Text) <= 6 Then
            TextBox1.Text = "AK" & Format(Today, "yy") & "B"
        ElseIf ComboBox1.Text = "AKUNTANSI" And Val(TextBox5.Text) > 6 AndVal(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 AndVal(TextBox5.Text) <= 6 Then
            TextBox1.Text = "SK" & Format(Today, "yy") & "B"
        ElseIf ComboBox1.Text = "SEKRETARI" And Val(TextBox5.Text) > 6 AndVal(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 AsSystem.EventArgs) Handles Button1.Click
        If ComboBox1.Text = "" Or TextBox1.Text = "" Or TextBox2.Text = "" OrTextBox3.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 AsSystem.EventArgs) Handles Button3.Click
        Call Kosongkan()
    End Sub

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

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e AsSystem.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 ObjectByVal e AsSystem.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 ObjectByVal e AsSystem.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 AsSystem.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 AsSystem.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, ByValAs 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, ByValAs 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 AsSystem.EventArgs) Handles Button2.Click
        ComboBox1.Text = ""
        ComboBox2.Text = ""
        DGV.Columns.Clear()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button3.Click
        Me.Close()
    End Sub
  
    Private Sub Label4_Click(ByVal sender As System.Object, ByVal e AsSystem.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 AsSystem.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 AsSystem.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 AsSystem.EventArgs) Handles Button4.Click
        Me.Close()
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByValAs 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 AsSystem.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 AsSystem.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, ByValAs 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, ByValAs 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 ObjectByVal e AsSystem.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" ElseLabel22.Text = "SALAH"
        End If
    End Sub

    Private Sub RadioButton2_Click(ByVal sender As ObjectByVal e AsSystem.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" ElseLabel22.Text = "SALAH"
        End If
    End Sub

    Private Sub RadioButton3_Click(ByVal sender As ObjectByVal e AsSystem.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" ElseLabel22.Text = "SALAH"
        End If
    End Sub

    Private Sub RadioButton4_Click(ByVal sender As ObjectByVal e AsSystem.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" ElseLabel22.Text = "SALAH"
        End If
    End Sub


    Private Sub BTNJawab_Click(ByVal sender As System.Object, ByVal e AsSystem.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 AndRadioButton3.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 AsSystem.EventArgs) Handles Timer1.Tick
        Label12.Text = TimeOfDay
        Timer1.Enabled = False
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e AsSystem.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 AsSystem.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 AsSystem.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 AsSystem.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 AsSystem.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 AsSystem.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 AsSystem.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, ByValAs 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 AsSystem.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, ByValAs 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 AsSystem.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, ByValAs 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.1Laporan 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 AsSystem.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 AsSystem.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 AsSystem.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
 referensi dari sinih

No comments:

Membuat Thumbnail Gambar

Tutorial Pentingnya Membuat Thumbnail Gambar Pada Website dengan PHP (Source Code)    Print this page Tutorial Membuat Thumbnail G...