Thursday 25 June 2015

VB6.0 :: Insert, Edit & Delete Data Tabel dengan Visual Basic


Di tutorial Insert, Edit & Delete Data Tabel dengan Visual Basic, anda akan belejar bagaimana menambah record ke database (save data), mengedit record yang telah ada di tabel (edit data) dan menghapus record yang telah ada di tabel (delete data).
Bukalah kembali project yang telah anda buat pada tutorial sebelumnya.
Pada tutorial sebelumnya anda telah membuat admin_from seperti di bawah:
Admin Form

Gambar1. Admin Form
Pilih menu project -> Components atau tekan Crtl+T pada keybord anda. Centang pada"Microsoft ADO Data Control 6.0 (OLEDB)" dan "Microsoft DataGrid Control 6.0 (OLEDB)"kemudian tekan tombol OK. Pada bagian pallet window akan muncul icon seperti yang diberi tanda di bawah, yang diberi tanda merah adalah "Microsoft ADO Data Control 6.0 (OLEDB)"atau disingkat ADODC dan yang diberi tanda biru adalah "Microsoft DataGrid Control 6.0 (OLEDB)" atau disingkat DataGrid.
ADODCGambar 2. ADODC dan DataGrid .
Sekarang pilih menu Project -> Add From, pada window Add Form pilih Form dan tekan tombol Open. Sebuah form baru akan terbentuk. Tambahkan 4 label, 4 text box, 4 button, 1 Adodc dan 1 datagrid, seperti di bawah:
New Form 
Gambar 3.From baru
Kemudian atur properti form tersebut seperti berikut :
KomponenPropertiKeterangan
Form1Name : form_product
Caption : Product Entry
 
Label1Caption : Product ID 
Adodc1Name : ado_product 
Caption : Data Product
 
Text1Name : txt_prd_ID
Text : ""
DataSource : ado_product
DataField : product_id 
Locked : true
DataField diisi dengan nama field pada 
tabel yang ingin ditampilkan pada textbox
Label2Caption : Product Name 
Text2Name :txt_prd_name
Text : ""
DataSource :ado_product
DataField : product_name
Locked : true
pada textbox ini akan ditampilkan field product_name
Label3Caption : Price 
Text3Name : txt_price
Text : ""
DataSource : ado_product
DataField : price 
Locked : true
 
Label4Caption : Stock 
Text4Name : txt_stock
Text : ""
DataSource : ado_product
DataField : stock 
Locked : true
 
Command1Name : btn_add
Caption : Add
 
Command2Name : btn_edit
Caption : Edit
 
Command3Name : btn_delete
Caption : Delete
 
Command4Name : btn_close
Caption : Close
 
DataGrid1Name : dg_product
DataSource : ado_product 
AllowUpdate : False
 
Setelah diatur propertinya maka hasilnya akan seperti berikut:
Form Product
Gambar 4. form_product
Langkah selanjunya, double click pada from dan ketik kode di bawah :
Option Explicit
Public rs_Product As ADODB.Recordset

Private Sub Form_Load()
On Error GoTo salah
'membuka koneksi
Call Koneksi
Set rs_Product = New ADODB.Recordset
Dim SQl As String
'membentuk query untuk menampilkan data
SQl = "select * from product order by product_id"
'membuka tabel 
rs_Product.CursorLocation = adUseClient
rs_Product.Open SQl, conn, adOpenDynamic, adLockOptimistic
'manampilkan data pada datagrid
Set ado_product.Recordset = rs_Product

Exit Sub
salah:
MsgBox err.Description
End Sub
apa yang dilakukan kode di atas adalah membuka koneksi dengan memanggil Sub Koneksi,membuat ADODC.Recordset baru (Set rs_Product = New ADODB.Recordset) dan membuat query untuk membaca record pada tabel. Setelah itu membukan tabel dengan perintah Open(rs_Product.CursorLocation = adUseClient diikuti rs_Product.Open SQl, conn, adOpenDynamic, adLockOptimistic) dan kemudian menampilkanya pada Datagrid.
Sekarang double click tombol Add dan ketik kode berikut:
Private Sub btn_add_Click()
On Error GoTo salah
If btn_add.Caption = "Add" Then
btn_add.Caption = "Save"
'menambah record baru ke tabel
ado_product.Recordset.AddNew

txt_prd_ID.Locked = False
txt_prd_name.Locked = False
txt_price.Locked = False
txt_stock.Locked = False
btn_edit.Enabled = False
btn_delete.Enabled = False
Else
'menyimpan record baru
ado_product.Recordset.Update

txt_prd_name.Locked = True
txt_prd_ID.Locked = True
txt_price.Locked = True
txt_stock.Locked = True
btn_edit.Enabled = True
btn_delete.Enabled = True
btn_add.Caption = "Add"
End If
Exit Sub
salah:
MsgBox err.Description
End Sub
Kode di atas digunakan untuk menambahkan record ke tabel pada database. Sekarang double click pada tombol Edit dan ketik kode berikut :
Private Sub btn_edit_Click()
On Error GoTo salah
If btn_edit.Caption = "Edit" Then
'edit record pada tabel
ado_product.Recordset.Update

txt_prd_ID.Locked = False
txt_prd_name.Locked = False
txt_price.Locked = False
txt_stock.Locked = False
btn_edit.Caption = "Save"
btn_delete.Enabled = False
btn_add.Enabled = False
Else
'simpan perubahan data
'dan kembalikan kondisi tombol dan text box
txt_prd_name.Locked = True
txt_prd_ID.Locked = True
txt_price.Locked = True
txt_stock.Locked = True
btn_add.Enabled = True
btn_delete.Enabled = True
btn_edit.Caption = "Edit"
End If
Exit Sub
salah:
MsgBox err.Description

End Sub
Kode di atas digunakan untuk mengedit record yang telah ada di tabel. Selanjutnya double click tombol Delete dan ketik kode berikut:
Private Sub btn_delete_Click()On Error GoTo salah
Dim pil As VbMsgBoxResult
pil = MsgBox("Are you sure to delete?", vbYesNo + vbQuestion, "Delete")
If pil = vbYes Then
'hapus record
ado_product.Recordset.Delete
'memapilkan kembali record-record tabel
Call Form_Load
End If
Exit Sub
salah:
MsgBox err.Description

End Sub
Kode tersebut digunakan untuk menghapus record yang ada di tabel. Sekarang double click pada ADODC (ado_product) dan ketik kode berikut :
Private Sub ado_product_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)ado_product.Caption = "Data ke-" & ado_product.Recordset.AbsolutePosition & " Dari total " & ado_product.Recordset.RecordCount & " data"
End Sub
Yang terakhir double click pada tombol Close dan ketik kode :
Private Sub btn_close_Click()
Unload Me
End Sub

Sampai disini anda telah selesai membuat form untuk menambah record ke database, mengedit record yang telah ada, dan menghapus record yang telah ada di tabel. Sekarang anda buka form_admin (Gambar 1) dan double click pada tombol Product dan ketik kode berikut:
Private Sub btn_product_Click()
Load form_product
form_product.Show
End Sub 

Sekarang simpan project anda kembali dan cobalah untuk menjalanknya dengan menekan tombol F5 pada keybord atau dengan memilih menu Run -> Start.

Di tutorial Membuat Aplikasi Client Server dengan VB dan MYSQL, pokok bahasan Insert, Edit & Delete Data Tabel dengan Visual Basic, anda telah belajar tentang cara insert data ke tabel mysql, edit data, dan delete data yang ada di tabel menggunakan ADODB. Belajar cara menggunakan Microsoft ADO Data Control 6.0 (OLEDB)" atau disingkat ADODC dan "Microsoft DataGrid Control 6.0 "

VB6.0 :: Cara Membuat Input, Hapus, Edit, Cari Data Dengan Visual Basic 6.0


Cara Membuat Input, Hapus, Edit, Cari Data Dengan Visual Basic 6.0


1. Jalankan program visual basic 6.0 
2. Buat form seperti gambar di bawah ini. jika sudah nanti anda tinggal mengisi source code dari form- form yang sudah di buat seperti ini :

input, edit, delet, search data visual basic

3. Jangan lupa untuk membuat modul yang di fungsikan untuk pengkoneksian data base access. dengan nama "Module1" dan isilah koding seperti di bawah ini :

Public koneksi As ADODB.Connection
Public rs1 As ADODB.Recordset
Public rs2 As ADODB.Recordset
Public rs3 As ADODB.Recordset
Public profil As Integer 'VARIABLE YG MENENTUKAN ADMIN ATAU OPERATOR
Public nopeltiket As String 'VARIABLE TIKET LAN KONCO2
Public jamtiket As Date
Public tanggaltiket As Date

Sub starkoneksi()
Set koneksi = New ADODB.Connection
  If koneksi.State = adStateOpen Then
        koneksi.Close
        Set koneksi = New ADODB.Connection
  End If
koneksi.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\dbsewa.mdb"
End Sub


4. Memulai pengisian koding pada form2 yang sudah kita buat seperti di atas dengan koding di bawah ini :

Private Sub urip()
txtidpenyewa.Enabled = True
txtnama.Enabled = True
txtalamat.Enabled = True
txtlahir.Enabled = True
DTPicker1.Enabled = True
cmbjeniskel.Enabled = True
txtpekerjaan.Enabled = True

End Sub
Private Sub mati()
txtidpenyewa.Enabled = False
txtnama.Enabled = False
txtalamat.Enabled = False
txtlahir.Enabled = False
DTPicker1.Enabled = False
cmbjeniskel.Enabled = False
txtpekerjaan.Enabled = False
End Sub
Private Sub bersih()
txtidpenyewa.Text = ""
txtnama.Text = ""
txtalamat.Text = ""
txtlahir.Text = ""
cmbjeniskel.Text = ""
txtpekerjaan.Text = ""
End Sub


Koding diatas difungsikan untuk mempermudah atau mempersingkat pengkodingan dalam program ini, maka dari itu saya buatkan fungsi-fungsi seperti diatas agar gapat mempersingkat koding dan mudah dalam pengkodingan

5. buat koding 'Tambah' pada Command1Buttem yang bernama"Command1" seperti di bawah ini ya...

Private Sub Command1_Click()
Command2.Enabled = False
Command3.Enabled = False
If Command1.Caption = "Tambah" Then
Call urip
Call bersih
Command1.Caption = "Simpan"
   
ElseIf Command1.Caption = "Simpan" Then
If txtidpenyewa.Text = "" Or txtnama.Text = "" Or txtalamat.Text = "" Or txtlahir.Text = "" Or cmbjeniskel.Text = "" Or txtpekerjaan.Text = "" Then
MsgBox "DATA BELUM LENGKAP", vbCritical, "PERIKSALAH LAGI"
Else
pertanyaan = MsgBox("Apakah Anda Yakin...??", vbYesNo, "Pertanyaan")
 If pertanyaan = vbYes Then
 adopenyewa.Recordset.AddNew
    adopenyewa.Recordset!idpenyewa = txtidpenyewa.Text
    adopenyewa.Recordset!nama = txtnama.Text
    adopenyewa.Recordset!alamat = txtalamat.Text
    adopenyewa.Recordset!tempatlahir = txtlahir.Text
    adopenyewa.Recordset!tgllahir = Format(DTPicker1.Value, "dd/mm/yyyy")
    adopenyewa.Recordset!jeniskelamin = cmbjeniskel.Text
    adopenyewa.Recordset!pekerjaan = txtpekerjaan.Text
    adopenyewa.Recordset.Requery
    MsgBox "Data Berhasil di Simpan", vbInformation, "Simpan Data"
    Command1.Enabled = True
    Call mati
    Command1.Caption = "Tambah"
End If
End If
End If
End Sub


6. Jika sudah buat koding seperti di bawah ini pada "Command2" yang digunakan untuk 'Edit' adapun koding nya seperti di bawah ini :

Private Sub Command2_Click()

Command1.Enabled = False
Command3.Enabled = False
If Command2.Caption = "Edit" Then
Call urip
txtidpenyewa.Text = adopenyewa.Recordset!idpenyewa
txtnama.Text = adopenyewa.Recordset!nama
txtalamat.Text = adopenyewa.Recordset!alamat
txtlahir.Text = adopenyewa.Recordset!tempatlahir
DTPicker1.Value = adopenyewa.Recordset!tgllahir
cmbjeniskel.Text = adopenyewa.Recordset!jeniskelamin
txtpekerjaan.Text = adopenyewa.Recordset!pekerjaan
Command2.Caption = "Simpan"
   
ElseIf Command2.Caption = "Simpan" Then
If txtidpenyewa.Text = "" Or txtnama.Text = "" Or txtalamat.Text = "" Or txtlahir.Text = "" Or cmbjeniskel.Text = "" Or txtpekerjaan.Text = "" Then
MsgBox "DATA BELUM LENGKAP", vbCritical, "PERIKSALAH LAGI"
Else
pertanyaan = MsgBox("Apakah Anda Yakin Merubah Datanya...??", vbYesNo, "-Pertanyaan-")
 If pertanyaan = vbYes Then
    adopenyewa.Recordset.Update
    adopenyewa.Recordset!idpenyewa = txtidpenyewa.Text
    adopenyewa.Recordset!nama = txtnama.Text
    adopenyewa.Recordset!alamat = txtalamat.Text
    adopenyewa.Recordset!tempatlahir = txtlahir.Text
    adopenyewa.Recordset!tgllahir = Format(DTPicker1.Value, "dd/mm/yyyy")
    adopenyewa.Recordset!jeniskelamin = cmbjeniskel.Text
    adopenyewa.Recordset!pekerjaan = txtpekerjaan.Text
    adopenyewa.Recordset.Requery
    MsgBox "Data Berhasil di Rubah", vbInformation, "Simpan Data"
    Call mati
    Command1.Enabled = True
Command2.Enabled = False
Command3.Enabled = False
End If
End If
End If
End Sub

7. Koding hapus data dapat anda ketik kan seperti di bawah pada Command5 dengan nama 'Hapus'

Private Sub Command5_Click()
MsgBox "anda yakin menghapus data ini", vbOKOnly, "PERTANYAAN"
adopenyewa.Recordset.Delete
adopenyewa.Recordset.Requery
End Sub


8. Lalu untuk buttom "Batal" anda ketikkan koding seperti di bawah ini ..

Private Sub Command4_Click()
Command1.Enabled = True
Call bersih
Command1.Caption = "Tambah"
End Sub


9. Untuk DataGrid1 anda harus menambahkan koding dibawah ini agar ketika diklik untuk edit dan hapus datanya bisa tampil.

Private Sub DataGrid1_Click()
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = True
txtidpenyewa.Text = adopenyewa.Recordset!idpenyewa
txtnama.Text = adopenyewa.Recordset!nama
txtalamat.Text = adopenyewa.Recordset!alamat
txtlahir.Text = adopenyewa.Recordset!tempatlahir
DTPicker1.Value = adopenyewa.Recordset!tgllahir
cmbjeniskel.Text = adopenyewa.Recordset!jeniskelamin
txtpekerjaan.Text = adopenyewa.Recordset!pekerjaan
End Sub


10. Untuk yang terakhir kalinya anda tambahkan koding pada Form_Load agar ketika program input, hapus, edit dapat menampilkan datanya pada DataGrid 

Private Sub Form_Load()
Call starkoneksi
Set rs1 = New ADODB.Recordset
rs1.CursorLocation = adUseClient
rs1.Open "select * from tbpenyewa", koneksi, adOpenStatic
End Sub

VB6.0 :: Koneksi Database Access Menggunakan ADODB Dengan VB6



1. Buat satu database dan tabel pada access. Untuk tulisan kali ini saya menggunakan access 2007. Adapun caranya adalah sebagai berikut : 
Buka aplikasi access yang tersedia, kemudian klik New Blank Database seperti pada gambar dibawah ini.
Ubah file dari database yang akan dibuat seperti pada gambar dibawah kemudian klik browse untuk menyimpan kedalam folder penyimpanan file project dan database nanti. Pada tulisan ini saya masukkan pada folder dengan nama Catatan VB6.
Ubah save as type menjadi Microsoft Access Databases (2000-2003 format)-Kemudian tekan tombol OK - Kemudian tekan tombol create
Buat struktur field dengan menekan icon View dan pilih design view. Seperti pada gambar dibawah ini dan kemudian simpan tabel dengan nama pegawai.
Berikut struktur tabel yang harus dibuat :
Kemudian isi data pada tabel yang telah dibuat.

2. Setelah tabel dibuat, maka database pada program telah siap. Setelah itu jalankan Microsoft Visual Basic 6.0. Pilih Standard EXE-Tekan tombol Open.

3. Simpan project dengan nama koneksi dan form dengan frkoneksi. Kemudian tambahkan komponen datagrid pada form untuk menampilkan data dari tabel access yang telah dibuat sebelumnya. Dengan cara klik menu project pilih component.
4. Cari file .ocx dengan nama Microsoft DataGrid Control 6.0 (OLEDB). Kemudian tekan tombol OK. Dan akan muncul component datagrid pada toolbox.

5. Masukkan komponen datagrid pada form dengan cara klik icon toolbox datagrid dan geser ke arah form. Dan atur lebar datagrid seperti pada gambar berikut dan desain form seperti pada gambar.

6. Langkah berikutnya adalah mensetting koneksi ADODB agar bisa dimasukkan ke dalam file module. Adapun caranya adalah dengan mengklik menu project-references.
7. Cari file library dengan nama Microsoft ActiveX Data Object 2.6 Library dan kemudian centang dan tekan tombol OK.
8. Langkah berikutnya adalah memasukkan kode koneksi database melalui file module. Cara memasukkan file module adalah dengan mengklik menu project-add module-Open.
9. Masukkan code program untuk koneksi database dan tabel  pada file module yang telah dibuat dan setelah selesai simpan file module tersebut. Adapun kode program yang dimasukkan adalah sebagai berikut :
*) Untuk bagian yang diarsir, kode program disambung.
10. Masukkan kode program untuk koneksi ke database pada form dengan kode program sebagai berikut : 

11. Kemudian jalankan form yang telah dituliskan kode program dengan menekan tombol F5 atau icon Start. Dan berikut hasil kode program untuk koneksi ke database.

Demikian cara koneksi database Access menggunakan ADODB dengan VB6, dan jika ada pertanyaan mengenai pembahasan pada tulisan ini silahkan untuk berkomentar. Semoga pembaca dapat memahami apa yang saya tulis.

VB6.0 :: SOURCE CODE KONEKSI DATABASE DENGAN ADODB DI VB6.0



Option Explicit
Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
Dim mvBookMark As Variant

Public Sub Koneksi()
'buat string koneksi baru ke database
Set conn = New ADODB.Connection
'buka string koneksi ke database target
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\dbMedis.mdb;Persist Security Info=False"
'tentukan lokasi korsur sebagai client
conn.CursorLocation = adUseClient
End Sub

Sub tampilDataGrid()
'buka tabel Latihan
rs.Open "select * from TRANS_CEK_MEDIS", conn
'baca tabel anggota hingga record terakhir
With rs
 If Not (.BOF And .EOF) Then
 mvBookMark = .Bookmark
 End If
End With
'hubungkan datagrid ke tabel Latihan
Set DataGrid1.DataSource = rs.DataSource
End Sub



Private Sub Form_Load()
Call Koneksi
Call tampilDataGrid
End Sub

VB6.0 :: Code Simpan, Cari, Edit dan hapus data pada Visual Basic 6.0 dengan ADODC DAN ADODB


Berikut adalah comtoh penulisan code vb6 untuk simpan, cari, ubah dan hapus data dengan menggunakan Data Control, ADODC, dan ADODB. (codenya basic/pemula)

Code-code dibawah ini hanya sebatas code-code dasar untuk simpan, cari, ubah dan hapus, tidak disertakan code-code validasi, penanganan error ataupun code untuk koneksinya.




1. DATA CONTROL

Yang perlu diperhatian adalah bahwa Data Control membutuhkan index untuk pencarian yang selanjutnya untuk melakukan edit dan hapus data


#Simpan Data : 
Data1.Recordset.AddNew
Data1.Recordset!namakolom1 = Text1.Text
Data1.Recordset!namakolom2 = Text2.Text
Data1.Recordset.Update
Data1.Refresh


#Pencarian Data :
Data1.Recordset.Index = "KodeIdx"
Data1.Recordset.Seek "=", Textcari.Text
If Not Data1.Recordset.NoMatch Then
     Text1.Text = Data1.Recordset!namakolom1
     Text2.Text = Data1.Recordset!namakolom2
Else
     MsgBox "Maaf, Data Tidak Ditemukan!"
End if


#Edit Data :
Kode ini sebaiknya dijalankan setelah kode pencarian dijalankan terlebih dahulu.
Data1.Recordset.Edit
Data1.Recordset!namakolom1=Text1.Text
Data1.Recordset!namakolom2=Text2.Text
Data1.Recordset.Update
Data1.Refresh


#Hapus Data :
Kode ini sebaiknya dijalankan setelah kode pencarian dijalankan terlebih dahulu.
Data1.Recordset.Delete
Data1.Refresh



2. ADODC



#Simpan Data :
Adodc1.Recordset.AddNew
Adodc1.Recordset!namakolom1 = Text1.Text
Adodc1.Recordset!namakolom2 = Text2.Text
Adodc1.Recordset.Update
Adodc1.Refresh



#Pencarian Data :

Adodc1.Recordset.Find "namakolom1='" + Text1.Text + "'", , adSearchForward, 1
If Not Adodc1.Recordset.EOF Then
     Text1.Text = Adodc1.
red;">Recordset!namakolom Text2.Text = Adodc1.Recordset!namakolom2
Else
     MsgBox "Maaf, Data Tidak Ditemukan!"
End if


#Edit Data :
Kode ini sebaiknya dijalankan setelah kode pencarian dijalankan terlebih dahulu.

Adodc1.Recordset!namakolom1=Text1.Text
Adodc1.Recordset!namakolom2=Text2.Text
Adodc1.Recordset.Update
Adodc1.Refresh


#Hapus Data :
Kode ini sebaiknya dijalankan setelah kode pencarian dijalankan terlebih dahulu.
Adodc1.Recordset.Delete
Adodc1.Refresh



3. ADODB
Sebelum melangkah lebih jauh sebaiknya Anda membaca terlebih dahulu bagaimana koneksi database dengan menggunakan ADODB disini


#Simpan Data :
ado.Execute "INSERT INTO [nama tabel] VALUES ('" + Text1.Text + "','" +  Text2.Text + "')"


#Pencarian Data
Set Rs = New Adodb.Recordset
Rs.Open "SELECT * FROM [nama table1] WHERE [nama kolom1]='" + TextCari.Text + "'", ado
If Not rs.EOF Then
     Text1.Text = rs("namakolom1")
     Text2.Text = rs("namakolom2")
Else 
     MsgBox "Maaf, Data Tidak Ditemukan!"
End if 


#Edit Data

ado.Execute "UPDATE [nama tabel] Set [namakolom1]='" + Text1.Text + _
                    "',[namakolom2]='" + Text2.Text + _
                    "' WHERE [nama kolom1]='" + TextCari.Text + "'"

Code diatas tidak memerlukan lagi kode pencarian seperti code edit untuk DATA dan Adodc


#Hapus Data
ado.Execute "DELETE * FROM [nama tabel] WHERE [nama kolom1]='" + TextCari.Text + "'"

Code diatas tidak memerlukan lagi kode pencarian seperti code hapus untuk DATA dan Adodc

Sunday 21 June 2015

PHP :: Program Sistem Pakar Diagnosis Kerusakan Komputer Web Based



Berikut Spesifikasi Program Sistem Pakar Diagnosis Kerusakan Komputer.

Kelebihan :
  1. Menggunakan Framework Bootstrap
  2. Tampilan dinamis dan responsive
  3. GUI User Friendly
  4. Terintegrasi dengan Database
Kekurangan :
  1. Tidak memiliki kontrol admin
  2. Penambahan KB (Knowledge Base) Manual
  3. Aplikasi hanya untuk Client (User)
  4. Tidak memiliki sistem login
Berikut Tampilan Program Sistem Pakar Diagnosis Kerusakan Komputer.

Tampilan Menu Utama 


Program Sistem Pakar Diagnosis Kerusakan Komputer Web Based

Tampilan Menu Diagnosis


Program Sistem Pakar Diagnosis Kerusakan Komputer Web Based

Tampilan Diagnosis


Program Sistem Pakar Diagnosis Kerusakan Komputer Web Based

Berikut Link Download