UUSRUSMAWAN.C
Ilustrasi cara membuat database dapat dilihat pada gambar-gambar di bawah ini dengan
mengikutipetunjuk kursor pada setiap gambar.
1
M
UUSRUSMAWAN.C
1. Tabel User
2. Tabel Siswa
3. Tabel Guru
4. Tabel WaliKelas
5. Tabel SPP
2
M
UUSRUSMAWAN.C
Bentuk relasi tabel dapat dilihat pada ilustrasi di bawah ini. Gambar ini diambil dari hasil relasi pada
crystal report.
3
M
UUSRUSMAWAN.C
5. Membuat laporan
4
M
UUSRUSMAWAN.C
Catatan : nama project ini akan secara otomatis membentuk nama folder yang sama dengan nama
project-nya jika opsi Create directory for solution di centang.
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.
Coding :
Imports System.Data.SqlClient
Module Module1
Public CONN As SqlConnection
Public DA As SqlDataAdapter
Public DS As New DataSet
Public CMD As SqlCommand
Public DR As SqlDataReader
5
M
UUSRUSMAWAN.C
End Sub
End Module
Catatan : dalam buku ini sql server yang digunakan tidak memakai user name dan password.
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
6. Jika data ditemukan, maka form login disembunyikan dan menu utama ditampilkan
7. Pada Menu utama panel1 tampilkan kode user, di panel2 tampilkan nama user, di panel3
tampilkan status user
8. jika panel3 di menu utama statusnya USER atau Operator, maka matikan menu user
Catatan :
sebelumnya menu utama harus dibuat terlebih dahulu dengan menambahkan MenuStrip dan
StatusStrip. Pembahasan tentang hal tersebut telah kami lakukan pada dua buku VB.NET
sebelumnya.
Coding
Imports System.Data.SqlClient
6
M
UUSRUSMAWAN.C
Call Koneksi()
CMD = New SqlCommand("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, Password Case Sensitive")
TextBox1.Clear()
TextBox2.Clear()
TextBox1.Focus()
Else
Me.Visible = False
MenuUtama.Show()
MenuUtama.Panel1.Text = DR.Item("kode_user")
MenuUtama.Panel2.Text = DR.Item("nama_user")
MenuUtama.Panel3.Text = DR.Item("statuS_user")
If MenuUtama.Panel3.Text = "USER" Or MenuUtama.Panel3.Text
= "OPERATOR" Then
MenuUtama.UserToolStripMenuItem.Enabled = False
Else
MenuUtama.UserToolStripMenuItem.Enabled = True
End If
End If
End Sub
7
M
UUSRUSMAWAN.C
Pada menu utama ini ditambahkan sebuah PictureBox yang akan digunakan untuk menampilkan
gambar background. Properti PicturBox pada opsi Doc=FILL.
1. Ketik kode user, maka program akan mencari kode tersebut ke tabel user
2. Jika kodenya ditemukan maka akan tampil nama, password dan status di masing-masing
textbox
3. Jika kode user tidak ada maka akan dianggap sebagai data baru
4. Pada saat button simpan di klik maka, program akan mencari kode tersebut ke dalam tabel
user
5. Jika kodenya tidak ada maka data tersebut akan disimpan sebagai data baru
8
M
UUSRUSMAWAN.C
Dalam pembuatan sebuah form, sebaiknya menggunakan GroupBox agar mengatur posisi objek-
objek di dalamnya lebih mudah.
Pada pembahasan selanjutnya, proses program dalam form-form master sama saja dan kode
program pada proses tersebut akan diberi tanda kotak agar tidak dijelaskan berulang-ulang.
1. NIS tampil secara otomatis dengan awalan angka 13 sebagai tahun masuk
2. Kelas muncul secara otomatis dengan asumsi 1 kelas kapasitas 5 orang siswa
3. Biaya untuk siswa pertama kali masuk dengan asumsi Rp. 150.000
4. Jatuh tempo pertama pembayaran adalah tanggal 10 bulan Juli tahun sistem komputer
9
M
UUSRUSMAWAN.C
Imports System.Data.SqlClient
Sub NISotomatis()
Call Koneksi()
CMD = New SqlCommand("select * from TBLsiswa where NIS
in(select max(NIS) from TBLsiswa)", CONN)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
TextBox1.Text = Format(Now, "yy") + "001" nim dengan pola
yy + 3 digit nomor urut = 13001
Else
If Microsoft.VisualBasic.Left(DR.Item("NIS"), 2) =
Format(Now, "yy") Then
TextBox1.Text = DR.Item("NIS") + 1 jika tahun masih
sama maka nomor urut + 1
Else
TextBox1.Text = Format(Now, "yy") + "001"
End If
End If
End Sub
Sub Kosongkan()
TextBox2.Clear()
TextBox5.Clear()
TextBox2.Focus()
10
M
UUSRUSMAWAN.C
End Sub
Sub DataBaru()
TextBox2.Clear()
TextBox5.Clear()
TextBox2.Focus()
End Sub
Sub Tampilgrid()
Call Koneksi()
DA = New SqlDataAdapter("select * from tblSiswa", CONN)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
DGV.ReadOnly = True
DGV.Columns(4).DefaultCellStyle.Format = "###,###,###"
DGV.Columns(4).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleRight
End Sub
Sub Setingkelas()
Call Koneksi()
CMD = New SqlCommand("select count(*) from tblsiswa", CONN)
mencari banyaknya siswa, kemudian pasang interval 5 orang per kelas
DR = CMD.ExecuteReader
DR.Read()
If DR.Item(0) <= 5 Then
TextBox3.Text = "1A"
ElseIf DR.Item(0) <= 10 Then
TextBox3.Text = "1B"
ElseIf DR.Item(0) <= 15 Then
TextBox3.Text = "1C"
ElseIf DR.Item(0) <= 20 Then
TextBox3.Text = "1D"
Else
TextBox3.Text = "1Z"
End If
End Sub
11
M
UUSRUSMAWAN.C
TextBox4.Text = FormatNumber(TextBox4.Text, 0)
End If
Call Setingkelas()
End Sub
Menyimpan ke tabel SPP secara berulang dari bulan juli tahun ini hingga bulan juni
tahun depan
For i As Integer = 1 To 12
Dim TempO As Date = DateAdd(DateInterval.Month, i
- 1, DateValue(Label7.Text))
Call Koneksi()
Dim hasil As String = TextBox1.Text
Dim simpandetail2 As String = "insert into TBLSPP
values ('" & TextBox1.Text & i & "',0,'" & Format(TempO, "MM/dd/yyyy")
& "','" & Format(TempO, "MMMM") + " " + Format(TempO, "yyyy") & "','"
& TextBox1.Text & "',0,'-','-')"
CMD = New SqlCommand(simpandetail2, CONN)
CMD.ExecuteNonQuery()
Next
12
M
UUSRUSMAWAN.C
Dim edit As String = "update tblSiswa set
nama_Siswa='" & TextBox2.Text & "',Kelas='" & TextBox3.Text &
"',Tahun_ajaran='" & Label8.Text & "',Biaya='" & TextBox4.Text & "'
where NIS='" & TextBox1.Text & "'"
CMD = New SqlCommand(edit, CONN)
CMD.ExecuteNonQuery()
End If
Call Kosongkan()
Call Tampilgrid()
Call NISotomatis()
Call Setingkelas()
End If
End Sub
13
M
UUSRUSMAWAN.C
Me.Close()
End Sub
14
M
UUSRUSMAWAN.C
15
M
UUSRUSMAWAN.C
Satu orang guru boleh menjadi wali kelas untuk dua kelas yang berbeda.
1. Nomor pembayaran tampil secara otomatis dengan pola yyMMdd + 0001 = 1310250001
2. Tanggal bayar bisa digunakan untuk simulasi pembayaran tunggakan, oleh karena itu
digunakan DatetimePicker
3. Jika NIS tidak ditemukan tersedia fasilitas daftar siswa yang akan muncul secara otomatis
dan tinggal dipilih kemudian menekan enter
4. Cara pembayaran dengan memilih record dalam grid, kemudian klik Button BAYAR
6. Record yang sudah dibayar dapat dicetak berdasarkan nomor pembayaran dan berdasarkan
tanggal cukup dengan memilih record yang akan dicetak dalm datagrid
16
M
UUSRUSMAWAN.C
9. Terlihat di bagian bawah akumulasi SPP yang sudah dibayar dan yang belum dibayar dalam
bentuk nominal dan jumlah bulan
10. Jika tanggal pembayaran melebihi tanggal jatuh tempo, maka keterangan =LUNASI
TUNGGAKAN
11. Jika tanggal pembayaran lebih kecil dari tanggal jatuh tempo maka keterangan = LUNAS
Coding :
Imports System.Data.SqlClient
Sub Bayarotomatis()
Call Koneksi()
CMD = New SqlCommand("select * from TBLSPP where No_bayar
in(select max(No_Bayar) from TBLSPP)", CONN)
DR = CMD.ExecuteReader
DR.Read()
If Not DR.HasRows Then
TextBox1.Text = Format(Now, "yyMMdd") + "0001" nomor
pembayaran dengan pola yyMMdd+0001 = 1310250001
Else
If Microsoft.VisualBasic.Left(DR.Item("no_Bayar"), 6) =
Format(Now, "yyMMdd") Then
TextBox1.Text = DR.Item("no_Bayar") + 1
Else
TextBox1.Text = Format(Now, "yyMMdd") + "0001"
End If
End If
End Sub
Sub KondisiAwal()
TextBox3.Clear()
Label2.Text = ""
Label6.Text = ""
Label7.Text = ""
Label8.Text = ""
Label9.Text = ""
Label13.Text = ""
Label15.Text = ""
Label17.Text = ""
Label18.Text = ""
Button1.Enabled = False
Button4.Enabled = False
Button5.Enabled = False
DGV.Columns.Clear()
TextBox3.Focus()
End Sub
17
M
UUSRUSMAWAN.C
Call Bayarotomatis()
Button1.Enabled = False
Button4.Enabled = False
Button5.Enabled = False
Me.Top = 100
End Sub
Call Koneksi()
CMD = New SqlCommand("select * from TBLSPP where NIS='" &
TextBox3.Text & "'", CONN)
DR = CMD.ExecuteReader
DR.Read()
If DR.HasRows Then
Call Koneksi()
DA = New SqlDataAdapter("select * from TBLSPP where NIS='"
& TextBox3.Text & "' ORDER BY 3", CONN)
DS = New DataSet
DA.Fill(DS)
DGV.DataSource = DS.Tables(0)
DGV.ReadOnly = True
DGV.Columns(5).DefaultCellStyle.Format = "###,###,###"
DGV.Columns(5).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleRight
DGV.Columns(4).Visible = False
DGV.Columns(7).Visible = False
DGV.Columns(6).Width = 190
Call TotalTelahDibayar()
Call TotalBelumDibayar()
End If
If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar =
vbBack) Then e.Handled = True
End Sub
18
M
UUSRUSMAWAN.C
Sub TotalTelahDibayar()
Sub TotalBelumDibayar()
Call Koneksi()
19
M
UUSRUSMAWAN.C
End Class
20
M
UUSRUSMAWAN.C
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 DSN dan dilanjutkan dengan pembuatan laporan dengan
Crystal report.
Jika tabel-tabel dalam database sudah terhubung dengan baik dan benar, maka pembuatan
laporan akan menjadi lebih mudah. Syarat utama relasi tabel yang baik antara lain :
21
M
UUSRUSMAWAN.C
Coding :
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button4.Click
CetakData.Show()
CetakData.CRV.ReportSource = Nothing
CetakData.CRV.RefreshReport()
Coding :
22
M
UUSRUSMAWAN.C
CetakData.CRV.SelectionFormula = "{TBLSPP.nis}='" &
TextBox3.Text & "' and totext({TBLSPP.tgl_bayar})='" &
DGV.Rows(DGV.CurrentCell.RowIndex).Cells(1).Value & "'"
CetakData.CRV.ReportSource = "master SPP.rpt"
End Sub
Coding :
'Cetak laporan yang nis-nya ada di textbox3 dan jumlahnya > 0 (sudah
dibayar)
23
M
UUSRUSMAWAN.C
Coding :
'Cetak laporan yang nis-nya ada di textbox3 dan jumlahnya > 0 (belum
dibayar)
24
M
UUSRUSMAWAN.C
Coding :
25
M
UUSRUSMAWAN.C
26
M
UUSRUSMAWAN.C
27
M
UUSRUSMAWAN.C
28
M
UUSRUSMAWAN.C
Coding :
29
M
UUSRUSMAWAN.C
Coding :
30
M
UUSRUSMAWAN.C
Coding :
31
M
UUSRUSMAWAN.C
Coding :
32
M
UUSRUSMAWAN.C
Coding :
33
M
UUSRUSMAWAN.C
Coding :
34
M
UUSRUSMAWAN.C
Coding :
35