Aplikasi ini membahas cara membuat sistem informasi geografis sederhana menggunakan Visual Studio. Dokumen ini menjelaskan tahapan pengembangan aplikasi mulai dari persiapan database, penambahan toolbox peta, desain antarmuka pengguna, hingga pengkodean fitur-fitur utama aplikasi seperti tampilan peta dan atribut data.
Membuat aplikasi sistem informasi geografis dengan visual basic & MySQL
1. 1
MEMBUAT SISTEM INFORMASI GEOGRAFIS
SEDERHANA DENGAN VISUAL STUDIO
Studi Kasus : Sistem Informasi Geografis Penjualan Rumah
Oleh : Rahmat Taufiq Sigit
https://blog.ngupy.com
Kali ini kita akan belajar bagaimana membuat aplikasi Sistem Informasi Geografis sederhana dengan
menggunakan bahasa pemrograman visual basic. Aplikasi ini adalah aplikasi untuk mengolah hasil
pemetaan, dan memetakan kondisi terbaru dari sebuah kegiatan.
Sebagai studi kasus kita anak membuat aplikasi untuk developer perumahan. Dimana dari aplikasi
tersebut pengguna dapat mengetahui rumah stok dan terjual.
A. Konsep Sistem Informasi Geografis Sederhana
Berikut ini adalah gambar dari Sistem Informasi Geografis:
Gambar 01. Proses Akses Database dan Siteplan
A0 : User mengakses peta sengan extension .SHP, .DBF yang telah digambar dan disertakan
sebelumnya melalui aplikasi SIG.
A1 : Berdasarkan pada primary key dari file .DBF pada peta, sistem kemudian mengakses database
mysql dan menampilkan informasi dari tabel database kedalam peta.
B0 : User mengakses informasi yang ada dalam database mysql melalui aplikasi.
B1 : Permitaan informasi yang dilakukan pada B0 kemudian diakses pada database dan kembali
ditampilkan pada aplikasi SIG.
B. Ruang Lingkup Aplikasi
1. Aplikasi mengelola beberapa lokasi pembangunan
2. 2
2. Peta yang digunakan adalah peta dengan ekstensi .SHP yang telah dibuat sebelumnya dengan
menggunakan aplikasi pemetaan ArcGIS atau QGIS.
3. Aplikasi ini berfungsi untuk menampilkan informasi status penjualan dari rumah dan stok rumah
yang ada melalui peta dalam bentuk warna
4. Aplikasi ini berfungsi untuk menampilkan informasi status progres pambangunan dari rumah dan
stok rumah yang ada melalui peta dalam bentuk tulisan
5. Aplikasi menggunakan database MySQL
C. Struktur Database pada Peta dan MySQL
Keterangan :
Tabel Pada File DBF Peta adalah tabel yang dibuat pada saat menggambar siteplan dengan
aplikasi ArcGIS atau QGIS
Tabel Unit, Tabel Status Pemasaran, Tabel Status Pembangunan dan Tabel Status Sertifikat
adalah table yang dibuat pada database MySQL
Pada Tabel Unit terdapat Kolom KD_LOKASI dan NOMOR_RUMAH dimana isi dari kolom tersebut
berdasarkan pada isi dari tabel pada file peta sehingga kedua tabel tersebut dapat terhubung
Kolomg R, G, dan B pada tabel status pemasaran, pembangunan dan sertifikat berisi nilai
kombinasi warna Red, Green, dan Blue yang menjadi warna status. Warna tersebut memberikan
informasi pada peta kavling rumah.
D. Instalasi Database MySQL
1. Download aplikasi XAMPP terbaru
2. Dobel klik file XAMPP yang baru saja Anda download
3. Untuk langkah instalasi dapat mengikuti link tersebut : https://webhostmu.com/cara-
install-xampp/
3. 3
E. Setting Visual Studio
Mempersiapkan Library MySQL pada Visual Studio
1. Download MySQL Connector https://dev.mysql.com/downloads/windows/visualstudio/
2. Install file MSI Langkah install yang di inginkan (Standar)
3. Perhatikan letak file instalasi dari MySQL Connector
4. Buka Aplikasi Visual Studio dan Buat project baru dengan nama “sig_sederhana” dengan cara
klik “File ->New->Project”
5. Pada Window New Project, Template->Visual Basic->Windows” Pilih Window Form
Application”
6. Masukkan nama project “sig_sederhana” Klik Ok
7. Pada solution explorer klik kanan nama proyek dan pilih properties
8. Pada tab “Preference” Klik Add
9. Klik “Browse”.
4. 4
10. Cari letak file MySQL.Data.dll yang terletak pada file instalasi MySQL Connector.
11. Klik Add dan Kemudian Klik Ok
Anda telah berhasil menginclude library mysql kedalam project anda.
F. Mempersiapkan Toolbox Map Pada Visual Studio
Mempersiapkan Toolbox Map pada Visual Studio
1. Download Library DotSpatial pada link berikut : https://www.nuget.org/profiles/dotspatial
2. File yang dibutuhkan adalah File berikut :
5. 5
3. Pada solution explorer klik kanan nama proyek dan pilih properties (Seperti pada langkah
include library MySql.Data)
4. Pada tab “Preference” Klik Add
5. Klik “Browse”
6. Cari letak file dotspatial yang sudah anda download
7. Checklist file tersebut dan klik OK
8. Pada bagian toolbox, Klik Kanan dan Add Item
9. Ketikkan nama Tab “DotSpatial”
10. Pada tab “Dotspatial” Klik Kanan Pilih Choose Item
11. Akan tampil Choose Item Toolbox
12. Klik Tab .Net Component Klik Browse
13. Plih File DotSpatial.Controls.dll yang telah anda download sebelumnya dan Klik OK
14. Anda akan meperoleh tambahan toolbox baru untuk pemetaan, seperti pada gmbar dibawah
ini.
6. 6
G. Mendesain Tampilan Halaman Siteplan (frmSiteplan)
1. Buatlah form window yang baru dengan nama frmSiteplan, dengan componen toolbox seperti
pada gambar dibawa ini.
2. Tambahkan Tool “ColorDialog1” sesuai pada gambar diatas
3. Tambahkan Toolbox “Split Container” untuk membagi 2 bagian tengah dari frmSiteplan
4. Pada Panel1 Tambahkan Tool “Legend” sesuai pada gambar diatas
ToolStrip1
SpatialStatusStrip
ColorDialog
Split Conainer
Map
Legend
7. 7
5. Pada properties dari legend ubah name : legenda dan Doc : Fill
6. Pada Panel2 Tambahkan Tool “Map” sesuai pada gambar diatas
7. Pada properties dari map ubah name : petaUtama dan Doc : Fill
H. Mempersiapkan Resources Aplikasi
Langkah ini dilakukan untuk menampung seluruh file penyarta dari aplikasi yang akan dibuat, seperti
gambar icon dari tombol yang dibuak. Hal ini dikalukan untuk memberikan kemudahan dalam
mengakses gambar tersebut.
Sebelumnya lakukan pancaharian file image ataupun icon untuk digunakan dalam aplikasi
yang akan dibuat
Pada Solution Explorer, klik kanan nama proyek kemudian pilih add, dan New Folder
I. Menambahkan Tombol Pada ToolStrip
Tambahkan tombol bari dengan cara seperti pada gambar dibawah ini :
8. 8
Lakukan penambahan untuk tombol dibawah ini :
Tombol Tambah Peta (tsBtnTambahPeta)
1. Pada Properties Ubah Name : tsBtnTambahPeta, Text : Tambah Layer dan Klik tombol (...)
pada Image.
2. Pilih Project Resources File, Klik Tombol Import
3. Cari dan pilih File ico atau image di folder yang sudah anda download sebelumnya, Lalu
klik Ok.
4. File yang pilih akan masuk kedalam folder Resources pada proyek.
5. Langkah yang sama dilakukan untuk tombol selanjutnya dan pilih gambar yang sesuai
Tombol Hapus Peta (Name : tsBtnHapusPeta, Text : Hapus Layer)
Tombol Default Size Peta (Name : tsBtnDefault, Text : Ukuran Awal)
Tombol Pan (Name : tsBtnPan, , Text : Pan)
Tombol Pilih (Name : tsBtnPilih, , Text : Pilihl)
Tombol Zoom In (Name : tsBtnZoomIn, Text : Perbesar)
Tombol Zoom Out (Name : tsBtnZoomOut, Text : Perkecil)
Tombol Info (Name : tsBtnInfo, Text : Info)
Tombol Tampilan Label (Name : tsBtnLabel, Text : Nomor Rumah)
Tombol Hapus Label (Name : tsBtnHapusLabel, Text : Tutup Nomor Rumah)
Textbox Cari (Name : tsCari)
Tombol Cari (Name : tsBtnCari, Text : Cari)
Tombol Ukur (Name : tsBtnUkur, Text : Ukur)
Tombol Tebel Attribut (Name : tsBtnTableAttribut, Text : Tabel Attribut)
Tombol Jenis Unit (Name : tsBtnJenisUnit, Text : Jenis Unit)
Tombol Status Pemasaran (Name : tsBtnStatusPemasran, Text : Status Pemasaran)
Tombol Status Pembangunan (Name : tsBtnStatusPembangunan, Text : Status Pembangunan)
Tombol Status Sertifikat (Name : tsBtnStatusSertifikat, Text : Status Sertifikat)
Tombol Point (Name : tsBtnPoint, Text : Titik)
Tombol Line (Name : tsBtnLine, Text : Garis)
Tombol Polygon (Name : tsBtnPoly, Text : Polygon)
9. 9
Tombol Hapus Peta (Name : tsBtnBersihkanPeta, Text : Bersihkan Peta)
J. Menambahkan Label pada Spatial Status Strip (SpatialStatusStrip1)
Membuat fasilitas status peta dengan menggunakan SpatialStatusStrip. Bagian ini berfungsi untuk
memberikan informasi proses yang terjadi pada peta dan legenda serta memberikan informasi
posisi X dan Y dari pointer pada peta.
1.Tambahkan Status Label (Text : Ready)
2.Tambahkan ProgressBar
3.Tambahkan Status Label (Text : Lokasi)
4.Tambahkan Status Label (Text : :- , Name : tsStatusLokasi)
5.Tambahkan Status Label (Text : ID)
6.Tambahkan Status Label (Text : :- , Name : tsStatusId)
7.Tambahkan Status Label (Text : X/Y)
8.Tambahkan Status Label (Text : :- , Name : tsStatusXy)
K. Setting Legend pada Form frmSiteplan
Pada bagian ini akan dilakukan settingan pada SpatialStatusStrip yang telah dibuat agar tefhubung
dengan legenda dan petaUtama yang telah dibuat sebelumnya.
1. Pilih legend area pada form frmSiteplan
2. Ubah Progress Handler : SpatialStatusStrip1
10. 10
L. Setting Map pada Form Siteplan (frmSiteplan)
1. Pilih Map pada Form frmSiteplan
2. Ubah Legeng : legenda dan Progress Handler : SpatialStatusStrip1
M. Membuat Desain Form Datail Unit (frmDetailRumah)
12. 12
O. Membuat Form Status (frmStatus)
P. Membuat Form Attribut Peta (frmAttributePeta)
13. 13
Q. Membuat Form Ubah Nama Kolom Peta (frmUbahKolomSiteplan)
R. Membuat Form Hapus Kolom Siteplan (frmHapusKolomSiteplan)
14. 14
It’s Code Time
A. Membuat Modus Koneksi Database
1. Klik kanan proyek sig_sederhana, Klik Add, Pilih Module
2. Ketikkan nama file “modKoneksi.vb”
3. Ketikkan Script dibawah ini :
Imports MySql.Data.MySqlClient
Module modKoneksi
Public koneksi As MySql.Data.MySqlClient.MySqlConnection = Nothing
Public sql As New MySql.Data.MySqlClient.MySqlCommand
Public dataadapter As New MySql.Data.MySqlClient.MySqlDataAdapter
Public datareader As MySql.Data.MySqlClient.MySqlDataReader
Public dataset As New DataSet
'untuk koneksi ke DB
Public server As String = "localhost"
Public username As String = "root" //(Nama username database MySQL)
Public password As String = "admin123" //(Password database MySQL)
Public nama_db As String = "sig_sederhana" //(Nama database MySQL)
'sqlTransaction
Public sqlTransaction As MySqlTransaction
Public Sub koneksiDB()
Try
Dim settingServer As String = "server=" & server & ";port=3306;user id=" &
username & "; password=" & password & "; Database=" & nama_db & ";Connect Timeout=30;"
koneksi = New MySqlConnection(settingServer)
If koneksi.State = ConnectionState.Closed Then
koneksi.Open()
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Module
B. Coding Pada Form Siteplan (frmSiteplan)
Imports DotSpatial.Symbology
Imports DotSpatial.Controls
Imports DotSpatial.Data
Imports DotSpatial.Plugins.Measure
Imports DotSpatial.Topology
Imports DotSpatial.Symbology.FeatureLayer
15. 15
Public Class frmSiteplan
Public layerPoint As MapPointLayer
Public layerLine As MapLineLayer
Public layerPoly As MapPolygonLayer
Public mapFitureLayer As String
Dim shapeType As String
Dim pointF As New FeatureSet(FeatureType.Point)
Dim pointID As Integer = 0
Dim pointmouseClick As Boolean = False
Dim lineLayer As MapLineLayer
Dim lineF As New FeatureSet(FeatureType.Line)
Dim lineID As Integer = 0
Dim firstClick As Boolean = False
Dim linemouseClick As Boolean = False
Dim polygonF As New FeatureSet(FeatureType.Polygon)
Dim polygonID As Integer = 0
Dim polygonmouseClick As Boolean = False
Private WithEvents mapFunction As MapFunctionMeasure
Private Sub tampilkanLabelPeta()
Dim fname As String = "Tahoma"
Dim fsize As Double = 8.0
Dim fcolor As Color = Color.Black
Dim fLayer As FeatureLayer = petaUtama.Layers.SelectedLayer
If (petaUtama.Layers.Count > 0) Then
Try
fLayer.AddLabels("[NOMOR_RUMAH]", New Font("" + fname + "", fsize), fcolor)
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
End If
End Sub
Private Sub hapusLabel()
Dim fLayer As FeatureLayer = petaUtama.Layers.SelectedLayer
If petaUtama.Layers.Count > 0 Then
Try
fLayer.ShowLabels = False
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
End If
End Sub
Private Sub cariData(ByVal cari As String)
Dim petaLayer As MapPolygonLayer
Dim fLayer As FeatureLayer = petaUtama.Layers.SelectedLayer
If cari.Length > 0 Then
If petaUtama.Layers.Count > 0 Then
petaLayer = CType(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
If Not petaLayer Is Nothing Then
Try
fLayer.DataSet.FillAttributes()
Dim Scheme As PolygonScheme = New PolygonScheme()
Dim filter As String = "[NOMOR_RUMAH] LIKE '%" & cari & "%'"
Dim Category As PolygonCategory = New PolygonCategory(Color.Yellow,
Color.Red, 1)
Category.FilterExpression = filter
Scheme.AddCategory(Category)
Category.LegendText = "ID PRODUK = " + tsCari.Text
fLayer.Symbology = Scheme
tsCari.Text = ""
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
16. 16
End Try
' End If
Else
MessageBox.Show("Pilihan Layer Harus Polygon", "Informasi",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End If
End Sub
Function gabungArray(ByVal ar As Array)
Dim result As String = ""
Dim b As Integer = 0
For j As Integer = 0 To ar.Length - 1 Step 1
If Not ar(j) = "" And result = "" Then
result = ar(j)
b = 1
ElseIf Not ar(j) = "" And Not result = "" Then
result = ar(j) & "','" & result
End If
Next
Return result
End Function
Private Sub jenisUnit()
Dim petaLayer As MapPolygonLayer = Nothing
If (petaUtama.Layers.Count > 0) Then
petaLayer = CType(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
If Not petaLayer Is Nothing Then
petaLayer = TryCast(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
petaLayer.DataSet.FillAttributes()
Dim jumlah As Integer = 0
Dim category() As PolygonCategory = Nothing
Dim filter() As String = Nothing
Dim kd_status() As String = Nothing
Dim scheme As New PolygonScheme
petaLayer.Symbology.ClearCategories()
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
Dim query As String
query = "select kd_jenis_unit,nama_jenis_unit,r,g,b from tbl_jenis_unit
where 1=1 ORDER BY kd_jenis_unit asc"
sql.CommandText = query
dataadapter = New MySql.Data.MySqlClient.MySqlDataAdapter(sql.CommandText,
koneksi)
dataadapter.Fill(dataset, "data_warna_jenis_unit")
Dim i As Integer = 0
For i = 0 To dataset.Tables("data_warna_jenis_unit").Rows.Count - 1
Dim query_jenis_unit As String = "select nomor_rumah from tbl_unit
where kd_lokasi='" & tsStatusLokasi.Text & "' and kd_jenis_unit='" &
dataset.Tables("data_warna_jenis_unit").Rows(i)(0).ToString & "'"
sql.CommandText = query_jenis_unit
dataadapter = New
MySql.Data.MySqlClient.MySqlDataAdapter(sql.CommandText, koneksi)
dataadapter.Fill(dataset, "data_jenis_unit")
ReDim kd_status(dataset.Tables("data_jenis_unit").Rows.Count - 1)
For j As Integer = 0 To dataset.Tables("data_jenis_unit").Rows.Count -
1
kd_status(j) = dataset.Tables("data_jenis_unit").Rows(j)(0)
Next
Dim daftar_kd_unit As String = gabungArray(kd_status)
If Not daftar_kd_unit = "" Then
ReDim Preserve category(i)
category(i) = New
PolygonCategory(Color.FromArgb(dataset.Tables("data_warna_jenis_unit").Rows(i)(2),
17. 17
dataset.Tables("data_warna_jenis_unit").Rows(i)(3),
dataset.Tables("data_warna_jenis_unit").Rows(i)(4)), Color.Red, 1)
ReDim Preserve filter(i)
filter(i) = "[NOMOR_RUMAH] IN ('" & daftar_kd_unit & "')"
category(i).FilterExpression = filter(i)
category(i).LegendText =
dataset.Tables("data_warna_jenis_unit").Rows(i)(1).ToString & " [" &
dataset.Tables("data_jenis_unit").Rows.Count & "]"
scheme.AddCategory(category(i))
End If
dataset.Tables("data_jenis_unit").Clear()
Next
dataset.Tables("data_warna_jenis_unit").Clear()
koneksi.Close()
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
If scheme.Categories.Count >= 0 Then
petaLayer.Symbology = scheme
Else
MessageBox.Show("Tidak ada kecocokan peta dengan database", "Informasi",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
MessageBox.Show("Layer Terpilih Bukan Polygon", "Informasi",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
Private Sub statusPemasaran()
Dim petaLayer As MapPolygonLayer = Nothing
If (petaUtama.Layers.Count > 0) Then
petaLayer = CType(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
If Not petaLayer Is Nothing Then
petaLayer = TryCast(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
petaLayer.DataSet.FillAttributes()
Dim jumlah As Integer = 0
Dim category() As PolygonCategory = Nothing
Dim filter() As String = Nothing
Dim kd_status() As String = Nothing
Dim scheme As New PolygonScheme
petaLayer.Symbology.ClearCategories()
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
Dim query As String
query = "select kd_status_pemasaran,nama_status_pemasaran,r,g,b from
tbl_status_pemasaran where 1=1 ORDER BY kd_status_pemasaran asc"
sql.CommandText = query
dataadapter = New MySql.Data.MySqlClient.MySqlDataAdapter(sql.CommandText,
koneksi)
dataadapter.Fill(dataset, "data_warna_status_pemasaran")
Dim i As Integer = 0
For i = 0 To dataset.Tables("data_warna_status_pemasaran").Rows.Count - 1
query = "select nomor_rumah from tbl_unit where kd_lokasi='" &
tsStatusLokasi.Text & "' and kd_status_pemasaran='" &
dataset.Tables("data_warna_status_pemasaran").Rows(i)(0).ToString & "'"
sql.CommandText = query
dataadapter = New
MySql.Data.MySqlClient.MySqlDataAdapter(sql.CommandText, koneksi)
dataadapter.Fill(dataset, "data_unit_pemasaran")
ReDim kd_status(dataset.Tables("data_unit_pemasaran").Rows.Count - 1)
For j As Integer = 0 To
dataset.Tables("data_unit_pemasaran").Rows.Count - 1
kd_status(j) = dataset.Tables("data_unit_pemasaran").Rows(j)(0)
Next
Dim daftar_kd_unit As String = gabungArray(kd_status)
18. 18
If Not daftar_kd_unit = "" Then
ReDim Preserve category(i)
category(i) = New
PolygonCategory(Color.FromArgb(dataset.Tables("data_warna_status_pemasaran").Rows(i)(2),
dataset.Tables("data_warna_status_pemasaran").Rows(i)(3),
dataset.Tables("data_warna_status_pemasaran").Rows(i)(4)), Color.Red, 1)
ReDim Preserve filter(i)
filter(i) = "[NOMOR_RUMAH] IN ('" & daftar_kd_unit & "')"
category(i).FilterExpression = filter(i)
category(i).LegendText =
dataset.Tables("data_warna_status_pemasaran").Rows(i)(1).ToString & " [" &
dataset.Tables("data_unit_pemasaran").Rows.Count & "]"
scheme.AddCategory(category(i))
End If
dataset.Tables("data_unit_pemasaran").Clear()
Next
dataset.Tables("data_warna_status_pemasaran").Clear()
koneksi.Close()
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
If scheme.Categories.Count >= 0 Then
petaLayer.Symbology = scheme
Else
MessageBox.Show("Tidak ada kecocokan peta dengan database", "Informasi",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
MessageBox.Show("Layer Terpilih Bukan Polygon", "Informasi",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
Private Sub statusPembangunan()
Dim petaLayer As MapPolygonLayer = Nothing
Dim query As String
If (petaUtama.Layers.Count > 0) Then
petaLayer = CType(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
If Not petaLayer Is Nothing Then
petaLayer = TryCast(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
petaLayer.DataSet.FillAttributes()
Dim jumlah As Integer = 0
Dim category() As PolygonCategory = Nothing
Dim filter() As String = Nothing
Dim kd_status() As String = Nothing
Dim scheme As New PolygonScheme
petaLayer.Symbology.ClearCategories()
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
query = "select kd_status_pembangunan,nama_status_pembangunan,r,g,b from
tbl_status_pembangunan where 1=1 ORDER BY kd_status_pembangunan asc"
sql.CommandText = query
dataadapter = New MySql.Data.MySqlClient.MySqlDataAdapter(sql.CommandText,
koneksi)
dataadapter.Fill(dataset, "data_warna_status_pembangunan")
Dim i As Integer = 0
For i = 0 To dataset.Tables("data_warna_status_pembangunan").Rows.Count -
1
query = "select nomor_rumah from tbl_unit where kd_lokasi='" &
tsStatusLokasi.Text & "' and kd_status_pembangunan='" &
dataset.Tables("data_warna_status_pembangunan").Rows(i)(0).ToString & "'"
sql.CommandText = query
dataadapter = New
MySql.Data.MySqlClient.MySqlDataAdapter(sql.CommandText, koneksi)
dataadapter.Fill(dataset, "data_unit_status_pembangunan")
ReDim
kd_status(dataset.Tables("data_unit_status_pembangunan").Rows.Count - 1)
For j As Integer = 0 To
dataset.Tables("data_unit_status_pembangunan").Rows.Count - 1
19. 19
kd_status(j) =
dataset.Tables("data_unit_status_pembangunan").Rows(j)(0)
Next
Dim daftar_kd_unit As String = gabungArray(kd_status)
If Not daftar_kd_unit = "" Then
ReDim Preserve category(i)
category(i) = New
PolygonCategory(Color.FromArgb(dataset.Tables("data_warna_status_pembangunan").Rows(i)(2),
dataset.Tables("data_warna_status_pembangunan").Rows(i)(3),
dataset.Tables("data_warna_status_pembangunan").Rows(i)(4)), Color.Red, 1)
ReDim Preserve filter(i)
filter(i) = "[NOMOR_RUMAH] IN ('" & daftar_kd_unit & "')"
category(i).FilterExpression = filter(i)
category(i).LegendText =
dataset.Tables("data_warna_status_pembangunan").Rows(i)(1).ToString & " [" &
dataset.Tables("data_unit_status_pembangunan").Rows.Count & "]"
scheme.AddCategory(category(i))
End If
dataset.Tables("data_unit_status_pembangunan").Clear()
Next
dataset.Tables("data_warna_status_pembangunan").Clear()
koneksi.Close()
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
If scheme.Categories.Count >= 0 Then
petaLayer.Symbology = scheme
Else
MessageBox.Show("Tidak ada kecocokan peta dengan database", "Informasi",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
MessageBox.Show("Layer Terpilih Bukan Polygon", "Informasi",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
Private Sub statusSertifikat()
Dim petaLayer As MapPolygonLayer = Nothing
If (petaUtama.Layers.Count > 0) Then
petaLayer = CType(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
If Not petaLayer Is Nothing Then
petaLayer = TryCast(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
petaLayer.DataSet.FillAttributes()
Dim jumlah As Integer = 0
Dim category() As PolygonCategory = Nothing
Dim filter() As String = Nothing
Dim kd_status() As String = Nothing
Dim scheme As New PolygonScheme
petaLayer.Symbology.ClearCategories()
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
Dim query As String
query = "select kd_status_sertifikat,nama_status_sertifikat,r,g,b from
tbl_status_sertifikat where 1=1 ORDER BY kd_status_sertifikat asc"
sql.CommandText = query
dataadapter = New MySql.Data.MySqlClient.MySqlDataAdapter(sql.CommandText,
koneksi)
dataadapter.Fill(dataset, "data_warna_status_sertifikat")
Dim i As Integer = 0
For i = 0 To dataset.Tables("data_warna_status_sertifikat").Rows.Count - 1
query = "select nomor_rumah from tbl_unit where kd_lokasi='" &
tsStatusLokasi.Text & "' and kd_status_sertifikat='" &
dataset.Tables("data_warna_status_sertifikat").Rows(i)(0).ToString & "'"
sql.CommandText = query
dataadapter = New
MySql.Data.MySqlClient.MySqlDataAdapter(sql.CommandText, koneksi)
dataadapter.Fill(dataset, "data_unit_sertifikat")
20. 20
ReDim kd_status(dataset.Tables("data_unit_sertifikat").Rows.Count - 1)
For j As Integer = 0 To
dataset.Tables("data_unit_sertifikat").Rows.Count - 1
kd_status(j) = dataset.Tables("data_unit_sertifikat").Rows(j)(0)
Next
Dim daftar_kd_unit As String = gabungArray(kd_status)
If Not daftar_kd_unit = "" Then
ReDim Preserve category(i)
category(i) = New
PolygonCategory(Color.FromArgb(dataset.Tables("data_warna_status_sertifikat").Rows(i)(2),
dataset.Tables("data_warna_status_sertifikat").Rows(i)(3),
dataset.Tables("data_warna_status_sertifikat").Rows(i)(4)), Color.Red, 1)
ReDim Preserve filter(i)
filter(i) = "[NOMOR_RUMAH] IN ('" & daftar_kd_unit & "')"
category(i).FilterExpression = filter(i)
category(i).LegendText =
dataset.Tables("data_warna_status_sertifikat").Rows(i)(1).ToString & " [" &
dataset.Tables("data_unit_sertifikat").Rows.Count & "]"
scheme.AddCategory(category(i))
End If
dataset.Tables("data_unit_sertifikat").Clear()
Next
dataset.Tables("data_warna_status_sertifikat").Clear()
koneksi.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
If scheme.Categories.Count >= 0 Then
petaLayer.Symbology = scheme
Else
MessageBox.Show("Tidak ada kecocokan peta dengan database", "Informasi",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
MessageBox.Show("Layer Terpilih Bukan Polygon", "Informasi",
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
Private Sub tsBtnTambahPeta_Click(sender As Object, e As EventArgs) Handles
tsBtnTambahPeta.Click
petaUtama.AddLayers()
End Sub
Private Sub tsBtnHapusPeta_Click(sender As Object, e As EventArgs) Handles
tsBtnHapusPeta.Click
petaUtama.ClearLayers()
tsStatusLokasi.Text = ":-"
tsStatusId.Text = ":-"
End Sub
Private Sub tsBtnDefault_Click(sender As Object, e As EventArgs) Handles
tsBtnDefault.Click
petaUtama.ZoomToMaxExtent()
End Sub
Private Sub tsBtnPan_Click(sender As Object, e As EventArgs) Handles tsBtnPan.Click
petaUtama.FunctionMode = DotSpatial.Controls.FunctionMode.Pan
End Sub
Private Sub tsBtnPilih_Click(sender As Object, e As EventArgs) Handles tsBtnPilih.Click
petaUtama.FunctionMode = DotSpatial.Controls.FunctionMode.Select
End Sub
Private Sub tsBtnZoomIn_Click(sender As Object, e As EventArgs) Handles tsBtnZoomIn.Click
petaUtama.FunctionMode = DotSpatial.Controls.FunctionMode.ZoomIn
End Sub
Private Sub tsBtnZoomOut_Click(sender As Object, e As EventArgs) Handles
tsBtnZoomOut.Click
21. 21
petaUtama.FunctionMode = DotSpatial.Controls.FunctionMode.ZoomOut
End Sub
Private Sub tsBtnInfo_Click(sender As Object, e As EventArgs) Handles tsBtnInfo.Click
petaUtama.FunctionMode = DotSpatial.Controls.FunctionMode.Info
End Sub
Private Sub tsBtnCari_Click(sender As Object, e As EventArgs) Handles tsBtnCari.Click
cariData(tsCari.Text)
End Sub
Private Sub tsBtnUkur_Click(sender As Object, e As EventArgs) Handles tsBtnUkur.Click
With petaUtama
.FunctionMode = FunctionMode.None
For Each mapfunc As IMapFunction In .MapFunctions
If TypeOf mapfunc Is MapFunctionMeasure Then
.MapFunctions.Remove(mapfunc)
Exit For
End If
Next
mapFunction = New MapFunctionMeasure(petaUtama)
.MapFunctions.Add(mapFunction)
.Cursor = Cursors.Cross
mapFunction.Activate()
End With
End Sub
Private Sub tsBtnTabel_Click(sender As Object, e As EventArgs) Handles tsBtnTabel.Click
If petaUtama.Layers.Count > 0 Then
For i = 0 To petaUtama.Layers.Count - 1
If petaUtama.Layers(i).IsSelected = True Then
If petaUtama.Layers(i).ToString = "DotSpatial.Controls.MapPointLayer" Then
layerPoint = CType(petaUtama.Layers(i), MapPointLayer)
mapFitureLayer = "Point"
End If
If petaUtama.Layers(i).ToString = "DotSpatial.Controls.MapLineLayer" Then
layerLine = CType(petaUtama.Layers(i), MapLineLayer)
mapFitureLayer = "Line"
End If
If petaUtama.Layers(i).ToString = "DotSpatial.Controls.MapPolygonLayer"
Then
layerPoly = CType(petaUtama.Layers(i), MapPolygonLayer)
mapFitureLayer = "Polygon"
End If
Select Case mapFitureLayer
Case "Point"
layerPoint.DataSet.AddFid()
frmAttributPeta.dgvAttributPeta.DataSource =
layerPoint.DataSet.DataTable
frmAttributPeta.tsSources.Text = layerPoint.DataSet.Filename
frmAttributPeta.tsTipeShape.Text = mapFitureLayer
Case "Line"
layerLine.DataSet.AddFid()
frmAttributPeta.dgvAttributPeta.DataSource =
layerLine.DataSet.DataTable
frmAttributPeta.tsSources.Text = layerLine.DataSet.Filename
frmAttributPeta.tsTipeShape.Text = mapFitureLayer
Case "Polygon"
layerPoly.DataSet.AddFid()
frmAttributPeta.dgvAttributPeta.DataSource =
layerPoly.DataSet.DataTable
frmAttributPeta.tsSources.Text = layerPoly.DataSet.Filename
frmAttributPeta.tsTipeShape.Text = mapFitureLayer
End Select
End If
Next
Else
MsgBox(e.ToString, MsgBoxStyle.Critical, "Error")
End If
frmAttributPeta.Show()
End Sub
22. 22
Private Sub tsBtnPoint_Click(sender As Object, e As EventArgs) Handles tsBtnPoint.Click
petaUtama.Cursor = Cursors.Cross
shapeType = "Point"
pointF.Projection = petaUtama.Projection
Dim column As New DataColumn("PointID")
pointF.DataTable.Columns.Add(column)
Dim pointLayer As MapPointLayer = petaUtama.Layers.Add(pointF)
Dim symbol As New PointSymbolizer(Color.Red, DotSpatial.Symbology.PointShape.Ellipse,
3)
pointLayer.Symbolizer = symbol
pointLayer.LegendText = "point"
pointmouseClick = True
End Sub
Private Sub tsBtnLine_Click(sender As Object, e As EventArgs) Handles tsBtnLine.Click
petaUtama.Cursor = Cursors.Cross
shapeType = "line"
lineF.Projection = petaUtama.Projection
Dim column As New DataColumn("LineID")
If Not (lineF.DataTable.Columns.Contains("LineID")) Then
lineF.DataTable.Columns.Add(column)
End If
lineLayer = petaUtama.Layers.Add(lineF)
Dim symbol As New LineSymbolizer(Color.Blue, 2)
lineLayer.Symbolizer = symbol
lineLayer.LegendText = "line"
firstClick = True
linemouseClick = True
End Sub
Private Sub tsBtnPoly_Click(sender As Object, e As EventArgs) Handles tsBtnPoly.Click
petaUtama.Cursor = Cursors.Cross
shapeType = "polygon"
polygonF.Projection = petaUtama.Projection
Dim column As New DataColumn("PolygonID")
polygonF.DataTable.Columns.Add(column)
Dim polygonLayer As MapPolygonLayer = petaUtama.Layers.Add(polygonF)
Dim symbol As New PolygonSymbolizer(Color.Green)
polygonLayer.Symbolizer = symbol
polygonLayer.LegendText = "polygon"
firstClick = True
polygonmouseClick = True
End Sub
Private Sub tsBtnBersihkanPeta_Click(sender As Object, e As EventArgs) Handles
tsBtnBersihkanPeta.Click
Me.Close()
End Sub
Private Sub petaUtama_MouseMove(sender As Object, e As MouseEventArgs) Handles
petaUtama.MouseMove
Dim coord As Coordinate = petaUtama.PixelToProj(e.Location)
tsStatusXy.Text = ":" & coord.X.ToString() & " / " & coord.Y.ToString()
If petaUtama.Layers.Count > 0 And tsStatusLokasi.Text = ":-" Then
For i = 0 To petaUtama.Layers.Count - 1
If petaUtama.Layers(i).ToString = "DotSpatial.Controls.MapPolygonLayer" Then
Dim dt As DataTable
layerPoly = CType(petaUtama.Layers(i), MapPolygonLayer)
dt = layerPoly.DataSet.DataTable
Try
tsStatusLokasi.Text = dt.Rows(1).Item("KD_LOKASI").ToString()
Catch ex As Exception
‘ MsgBox(e.ToString, MsgBoxStyle.Critical, "Error")//Tidak Menampilkan
Error
End Try
End If
Next
End If
End Sub
23. 23
Private Sub petaUtama_MouseUp(sender As Object, e As MouseEventArgs) Handles
petaUtama.MouseUp
If petaUtama.Layers.Count > 0 Then
Dim fLayer As FeatureLayer = petaUtama.Layers.SelectedLayer
Dim dt As DataTable
Dim petaLayer As MapPolygonLayer
Try
petaLayer = CType(petaUtama.Layers.SelectedLayer, MapPolygonLayer)
If petaUtama.FunctionMode = FunctionMode.Select And Not petaLayer Is Nothing
Then
Dim result As List(Of IFeature) = New List(Of IFeature)()
result = fLayer.Selection.ToFeatureList
Dim data_profil As New DataTable
For Each feature As IFeature In result
If Not IsDBNull(feature.ShapeIndex) Then
dt = petaLayer.DataSet.DataTable
If frmDetailRumah.IsHandleCreated Then
frmDetailRumah.Close()
End If
Dim id As String =
dt.Rows(fLayer.DataSet.ShapeIndices.IndexOf(feature.ShapeIndex)).Item("NOMOR_RUMAH").ToString()
Dim kd_lokasi As String =
dt.Rows(fLayer.DataSet.ShapeIndices.IndexOf(feature.ShapeIndex)).Item("KD_LOKASI").ToString()
tsStatusId.Text = id
tsStatusLokasi.Text = kd_lokasi
frmDetailRumah.Refresh()
frmDetailRumah.lblNomorRumah.Text = id
frmDetailRumah.lblKodeLokasi.Text = kd_lokasi
frmDetailRumah.ShowDialog()
End If
Next
End If
Catch ex As Exception
MsgBox(e.ToString)
End Try
End If
End Sub
Private Sub tsBtnLabel_Click(sender As Object, e As EventArgs) Handles tsBtnLabel.Click
tampilkanLabelPeta()
End Sub
Private Sub tsBtnHapusLabel_Click(sender As Object, e As EventArgs) Handles
tsBtnHapusLabel.Click
hapusLabel()
End Sub
Private Sub tsBtnJenisUnit_Click(sender As Object, e As EventArgs) Handles
tsBtnJenisUnit.Click
jenisUnit()
End Sub
Private Sub tsBtnStatusPemasaran_Click(sender As Object, e As EventArgs) Handles
tsBtnStatusPemasaran.Click
statusPemasaran()
End Sub
Private Sub tsStatusPembangunan_Click(sender As Object, e As EventArgs) Handles
tsStatusPembangunan.Click
statusPembangunan()
End Sub
Private Sub tsStatusSertifikat_Click(sender As Object, e As EventArgs) Handles
tsStatusSertifikat.Click
statusSertifikat()
End Sub
End Sub
End Class
24. 24
C. Coding Pada Form Detail Rumah (frmDetailRumah)
Public Class frmDetailRumah
Private Sub detailData(ByVal kd_lokasi As String, nomor_rumah As String)
Dim query As String
Dim jawaban As Integer
If nomor_rumah.Length <= 0 Or kd_lokasi.Length <= 0 Then
MsgBox("Masukkan Nomor Rumah/NDR yang dicari", MsgBoxStyle.Critical, "Pesan")
Exit Sub
Else
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
query = "select
kd_lokasi,nomor_rumah,luas_bangunan,luas_tanah,alamat,harga_jual,nama_jenis_unit," & _
"nama_status_pemasaran,nama_status_pembangunan,nama_status_sertifikat
" & _
"from tbl_unit left join tbl_jenis_unit on
(tbl_unit.kd_jenis_unit=tbl_jenis_unit.kd_jenis_unit) " & _
"left join tbl_status_pemasaran on
(tbl_unit.kd_status_pemasaran=tbl_status_pemasaran.kd_status_pemasaran) " & _
"left join tbl_status_pembangunan on
(tbl_unit.kd_status_pembangunan=tbl_status_pembangunan.kd_status_pembangunan) " & _
"left join tbl_status_sertifikat on
(tbl_unit.kd_status_sertifikat=tbl_status_sertifikat.kd_status_sertifikat) " & _
"where tbl_unit.kd_lokasi='" & kd_lokasi & "' and
tbl_unit.nomor_rumah='" & nomor_rumah & "'"
Console.WriteLine(query)
sql.CommandText = query
datareader = sql.ExecuteReader
datareader.Read()
If datareader.HasRows = True Then
Me.lblKodeLokasi.Text = datareader.GetString(0).ToString
Me.lblNomorRumah.Text = datareader.GetString(1).ToString
Me.lblLuasBangunan.Text = datareader.GetString(2).ToString
Me.lblLuasTanah.Text = datareader.GetString(3).ToString
Me.lblAlamat.Text = datareader.GetString(4).ToString
Me.lblHargaJual.Text = Format(Val(datareader.GetString(5).ToString),
"###,###")
Me.lblJenisUnit.Text = datareader.GetString(6).ToString
Me.lblStatusPemasaran.Text = datareader.GetString(7).ToString
Me.lblStatusPembangunan.Text = datareader.GetString(8).ToString
Me.lblStatusSertifikat.Text = datareader.GetString(9).ToString
Else
jawaban = MessageBox.Show("Data Rumah Tidak Ditemukan, Masukkan Data
Baru ??", "Informasi", MessageBoxButtons.YesNo, MessageBoxIcon.Information)
If jawaban = vbYes Then
frmCrudRumah.txtKodeLokasi.Text = lblKodeLokasi.Text
frmCrudRumah.txtNomorRumah.Text = lblNomorRumah.Text
frmCrudRumah.Text = "Masukkan Data Rumah"
frmCrudRumah.ShowDialog()
ElseIf jawaban = vbNo Then
Me.Close()
End If
End If
koneksi.Close()
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
End If
End Sub
Private Sub hapusData(ByVal kd_lokasi As String, nomor_rumah As String)
If MsgBox("Anda Yakin Akan Hapus Data Rumah = " & kd_lokasi & " Nomor Rumah = " &
nomor_rumah & "??", MsgBoxStyle.OkCancel, "Konfirmasi Hapus") = MsgBoxResult.Cancel Then
Exit Sub
End If
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
Dim query As String = "delete from tbl_unit where kd_lokasi = '" & kd_lokasi & "'
and nomor_rumah='" & nomor_rumah & "'"
25. 25
sql.CommandText = query
If sql.ExecuteNonQuery().ToString = True Then
MsgBox("Hapus Data Rumah Berhasil", MsgBoxStyle.Information, "Pesan")
Else
MsgBox("Hapus Data Rumah Gagal", MsgBoxStyle.Critical, "Error")
End If
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
koneksi.Close()
End Sub
Private Sub btnStatusPemasaran_Click(sender As Object, e As EventArgs) Handles
btnStatusPemasaran.Click
If lblKodeLokasi.Text.Length > 0 And lblNomorRumah.Text.Length > 0 Then
frmStatus.tsKdLokasi.Text = lblKodeLokasi.Text
frmStatus.tsNomorRumah.Text = lblNomorRumah.Text
frmStatus.Text = "Ubah Status Pemasaran"
frmStatus.ShowDialog()
End If
End Sub
Private Sub btnStatusPembangunan_Click(sender As Object, e As EventArgs) Handles
btnStatusPembangunan.Click
If lblKodeLokasi.Text.Length > 0 And lblNomorRumah.Text.Length > 0 Then
frmStatus.tsKdLokasi.Text = lblKodeLokasi.Text
frmStatus.tsNomorRumah.Text = lblNomorRumah.Text
frmStatus.Text = "Ubah Status Pembangunan"
frmStatus.ShowDialog()
End If
End Sub
Private Sub btnStatusSertifikat_Click(sender As Object, e As EventArgs) Handles
btnStatusSertifikat.Click
If lblKodeLokasi.Text.Length > 0 And lblNomorRumah.Text.Length > 0 Then
frmStatus.tsKdLokasi.Text = lblKodeLokasi.Text
frmStatus.tsNomorRumah.Text = lblNomorRumah.Text
frmStatus.Text = "Ubah Status Sertifikat"
frmStatus.ShowDialog()
End If
End Sub
Private Sub btnUbah_Click(sender As Object, e As EventArgs) Handles btnUbah.Click
frmCrudRumah.Text = "Ubah Data Rumah"
frmCrudRumah.txtKodeLokasi.Text = lblKodeLokasi.Text
frmCrudRumah.txtNomorRumah.Text = lblNomorRumah.Text
frmCrudRumah.ShowDialog()
End Sub
Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click
detailData(lblKodeLokasi.Text, lblNomorRumah.Text)
End Sub
Private Sub frmDetailRumah_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If lblKodeLokasi.Text = "" Or lblNomorRumah.Text = "" Then
MsgBox("Data Lokasi Dan Nomor Rumah Kosong", MsgBoxStyle.Information, "Informasi")
Me.Close()
Else
detailData(lblKodeLokasi.Text, lblNomorRumah.Text)
End If
End Sub
Private Sub btnHapus_Click(sender As Object, e As EventArgs) Handles btnHapus.Click
hapusData(lblKodeLokasi.Text, lblNomorRumah.Text)
Me.Close()
End Sub
End Class
26. 26
D. Coding Pada Form CRUD Rumah (frmCrudRumah)
Imports MySql.Data.MySqlClient
Public Class frmCrudRumah
Private Sub kosong()
txtNomorRumah.Text = ""
txtLuasBangunan.Text = ""
txtLuasTanah.Text = ""
txtAlamat.Text = ""
txtHargaJual.Text = ""
cmbJenisUnit.SelectedIndex = 0
End Sub
Private Sub tampilJenisUnit()
Dim myData As New DataTable
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
sql.CommandText = "select kd_jenis_unit,nama_jenis_unit from tbl_jenis_unit order
by kd_jenis_unit asc"
dataadapter.SelectCommand = sql
dataset.Tables.Clear()
dataadapter.Fill(myData)
cmbJenisUnit.DataSource = myData
cmbJenisUnit.DisplayMember = "nama_jenis_unit"
cmbJenisUnit.ValueMember = "kd_jenis_unit"
koneksi.Close()
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
End Sub
Private Sub Simpan()
If txtKodeLokasi.Text.Length > 0 Then
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
Dim query As String = "INSERT INTO tbl_unit (kd_lokasi, nomor_rumah,
luas_bangunan,luas_tanah,alamat,harga_jual,kd_jenis_unit) "
query &= "VALUES
(@kd_lokasi,@nomor_rumah,@luas_bangunan,@luas_tanah,@alamat,@harga_jual,@kd_jenis_unit);"
With sql
.CommandText = query
.Parameters.Clear()
.Parameters.Add("@kd_lokasi", MySqlDbType.String).Value =
txtKodeLokasi.Text
.Parameters.Add("@nomor_rumah", MySqlDbType.String).Value =
txtNomorRumah.Text
.Parameters.Add("@luas_bangunan", MySqlDbType.String).Value =
txtLuasBangunan.Text
.Parameters.Add("@luas_tanah", MySqlDbType.String).Value =
txtLuasTanah.Text
.Parameters.Add("@alamat", MySqlDbType.String).Value = txtAlamat.Text
.Parameters.Add("@harga_jual", MySqlDbType.Int16).Value =
txtHargaJual.Text
.Parameters.Add("@kd_jenis_unit", MySqlDbType.String).Value =
cmbJenisUnit.SelectedValue
.ExecuteNonQuery()
End With
kosong()
MsgBox("Simpan Data Rumah Berhasil", MsgBoxStyle.Information, "Pesan")
Catch ex As MySqlException
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
Finally
koneksi.Close()
End Try
End If
End Sub
Private Sub ubahData(ByVal kd_lokasi As String, nomor_rumah As String)
Dim query As String
27. 27
If kd_lokasi.Length <= 0 And nomor_rumah.Length <= 0 Then
MsgBox("Masukkan Nomor Rumah yang dicari", MsgBoxStyle.Critical, "Pesan")
Else
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
query = "select
kd_lokasi,nomor_rumah,luas_bangunan,luas_tanah,alamat,harga_jual,kd_jenis_unit from tbl_unit
where kd_lokasi='" & kd_lokasi & "' and nomor_rumah='" & nomor_rumah & "'"
sql.CommandText = query
datareader = sql.ExecuteReader
datareader.Read()
If datareader.HasRows = True Then
txtKodeLokasi.Text = datareader.GetString(0).ToString
txtNomorRumah.Text = datareader.GetString(1).ToString
txtLuasBangunan.Text = datareader.GetString(2).ToString
txtLuasTanah.Text = datareader.GetString(3).ToString
txtAlamat.Text = datareader.GetString(4).ToString
txtHargaJual.Text = datareader.GetString(5).ToString
cmbJenisUnit.SelectedValue = datareader.GetString(6).ToString
txtKodeLokasi.ReadOnly = True
txtNomorRumah.ReadOnly = True
Else
MsgBox("Data Rumah tidak ditemukan", MsgBoxStyle.Critical, "Pesan")
Me.Close()
End If
koneksi.Close()
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
End If
End Sub
Private Sub eksekusiUbah()
If txtKodeLokasi.Text.Length > 0 And txtNomorRumah.Text.Length > 0 Then
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
Dim query As String
query = "update tbl_unit set
luas_bangunan=@luas_bangunan,luas_tanah=@luas_tanah,alamat=@alamat,harga_jual=@harga_jual,kd_j
enis_unit=@kd_jenis_unit " & _
"where kd_lokasi='" & txtKodeLokasi.Text & "' and nomor_rumah='" &
txtNomorRumah.Text & "';"
With sql
.CommandText = query
.Parameters.Clear()
.Parameters.Add("@luas_bangunan", MySqlDbType.String).Value =
txtLuasBangunan.Text
.Parameters.Add("@luas_tanah", MySqlDbType.String).Value =
txtLuasTanah.Text
.Parameters.Add("@alamat", MySqlDbType.VarChar).Value = txtAlamat.Text
.Parameters.Add("@harga_jual", MySqlDbType.VarChar).Value =
txtHargaJual.Text
.Parameters.Add("@kd_jenis_unit", MySqlDbType.VarChar).Value =
cmbJenisUnit.SelectedValue
.ExecuteNonQuery()
End With
kosong()
MsgBox("Ubah Data Rumah Berhasil", MsgBoxStyle.Information, "Pesan")
Catch ex As MySqlException
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
Finally
koneksi.Close()
End Try
End If
End Sub
Private Sub frmCrudRumah_Load(sender As Object, e As EventArgs) Handles MyBase.Load
tampilJenisUnit()
28. 28
If Me.Text = "Masukkan Data Rumah" Then
btnOperasi.Text = "&Simpan"
ElseIf Me.Text = "Ubah Data Rumah" Then
ubahData(txtKodeLokasi.Text, txtNomorRumah.Text)
btnOperasi.Text = "&Ubah"
End If
End Sub
Private Sub btnSimpan_Click(sender As Object, e As EventArgs) Handles btnOperasi.Click
If btnOperasi.Text = "&Simpan" Then
Simpan()
frmDetailRumah.btnRefresh.PerformClick()
Me.Close()
ElseIf btnOperasi.Text = "&Ubah" Then
eksekusiUbah()
frmDetailRumah.btnRefresh.PerformClick()
Me.Close()
End If
End Sub
Private Sub btnTutup_Click(sender As Object, e As EventArgs) Handles btnTutup.Click
If Me.Text = "Masukkan Data Rumah" Then
If frmDetailRumah.IsHandleCreated Then
frmDetailRumah.Close()
End If
Me.Close()
End If
End Sub
End Class
E. Coding Pada Form Status (frmStatus)
Public Class frmStatus
Dim kd_status, query As String
Private Sub tampilDataStatus()
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
If Me.Text = "Ubah Status Pemasaran" Then
query = "select * from tbl_status_pemasaran"
ElseIf Me.Text = "Ubah Status Pembangunan" Then
query = "select * from tbl_status_pembangunan"
ElseIf Me.Text = "Ubah Status Sertifikat" Then
query = "select * from tbl_status_sertifikat"
End If
sql.CommandText = query
dataadapter.SelectCommand = sql
Dim table As New DataTable
dataadapter.Fill(table)
dgvStatus.DataSource = table
table.Columns(0).ColumnName = "Kode Stutus"
table.Columns(1).ColumnName = "Nama Status"
table.Columns(2).ColumnName = "Red"
table.Columns(3).ColumnName = "Green"
table.Columns(4).ColumnName = "Blue"
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
dgvStatus.ReadOnly = True
End Sub
Private Sub eksekusiUpdateStatus()
Try
Call koneksiDB()
sql.Connection = koneksi
sql.CommandType = CommandType.Text
If Me.Text = "Ubah Status Pemasaran" Then
query = "update tbl_unit set kd_status_pemasaran='" & kd_status & "' where
nomor_rumah='" & tsNomorRumah.Text & "' and kd_lokasi='" & tsKdLokasi.Text & "'"
29. 29
ElseIf Me.Text = "Ubah Status Pembangunan" Then
query = "update tbl_unit set kd_status_pembangunan='" & kd_status & "' where
nomor_rumah='" & tsNomorRumah.Text & "' and kd_lokasi='" & tsKdLokasi.Text & "'"
ElseIf Me.Text = "Ubah Status Sertifikat" Then
query = "update tbl_unit set kd_status_sertifikat='" & kd_status & "' where
nomor_rumah='" & tsNomorRumah.Text & "' and kd_lokasi='" & tsKdLokasi.Text & "'"
End If
sql.CommandText = query
If sql.ExecuteNonQuery.ToString = True Then
MsgBox("Ubah Status Berhasil", MsgBoxStyle.Information, "Pesan Ubah")
End If
koneksi.Close()
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Critical, "Error")
End Try
End Sub
Private Sub frmStatus_Load(sender As Object, e As EventArgs) Handles MyBase.Load
tampilDataStatus()
End Sub
Private Sub dgvStatus_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles
dgvStatus.CellClick
kd_status = dgvStatus.CurrentRow.Cells(0).Value.ToString
End Sub
Private Sub tsBtnUpdate_Click(sender As Object, e As EventArgs) Handles tsBtnUpdate.Click
eksekusiUpdateStatus()
frmDetailRumah.btnRefresh.PerformClick()
Me.Close()
End Sub
End Class
F. Coding Form Attribute Peta (frmAttributPeta)
Public Class frmAttributPeta
Private Sub konvertExcel()
Dim ExcelApp As Object, ExcelBook As Object
Dim ExcelSheet As Object
Dim i, j As Integer
Dim columnsCount As Integer = dgvAttributPeta.Columns.Count
ExcelApp = CreateObject("Excel.Application")
ExcelBook = ExcelApp.WorkBooks.Add
ExcelSheet = ExcelBook.WorkSheets(1)
With ExcelSheet
For Each column In dgvAttributPeta.Columns
.Cells(1, column.Index + 1).Value = column.Name
Next
For i = 2 To dgvAttributPeta.RowCount
.Cells(i, 1) = dgvAttributPeta.Rows((i - 1) - 1).Cells("KD_LOKASI").Value
For j = 1 To dgvAttributPeta.Columns.Count - 1
.cells(i, j + 1) = dgvAttributPeta.Rows((i - 1) - 1).Cells(j).Value
Next
Next
End With
ExcelApp.Visible = True
ExcelSheet = Nothing
ExcelBook = Nothing
ExcelApp = Nothing
End Sub
Private Sub SimpanToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles
SimpanToolStripMenuItem.Click
Select Case tsTipeShape.Text
Case "Point"
frmSiteplan.layerPoint.DataSet.UpdateExtent()
frmSiteplan.layerPoint.DataSet.Save()
Case "Line"
frmSiteplan.layerLine.DataSet.UpdateExtent()
frmSiteplan.layerLine.DataSet.Save()
Case "Polygon"
30. 30
frmSiteplan.layerPoly.DataSet.UpdateExtent()
frmSiteplan.layerPoly.DataSet.Save()
End Select
End Sub
Private Sub TambahKolomToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles
TambahKolomToolStripMenuItem.Click
Dim namaKolom As String = InputBox("Masukkan Nama Kolom Yang Akan Ditambahkan",
vbOKCancel)
If namaKolom <> "" Then
Select Case tsTipeShape.Text
Case "Point"
frmSiteplan.layerPoint.DataSet.DataTable.Columns.Add(UCase(namaKolom))
Case "Line"
frmSiteplan.layerLine.DataSet.DataTable.Columns.Add(UCase(namaKolom))
Case "Polygon"
frmSiteplan.layerPoly.DataSet.DataTable.Columns.Add(UCase(namaKolom))
End Select
End If
End Sub
Private Sub dgvAttributPeta_CellMouseClick(sender As Object, e As
DataGridViewCellMouseEventArgs) Handles dgvAttributPeta.CellMouseClick
Dim query As String = ""
Dim i As Integer = 0
For Each Row As DataGridViewRow In dgvAttributPeta.SelectedRows
If i = 0 Then
query = "[FID]=" & Row.Cells("FID").Value
Else
query = query + "OR [FID]=" & Row.Cells("FID").Value
End If
i = i + 1
Next
Select Case tsTipeShape.Text
Case "Point"
frmSiteplan.layerPoint.SelectByAttribute(query)
Case "Line"
frmSiteplan.layerLine.SelectByAttribute(query)
Case "Polygon"
frmSiteplan.layerPoly.SelectByAttribute(query)
End Select
End Sub
Private Sub tsCari_Click(sender As Object, e As EventArgs) Handles tsCari.Click
Select Case tsTipeShape.Text
Case "Point"
frmSiteplan.layerPoint.ZoomToSelectedFeatures()
Case "Line"
frmSiteplan.layerLine.ZoomToSelectedFeatures()
Case "Polygon"
frmSiteplan.layerPoly.ZoomToSelectedFeatures()
End Select
End Sub
Private Sub tsKonversiExcel_Click(sender As Object, e As EventArgs) Handles
tsKonversiExcel.Click
konvertExcel()
End Sub
Private Sub UbahKolomToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles
UbahKolomToolStripMenuItem.Click
frmUbahKolomSiteplan.ShowDialog()
End Sub
Private Sub HapusKolomToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles
HapusKolomToolStripMenuItem.Click
frmHapusKolomSiteplan.ShowDialog()
End Sub
End Class
31. 31
G. Coding Pada Form Ubah Kolom (frmUbahKolomSiteplan)
Public Class frmUbahKolomSiteplan
Private Sub frmUbahKolomSiteplan_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
cbKolom.Items.Clear()
Select Case frmAttributPeta.tsTipeShape.Text
Case "Point"
For Each kolom As DataColumn In
frmSiteplan.layerPoint.DataSet.DataTable.Columns
cbKolom.Items.Add(UCase(kolom.ColumnName))
Next
Case "Line"
For Each kolom As DataColumn In
frmSiteplan.layerLine.DataSet.DataTable.Columns
cbKolom.Items.Add(UCase(kolom.ColumnName))
Next
Case "Polygon"
For Each kolom As DataColumn In
frmSiteplan.layerPoly.DataSet.DataTable.Columns
cbKolom.Items.Add(UCase(kolom.ColumnName))
Next
End Select
End Sub
Private Sub btnUbah_Click(sender As Object, e As EventArgs) Handles btnUbah.Click
If txtNamaBaruKolom.Text = "" Then Exit Sub
Select Case frmAttributPeta.tsTipeShape.Text
Case "Point"
frmSiteplan.layerPoint.DataSet.DataTable.Columns.Item(cbKolom.SelectedIndex).ColumnName =
UCase(txtNamaBaruKolom.Text)
Case "Line"
frmSiteplan.layerLine.DataSet.DataTable.Columns.Item(cbKolom.SelectedIndex).ColumnName =
UCase(txtNamaBaruKolom.Text)
Case "Polygon"
frmSiteplan.layerPoly.DataSet.DataTable.Columns.Item(cbKolom.SelectedIndex).ColumnName =
UCase(txtNamaBaruKolom.Text)
End Select
End Sub
End Class
H. Coding Pada Form Hapus Kolom (frmHapusKolomSiteplan)
Public Class frmHapusKolomSiteplan
Private Sub frmHapusKolomSiteplan_Load(sender As Object, e As EventArgs) Handles
MyBase.Load
clbKolom.Items.Clear()
Select Case frmAttributPeta.tsTipeShape.Text
Case "Point"
For Each kolom As DataColumn In
frmSiteplan.layerPoint.DataSet.DataTable.Columns
clbKolom.Items.Add(UCase(kolom.ColumnName))
Next
Case "Line"
For Each kolom As DataColumn In
frmSiteplan.layerLine.DataSet.DataTable.Columns
clbKolom.Items.Add(UCase(kolom.ColumnName))
Next
Case "Polygon"
For Each kolom As DataColumn In
frmSiteplan.layerPoly.DataSet.DataTable.Columns
clbKolom.Items.Add(UCase(kolom.ColumnName))
Next
End Select
End Sub
Private Sub btnHapus_Click(sender As Object, e As EventArgs) Handles btnHapus.Click
On Error GoTo err
32. 32
For Each itemChecked In clbKolom.CheckedItems
Select Case frmAttributPeta.tsTipeShape.Text
Case "Point"
frmSiteplan.layerPoint.DataSet.DataTable.Columns.RemoveAt(clbKolom.Items.IndexOf(itemChecked))
Case "Line"
frmSiteplan.layerLine.DataSet.DataTable.Columns.RemoveAt(clbKolom.Items.IndexOf(itemChecked))
Case "Polygon"
frmSiteplan.layerPoly.DataSet.DataTable.Columns.RemoveAt(clbKolom.Items.IndexOf(itemChecked))
End Select
Next
Me.Close()
err:
MsgBox(Err.Description, Err.Number, vbExclamation + vbOKOnly)
Me.Close()
End Sub
End Class