Aplikasi pengolahan nilai

 

Aplikasi pengolahan nilai termasuk aplikasi yang banyak digunakan di berbagai sekolah atau kampus. Aplikasi pengolahan nilai yang dibuat dalam buku ini masih termasuk sedernaha, tetapi diharapkan dapat memberikan gambaran yang lebih nyata untuk dapat dikembangkan.

5.1 Membuat Project Baru

Tahapan pertama dalam pembuatan aplikasi pengolahan nilai ini adalah membuat project baru dengan langkah sebagai berikut:

1.         Buka visual studio 2008

2.         Klik create project

3.         Tulis nama project “Aplikasi Pengolahan nilai”

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.

5.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 “DBNilai.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 5.1 Tabel User

Dalam tabel user semua tipe data berupa text, karena tidak ada data yang akan perlakukan dalam perhitungan.

Gambar 5.2 Tabel mahasiswa

Hal yang sama berlaku pada tabel mahasiswa. Dalam tabel mahasiswa semua tipe data berupa text, karena tidak ada data yang akan perlakukan dalam perhitungan.

 

Gambar 5.3 Tabel mata kuliah

Dalam tabel mata kuliah hanya SKS yang dibuat dengan tipe data number, selain itu semua tipe data berupa text, karena tidak ada data yang akan perlakukan dalam perhitungan.

Gambar 5.4 Tabel dosen

Gambar 5.5 Tabel detail dosen

Dalam tabel dosen dan detail dosen semua tipe data berupa text, karena tidak ada data yang akan perlakukan dalam perhitungan.

Gambar 5.6 Tabel nilai

Pada dasarnya pemilihan tipe data dalam sebuah tabel ditentukan oleh fungsinya. Jika field akan digunakan dalam perhitungan maka gunakanlah tipe number.

5.3  Bentuk Relasi Tabel

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

Gambar 5.7 Relasi tabel

5.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 5.8  Membuat module

Coding :

 

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 SetingLaporan()

        With crConnectionInfo

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

            .DatabaseName = (Application.StartupPath.ToString & "\DBNilai.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()

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

        Conn.Open()

    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 5.9  Menambah reference

5.5  Form Login

Sebagaimana yang telah dijelaskan pada bab sebelumnya, bahwa tujuan dibuatnya form login ini adalah sebagai sarana keamanan data dalam aplikasi.

Gambar 5.10  Form login

Logika program dalam form login :

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 pwd_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.Show()

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

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

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

 

                If MenuUtama.Panel3.Text = "USER" And MenuUtama.Panel3.Text = "OPERATOR" Then

                    MenuUtama.Button1.Enabled = False

                End If

            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

        End

    End Sub

 

End Class

5.6  Form Menu Utama

Form menu utama digunakan untuk mengintegrasikan semua form yang ada dalam project yang bersangkutan.

Gambar 5.11  Form menu utama

5.7  Form User

Logika dan proses program dalam form User adalah sebagai berikut :

1.              Kode user dibuat secara otomatis dengan pola “USR01”

2.              Nama user dan password diketik secara manual

3.              Status user dipilih dalam combo

4.              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 5.12  Form user

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

Coding :

Imports System.Data.OleDb

 

Public Class User

 

    Sub KodeOtomatis()

        CMD = New OleDbCommand("select id_user from tbluser order by id_user desc", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            TextBox1.Text = "USR01"

        Else

            TextBox1.Text = "USR" + Format(Microsoft.VisualBasic.Right(DR.Item("id_user"), 2) + 1, "00")

        End If

    End Sub

 

    Sub Kosongkan()

        Call KodeOtomatis()

        TextBox1.Enabled = False

        TextBox2.Clear()

        TextBox3.Clear()

        TextBox4.Clear()

        ComboBox1.Text = ""

        TextBox2.Focus()

    End Sub

 

    Sub DataBaru()

        TextBox2.Clear()

        TextBox3.Clear()

        TextBox4.Clear()

        ComboBox1.Text = ""

        TextBox2.Focus()

    End Sub

 

    Sub Tampilgrid()

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

        ds = New DataSet

        da.Fill(ds)

        DGV.DataSource = ds.Tables(0)

        DGV.ReadOnly = True

    End Sub

 

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

        Call Koneksi()

        Call Tampilgrid()

        Call Kosongkan()

        Call KodeOtomatis()

    End Sub

 

    Sub CariKode()

        CMD = New OleDbCommand("select * from tbluser where ID_User='" & TextBox1.Text & "'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

    End Sub

 

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

        TextBox1.MaxLength = 5

        If e.KeyChar = Chr(13) Then

            Call CariKode()

            If DR.HasRows Then

                TextBox2.Text = DR.Item("nama_user")

                TextBox3.Text = DR.Item("pwd_user")

                ComboBox1.Text = DR.Item("Status")

                TextBox2.Focus()

            Else

                Call DataBaru()

            End If

        End If

    End Sub

 

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

        TextBox2.MaxLength = 30

        If e.KeyChar = Chr(13) Then

            TextBox3.Focus()

        End If

    End Sub

 

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

        TextBox3.MaxLength = 10

        If e.KeyChar = Chr(13) Then

            ComboBox1.Focus()

        End If

    End Sub

 

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

        ComboBox1.MaxLength = 15

        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

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

            MsgBox("data belum lengkap")

            Exit Sub

        Else

            Call CariKode()

            If Not DR.HasRows Then

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

                CMD = New OleDbCommand(simpan, Conn)

                CMD.ExecuteNonQuery()

            Else

                Dim edit As String = "update tbluser set nama_user='" & TextBox2.Text & "',pwd_user='" & TextBox3.Text & "',Status='" & UCase(ComboBox1.Text) & "' where ID_User='" & TextBox1.Text & "'"

                CMD = New OleDbCommand(edit, Conn)

                CMD.ExecuteNonQuery()

            End If

            Call Kosongkan()

            Call Tampilgrid()

            Call KodeOtomatis()

        End If

    End Sub

 

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

        If TextBox1.Text = "" Then

            MsgBox("kode user harus diisi dulu")

            TextBox1.Focus()

            Exit Sub

        End If

 

        Call CariKode()

        If Not DR.HasRows Then

            MsgBox("Kode user tidak terdaftar")

            Exit Sub

        End If

 

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

                Dim hapus As String = "delete from tbluser where ID_User='" & TextBox1.Text & "'"

                CMD = New OleDbCommand(hapus, Conn)

                CMD.ExecuteNonQuery()

                Call Kosongkan()

                Call Tampilgrid()

                Call KodeOtomatis()

            Else

                Call Kosongkan()

                Call KodeOtomatis()

            End If

 

    End Sub

 

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

        Call Kosongkan()

        Call KodeOtomatis()

    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 TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged 

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

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

    End Sub

 

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

        On Error Resume Next

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

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

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

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

    End Sub

End Class

5.8  Form Mahasiswa

Logika dan proses program dalam form siswa adalah sebagai berikut :

1.              ID mahasiswa dibuat secara otomatis dengan pola “00001”

2.              Nama diketik secara manual

3.              Kelas dipilih dalam combo

4.              Jurusan tampil secara otomatis berdasarkan kelas yang dipilih dalam combo

5.              Langkan selanjutnya menyimpan data baru tersebut

6.              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 5.13  Form siswa

5.9  Form Mata Kuliah

Proses program dalam pengolahan data mata kuliah hampir sama dengan data mahasiswa.

Gambar 5.14  Form mata kuliah

5.10  Form Dosen

Bentuk form dosen berbeda dengan form master lainnya karena satu orang dosen dapat mengajar beberapa mata kuliah.

Gambar 5.15  Form soal ujian model pertama

Coding :

Imports System.Data.OleDb

 

Public Class FrmDosen

 

    Sub Kosongkan()

        TextBox1.Clear()

        TextBox2.Clear()

        TextBox1.Focus()

    End Sub

 

    Sub DataBaru()

        TextBox2.Clear()

        TextBox2.Focus()

    End Sub

 

    Sub Tampilgrid()

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

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

        DGV.ReadOnly = True

    End Sub

 

    'nilai default pilihan = NO

    Sub BersihkanPilihan()

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

            DGV1.Rows(baris).Cells(4).Value = "NO"

        Next

    End Sub

 

    Sub TampilKuliah()

        On Error Resume Next

        DGV1.Columns.Clear()

        DA = New OleDbDataAdapter("select * from tblmtkuliah order by 1", Conn)

        DS = New DataSet

        DA.Fill(DS)

        DGV1.DataSource = DS.Tables(0)

        DGV1.Columns(0).ReadOnly = True

        DGV1.Columns(1).ReadOnly = True

        DGV1.Columns(2).ReadOnly = True

        DGV1.Columns(3).ReadOnly = True

        DGV1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

        DGV1.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

 

        'tambahkan sebuah kolom baru paling kanan berupa combobox

        Dim cbo As New DataGridViewComboBoxColumn

        DGV1.Columns.Add(cbo)

        cbo.HeaderText = "Pilih [Y/N]"

 

        'item dalam combobox adalah YES dan NO

        cbo.Items.Add("YES")

        cbo.Items.Add("NO")

        DGV1.Columns(4).Width = 75

        Call BersihkanPilihan()

    End Sub

 

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

        Call Koneksi()

        Call Tampilgrid()

        Call TampilKuliah()

    End Sub

 

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

        TextBox1.MaxLength = 3

        If e.KeyChar = Chr(13) Then

            CMD = New OleDbCommand("select * from TBLDosen where ID_Dosen='" & TextBox1.Text & "'", Conn)

            DR = CMD.ExecuteReader

            DR.Read()

            If DR.HasRows Then

                TextBox2.Text = DR.Item("Nama_Dosen")

                TextBox2.Focus()

            Else

                Call DataBaru()

            End If

        End If

    End Sub

 

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

        TextBox2.MaxLength = 30

        If e.KeyChar = Chr(13) Then

            Button1.Focus()

        End If

    End Sub

 

 

   

 

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

        If TextBox1.Text = "" Then

            MsgBox("kode user harus diisi dulu")

            TextBox1.Focus()

            Exit Sub

        Else

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

                Dim hapus As String = "delete * from TBLDosen where ID_Dosen='" & TextBox1.Text & "'"

                CMD = New OleDbCommand(hapus, Conn)

                CMD.ExecuteNonQuery()

 

                Dim hapusdetail As String = "delete * from TBLdetailDosen where ID_Dosen='" & TextBox1.Text & "'"

                CMD = New OleDbCommand(hapusdetail, Conn)

                CMD.ExecuteNonQuery()

                Call Kosongkan()

                Call Tampilgrid()

                Call BersihkanPilihan()

            Else

                Call Kosongkan()

                Call BersihkanPilihan()

            End If

        End If

    End Sub

 

 

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

        Call Kosongkan()

        Call BersihkanPilihan()

    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 TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged

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

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

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

            DS = New DataSet

            DA.Fill(DS)

            DGV.DataSource = DS.Tables(0)

        Else

            MsgBox("Nama Dosen tidak ditemukan")

        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

        Call BersihkanPilihan()

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

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

 

        For baris As Integer = 0 To DGV1.Rows.Count - 2

            CMD = New OleDbCommand("select * from tbldetaildosen where id_dosen='" & TextBox1.Text & "' and id_mtkuliah='" & DGV1.Rows(baris).Cells(0).Value & "'", Conn)

            DR = CMD.ExecuteReader

            DR.Read()

            If DR.HasRows Then

                DGV1.Rows(baris).Cells(4).Value = "YES"

            End If

        Next

    End Sub

 

    Private Sub DGV1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV1.CellEndEdit

        'jika pilihan diubahmenjadi NO, maka hapus data tersebut di tabel detaildosen

        If DGV1.Rows(e.RowIndex).Cells(4).Value = "NO" Then

            Dim hapusdetail As String = "delete * from tbldetaildosen where id_dosen='" & TextBox1.Text & "' and id_mtkuliah='" & DGV1.Rows(e.RowIndex).Cells(0).Value & "'"

            CMD = New OleDbCommand(hapusdetail, Conn)

            CMD.ExecuteNonQuery()

        End If

    End Sub  

End Class

5.11 Form Pengolahan nilai

Logika dan proses program dalam pengolahan nilai adalah sebagai berikut :

1.              Langkah pertama pilih kelas

2.              Langkah kedua pilih mata kuliah

3.              Langkah ketiga pilih dosen

4.              Setelah itu isilah nilai dalam grid

5.              Kolom nilai, mutu dan keterangan secara otomatis dihasilkan dari entri data di kolom sebelumnya

6.              Pada saat disimpan sistem akan membaca apakah data tersebut sudah atau atau belum, jika data belum ada maka akan dilakukan insert, jika data sudah ada maka akan dilakukan update.

Gambar 5.16  Form transaksi pengolahan nilai

Coding :

 

Imports System.Data.OleDb

 

Public Class Nilai

 

    Sub TampilKelas()

        CMD = New OleDbCommand("select distinct kelas from tblmahasiswa order by 1", Conn)

        DR = CMD.ExecuteReader

        ListBox1.Items.Clear()

        Do While DR.Read

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

        Loop

    End Sub

 

    Sub TampilsemuaMTKuliah()

        CMD = New OleDbCommand("select * from TBLMTKuliah", Conn)

        DR = CMD.ExecuteReader

        ListBox2.Items.Clear()

        Do While DR.Read

            ListBox2.Items.Add(DR.Item("ID_MTKuliah") & Space(2) & DR.Item("MataKuliah"))

        Loop

    End Sub

 

    Sub DataBaru()

        'seting awal kondisi grid

        DGV.Columns.Add("Absen", "Absen (15%)")

        DGV.Columns.Add("Tugas", "Tugas (15%)")

        DGV.Columns.Add("UTS", "UTS (30%)")

        DGV.Columns.Add("UAS", "UAS (40%)")

 

        DGV.Columns(2).Width = 50

        DGV.Columns(3).Width = 50

        DGV.Columns(4).Width = 50

        DGV.Columns(5).Width = 50

 

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

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

        DGV.Columns.Add("Ket", "Keterangan")

 

        DGV.Columns(0).Width = 100 : DGV.Columns(0).ReadOnly = True

        DGV.Columns(1).Width = 150 : DGV.Columns(1).ReadOnly = True

        DGV.Columns(6).Width = 50 : DGV.Columns(6).ReadOnly = True

        DGV.Columns(7).Width = 50 : DGV.Columns(7).ReadOnly = True

        DGV.Columns(8).Width = 150 : DGV.Columns(8).ReadOnly = True

 

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

            DGV.Rows(baris).Cells(2).Value = 0

            DGV.Rows(baris).Cells(3).Value = 0

            DGV.Rows(baris).Cells(4).Value = 0

            DGV.Rows(baris).Cells(5).Value = 0

            DGV.Rows(baris).Cells(6).Value = 0

        Next

    End Sub

 

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

        Call Koneksi()

        Call TampilKelas()

    End Sub

 

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

        CMD = New OleDbCommand("select * from TBLMTKuliah where left(id_mtkuliah,2)='" & Microsoft.VisualBasic.Left(ListBox1.Text, 2) & "' order by 1", Conn)

        DR = CMD.ExecuteReader

        ListBox2.Items.Clear()

        Do While DR.Read

            ListBox2.Items.Add(DR.Item("ID_MTKuliah") & Space(2) & DR.Item("MataKuliah"))

        Loop

        ListBox3.Items.Clear()

        DGV.Columns.Clear()

    End Sub

 

    Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged

        CMD = New OleDbCommand("select distinct tbldosen.id_dosen,nama_dosen from tbldosen,tbldetaildosen where tbldosen.id_dosen=tbldetaildosen.id_dosen and tbldetaildosen.id_mtkuliah='" & Microsoft.VisualBasic.Left(ListBox2.Text, 4) & "'order by 1", Conn)

        DR = CMD.ExecuteReader

        ListBox3.Items.Clear()

        Do While DR.Read

            ListBox3.Items.Add(DR.Item("Id_Dosen") & Space(2) & DR.Item("nama_Dosen"))

        Loop

        DGV.Columns.Clear()

    End Sub

 

    Private Sub ListBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox3.SelectedIndexChanged

        DGV.Columns.Clear()

        'cari data nilai

        CMD = New OleDbCommand("select tblmahasiswa.ID_Mahasiswa,Nama_Mahasiswa,tblnilai.Absen,Tugas,UTS,UAS,Nilai,Mutu,Keterangan from TBLMahasiswa,tblnilai where tblmahasiswa.id_mahasiswa=tblnilai.id_mahasiswa and tblmahasiswa.kelas='" & ListBox1.Text & "' and tblnilai.id_mtkuliah='" & Microsoft.VisualBasic.Left(ListBox2.Text, 4) & "' and tblnilai.id_dosen='" & Microsoft.VisualBasic.Left(ListBox3.Text, 3) & "'", Conn)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            'jika tidak ada maka tampilkan data 'mentahan'

            DA = New OleDbDataAdapter("select ID_Mahasiswa,Nama_Mahasiswa from TBLMahasiswa where kelas='" & ListBox1.Text & "'", Conn)

            DS = New DataSet

            DA.Fill(DS)

            DGV.DataSource = DS.Tables(0)

            Call DataBaru()

 

        Else

            'jika data ditemukan maka tampilkan data nilai yang dicari

            DA = New OleDbDataAdapter("select tblmahasiswa.ID_Mahasiswa,Nama_Mahasiswa,tblnilai.Absen,Tugas,UTS,UAS,Nilai,Mutu,Keterangan from TBLMahasiswa,tblnilai where tblmahasiswa.id_mahasiswa=tblnilai.id_mahasiswa and tblmahasiswa.kelas='" & ListBox1.Text & "' and tblnilai.id_mtkuliah='" & Microsoft.VisualBasic.Left(ListBox2.Text, 4) & "' and tblnilai.id_dosen='" & Microsoft.VisualBasic.Left(ListBox3.Text, 3) & "'", Conn)

            DS = New DataSet

            DA.Fill(DS)

            DGV.DataSource = DS.Tables(0)

 

            DGV.Columns(2).Width = 50

            DGV.Columns(3).Width = 50

            DGV.Columns(4).Width = 50

            DGV.Columns(5).Width = 50

 

            DGV.Columns(0).Width = 100 : DGV.Columns(0).ReadOnly = True

            DGV.Columns(1).Width = 150 : DGV.Columns(1).ReadOnly = True

            DGV.Columns(6).Width = 50 : DGV.Columns(6).ReadOnly = True

            DGV.Columns(7).Width = 50 : DGV.Columns(7).ReadOnly = True

            DGV.Columns(8).Width = 150 : DGV.Columns(8).ReadOnly = True

        End If

    End Sub

 

    Private Sub DGV_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellEndEdit

        Try

            'komposisi nilai sesuai prosedur tertentu

            If e.ColumnIndex = 2 Then

                DGV.Rows(e.RowIndex).Cells(6).Value = Val(((DGV.Rows(e.RowIndex).Cells(2).Value) * 15) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(3).Value) * 15) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(4).Value) * 30) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(5).Value) * 40) / 100)

            End If

 

            If e.ColumnIndex = 3 Then

                DGV.Rows(e.RowIndex).Cells(6).Value = Val(((DGV.Rows(e.RowIndex).Cells(2).Value) * 15) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(3).Value) * 15) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(4).Value) * 30) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(5).Value) * 40) / 100)

            End If

 

            If e.ColumnIndex = 4 Then

                DGV.Rows(e.RowIndex).Cells(6).Value = Val(((DGV.Rows(e.RowIndex).Cells(2).Value) * 15) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(3).Value) * 15) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(4).Value) * 30) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(5).Value) * 40) / 100)

            End If

 

            If e.ColumnIndex = 5 Then

                DGV.Rows(e.RowIndex).Cells(6).Value = Val(((DGV.Rows(e.RowIndex).Cells(2).Value) * 15) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(3).Value) * 15) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(4).Value) * 30) / 100) + Val(((DGV.Rows(e.RowIndex).Cells(5).Value) * 40) / 100)

            End If

 

            'mencari nilai A,B,C,D ATAU E

            If Val(DGV.Rows(e.RowIndex).Cells(6).Value) < 40 Then

                DGV.Rows(e.RowIndex).Cells(7).Value = "E"

            ElseIf Val(DGV.Rows(e.RowIndex).Cells(6).Value) < 60 Then

                DGV.Rows(e.RowIndex).Cells(7).Value = "D"

            ElseIf Val(DGV.Rows(e.RowIndex).Cells(6).Value) < 80 Then

                DGV.Rows(e.RowIndex).Cells(7).Value = "C"

            ElseIf Val(DGV.Rows(e.RowIndex).Cells(6).Value) < 90 Then

                DGV.Rows(e.RowIndex).Cells(7).Value = "B"

            ElseIf Val(DGV.Rows(e.RowIndex).Cells(6).Value) >= 90 Then

                DGV.Rows(e.RowIndex).Cells(7).Value = "A"

            End If

 

            'mencari nilai LULUS, GAGAL ATAU REMEDIAL

            If DGV.Rows(e.RowIndex).Cells(7).Value = "E" Then

                DGV.Rows(e.RowIndex).Cells(8).Value = "GAGAL"

            ElseIf DGV.Rows(e.RowIndex).Cells(7).Value = "D" Then

                DGV.Rows(e.RowIndex).Cells(8).Value = "MEREDIAL"

            ElseIf DGV.Rows(e.RowIndex).Cells(7).Value = "C" Or DGV.Rows(e.RowIndex).Cells(7).Value = "B" Or DGV.Rows(e.RowIndex).Cells(7).Value = "A" Then

                DGV.Rows(e.RowIndex).Cells(8).Value = "LULUS"

            End If

 

        Catch ex As Exception

            MsgBox("Harus angka")

            MsgBox(ex.Message)

        End Try

    End Sub

 

    Sub Bersihkan()

        ListBox2.Items.Clear()

        ListBox3.Items.Clear()

        DGV.Columns.Clear()

    End Sub

 

   

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

        Call Bersihkan()

    End Sub

 

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

        Me.Close()

    End Sub

End Class

5.12            Laporan Master

5.12.1 Laporan Data Mata Kuliah

Tahapan pembuatan laporan telah dibahas pada bab sebelumnya, untuk itu silakan dipelajari kembali dan silakan lihat dalam video tutorial pada CD di buku ini.

Gambar 5.17  Laporan data siswa

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

        CRV.ReportSource = Nothing

        cryRpt.Load("laporan matakuliah.rpt")

        Call SetingLaporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

5.12.2 Laporan Data Mahasiswa

Tahapan pembuatan laporan master dapat anda lihat dalam video tutorial pada CD di buku ini.

Gambar 5.18  Laporan data mata kuliah

Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click

        CRV.ReportSource = Nothing

        cryRpt.Load("laporan mahasiswa.rpt")

        Call SetingLaporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

5.12.3 Laporan Data Dosen

Tahapan pembuatan laporan master dapat anda lihat dalam video tutorial pada CD di buku ini.

Gambar 5.19  Laporan data soal ujian

Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click

        CRV.ReportSource = Nothing

        cryRpt.Load("laporan dosen.rpt")

        Call SetingLaporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

5.13            Laporan Data Pengolahan nilai

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. Untuk memulai pembuatan laporan nilai buatlah form seperti gambar di bawah ini.

 

Gambar 5.20  Laporan ujian per kelas dan mata kuliah

Imports System.Data.OleDb

 

Public Class LaporanNilai

 

    Sub TampilKelas()

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

        DR = CMD.ExecuteReader

        ComboBox1.Items.Clear()

        Do While DR.Read

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

        Loop

    End Sub

 

    Sub TampilKuliah()

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

        DR = CMD.ExecuteReader

        ComboBox2.Items.Clear()

        ComboBox4.Items.Clear()

        Do While DR.Read

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

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

        Loop

    End Sub

 

    Sub TampilMahasiswa()

        CMD = New OleDbCommand("select * from tblmahasiswa", Conn)

        DR = CMD.ExecuteReader

        ComboBox3.Items.Clear()

        Do While DR.Read

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

        Loop

    End Sub

 

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

        Call TampilKelas()

        Call TampilMahasiswa()

    End Sub

 

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

        CMD = New OleDbCommand("select * from TBLMTKuliah where left(id_mtkuliah,2)='" & Microsoft.VisualBasic.Left(ComboBox1.Text, 2) & "' order by 1", Conn)

        DR = CMD.ExecuteReader

        ComboBox2.Items.Clear()

        Do While DR.Read

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

        Loop

    End Sub

 

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

        CRV.SelectionFormula = "({TBLMAHASISWA.KELAS})='" & ComboBox1.Text & "' AND ({TBLMTKULIAH.MATAKULIAH})='" & ComboBox2.Text & "'"

        cryRpt.Load("NILAI PER KELAS.rpt")

        Call SetingLaporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

 

Gambar 5.27  Laporan hasil ujian per nim

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

        CRV.SelectionFormula = "({TBLMAHASISWA.ID_MAHASISWA})='" & ComboBox3.Text & "'"

        cryRpt.Load("NILAI PER SISWA.rpt")

        Call SetingLaporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub