Baiklah.....
Pada tulisan kali saya ingin berbagi sedikit pengetahuan tentang teknik relasi antar tabel, dimana saya akan menulis cara menampilkan data dari dua tabel database. Mungkin sudah banyak orang tahu teori ini, tapi tidak ada salahnya jika saya menulis lagi. Pada dasarnya ada banyak cara, seperti kata pepatah lama yaitu banyak jalan menuju Roma, yah.. banyak jalan. Kita bisa lewat jalur udara, darat atau laut, okelah itu hanya sebuah analogi dan langsung saja saya akan memulai menulis. Pada coretan ini nanti saya menggunakan visual basic 6.0. Saya contohkan ada dua tabel database yaitu tabel jenis dan tabel buku, lihat gambar dibawah ini untuk tabelnya:
Data tabel jenis:
Pada tulisan kali saya ingin berbagi sedikit pengetahuan tentang teknik relasi antar tabel, dimana saya akan menulis cara menampilkan data dari dua tabel database. Mungkin sudah banyak orang tahu teori ini, tapi tidak ada salahnya jika saya menulis lagi. Pada dasarnya ada banyak cara, seperti kata pepatah lama yaitu banyak jalan menuju Roma, yah.. banyak jalan. Kita bisa lewat jalur udara, darat atau laut, okelah itu hanya sebuah analogi dan langsung saja saya akan memulai menulis. Pada coretan ini nanti saya menggunakan visual basic 6.0. Saya contohkan ada dua tabel database yaitu tabel jenis dan tabel buku, lihat gambar dibawah ini untuk tabelnya:
Data tabel jenis:
Data tabel buku:
Nah.., selanjutnya akan ditampilkan di datagrid di vb enam.
Nanti tampilannya akan seperti dibawah ini.
Lihat per bedaannya…
Yah.., telah ditambahkan jenis buku ke dalamnya…
Dan ini adalah codingnya:
Lakukan langkah-langkah ini:
'Tulis prosedur dibawah ini yang berfungsi untuk mengatur kolom datagrid
'Caption berfungsi untuk mengatur nama field
'width untuk mengatur panjang karakter
Sub kolom()
DataGrid1.Columns(0).Caption = "Kode buku"
DataGrid1.Columns(0).Width = "1000"
DataGrid1.Columns(1).Caption = "Kode jenis"
DataGrid1.Columns(1).Width = "1000"
DataGrid1.Columns(2).Caption = "Jenis buku"
DataGrid1.Columns(2).Width = "1500"
DataGrid1.Columns(3).Caption = "Judul buku"
DataGrid1.Columns(3).Width = "3000"
End Sub
Lakukan langkah-langkah ini:
'Tulis prosedur dibawah ini yang berfungsi untuk mengatur kolom datagrid
'Caption berfungsi untuk mengatur nama field
'width untuk mengatur panjang karakter
Sub kolom()
DataGrid1.Columns(0).Caption = "Kode buku"
DataGrid1.Columns(0).Width = "1000"
DataGrid1.Columns(1).Caption = "Kode jenis"
DataGrid1.Columns(1).Width = "1000"
DataGrid1.Columns(2).Caption = "Jenis buku"
DataGrid1.Columns(2).Width = "1500"
DataGrid1.Columns(3).Caption = "Judul buku"
DataGrid1.Columns(3).Width = "3000"
End Sub
'Pada form_load tuliskan coding ini:
'keterangan coding ini adalah:
'Memilih data di tabel jenis dan tabel buku dengan menggunakan perintah left join
Private Sub Form_Load()
Call buka
sql = "select buku.kode_buku,buku.kode_jenis,jenis.jenis,buku.judul_buku, " & _
" from buku left join jenis on buku.kode_jenis=jenis.kode_jenis"
rs.Open sql, konek, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs
kolom
End Sub
Selamat mencoba.....
Semoga bermanfaat.....
'keterangan coding ini adalah:
'Memilih data di tabel jenis dan tabel buku dengan menggunakan perintah left join
Private Sub Form_Load()
Call buka
sql = "select buku.kode_buku,buku.kode_jenis,jenis.jenis,buku.judul_buku, " & _
" from buku left join jenis on buku.kode_jenis=jenis.kode_jenis"
rs.Open sql, konek, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs
kolom
End Sub
Selamat mencoba.....
Semoga bermanfaat.....
Keren gan, thanks!
BalasHapusTapi ko ada judul buku "ewe"? :D
Terima kasih sudah dibilang keren. ewe itu cuma contoh,gan. Yang penting kan tekniknya. =D
BalasHapusgan,,, ane mw buat relasi di form pembelian. ane buat scrift kyak gni.... di tabel pembelian yang data tamunya yaitu kd_pemasok dari tabel pemasok dan user_id dri tabel pengguna,, koq coding ny debug y gan,,, kesalahan menunjukkan di rs.Open sql, konek, adOpenDynamic, adLockOptimistic
BalasHapussql = "select pembelian.no_masuk,pembelian.tgl_masuk,pemasok.kd_pemasok,pembelian.cara_bayar,pembelian.status_bayar,pembelian.tgl_bayar,pembelian.tot_bayar,pengguna.user_id," & _
" from pemasok left join pengguna on pemasok.kd_pemasok=pengguna.user_id"
rs.Open sql, konek, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs
terimakasih
Saudara M. Hamid Saputra.
BalasHapusDalam kasus anda ini, kalau saya melihat script anda. Anda menggunakan 3 table.
Jadi, anda harus join dulu dari tabel pembelian ke pemasok, kemudian dari tabel pembelian ke pengguna.
Dan coding anda juga ada sedikit kesalahan yaitu: "pemasok.kode_pemasok=pengguna.user_id", untuk bagian ini coba bandingkan dengan postingan saya.
Mungkin contoh relasi 3 tabel ini bisa sedikit membantu:
SELECT pembelian.no_pembelian, suplier.nama_suplier,pengguna.nama FROM pembelian
LEFT JOIN suplier on pembelian.kode_suplier=suplier.kode_suplier LEFT JOIN
pengguna on pembelian.nama_pengguna=pengguna.nama_pengguna
Selamat mencoba...
mantep bang coretannya sangat membantu...
BalasHapussaya ada pertanyaan mohon dijawab sebagai yg lebih tau,,,hehehe
saya mau menampilkan beberapa fields dalam satu column di datagrid bagaimana caranya bang??
Sebelumnya terima kasih sudah mampir. Saya hanya tahu sedikit, saya yang newbi ini hanya ingin berbagi saja.
HapusMungkin anda mau membuat search engine atau pencarian file data dengan kode tertentu.
Tambahkan comand buton di form anda, kemudian pada codingnya tulis ini;
Private Sub cari_Click()
Dim op As New ADODB.Recordset
Call buka
sql = "select * from jenis"
rs.Open sql, konek, adOpenDynamic, adLockOptimistic
rs.Filter = "no='" & Text1.Text & "'"
If rs.EOF = False Then
Text1.Text = rs.Fields("no")
Text2.Text = rs.Fields("jenis")
Set DataGrid1.DataSource = rs
Else
MsgBox "data tidak ditemukan", vbInformation, "pesan"
op.Open "jenis", konek, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = op
End If
End Sub
Keterangan:
Saya contohkan data jenis sepatu.
Keterangan program: mengambil data jenis dari tabel jenis, kemudian mencari data dari jenis melalui text1 dan akan ditampilkan di text dan datagrid.
Jika anda mau mencari berdasarkan nama yang sama, cara ini juga bisa dipakai.
Jika hanya ingin tampil satu baris di datagrid saja, textnya tidak perlu dimasukkan.
bang nanya bang..
BalasHapusklo mau misal dalam kasus relasi antar tabel ini, ada pengeditan data, gmana caranya biar data yg kita hapus atau edit dalam satu tabel relasi, juga berubah ditabel utamanya
Ada yang masuk rupanya. Sudah lama saya tidak membuka blog ini...
HapusMas/mbak Anonim, Mungkin yang anda maksud adalah mengedit 2 tabel atau menghapusnya dalam 1 form? Nah kalau seperti itu, anda tampilkan dulu di form menggunakan pencarian atau edit seperti komentar diatas anda itu, tapi dengan catatan anda jangan menggunakan coding itu, tapi menggunakan teknik relasi seperti postingan saya. Setelah tampil, anda tinggal tuliskan coding perintah hapus atau update (tanpa relasi) tapi dalam satu comand yang isinya mengarah ke dua tabel objek. Selamat mencoba.. Terima kasih sudah mampir.. Semoga sukses...
Call konek
BalasHapussql = "select TUGsembilan.No_Surat, TUGsembilan.Nama_Material,TUGsembilan.Merk, TUGsembilan.Jumlah, TUGsepuluh.Jumlah, " & _
"from TUGsembilan left join on TUG.sembilan.Nama_Material=TUGsepuluh.Nama_Material"
rs.Open sql, CN, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs
gan, error trus dibgian rs.Open sql, CN, adOpenDynamic, adLockOptimistic , apa masih ada yg salah ?
Begitu ya, gan. Baiklah, mungkin penjabaran ini bisa sedikit membantu:
HapusSecara teknis koneksinya sudah benar, jika itu adalah pendeklarasian dari ini:
Public CN As New ADODB.Connection
Public rs As New ADODB.Recordset
Public sql As String
Dari itu, menghasilkan pemanggilan ini:
rs.Open sql, CN, adOpenDynamic, adLockOptimistic
Jadi, bisa ditarik kesimpulan "itu sudah benar".
Jadi, kemungkinan jika itu error, ada kesalahan coding diatasnya sehingga dia tidak mengenali.
Coba dilihat baris ke empat anda:
"from TUGsembilan left join on TUG.sembilan.Nama_Material=TUGsepuluh.Nama_Material"
TUGsembilan, bukan TUG.sembilan dan juga ada sedikit kekurang telitian.
Coba pakai ini:
"FROM TUGsembilan LEFT JOIN " & _
"TUGsepuluh ON TUGsembilan.Nama_Material=TUGsepuluh.Nama_Material"
Semoga membantu...
mau nanya nii mas ,
BalasHapuskalau mau buat misalkan qt masukin no nota , trus qt mau nambah data ,
nahhh....tanpa dimasukin no nota (otomatis terisi sendri) scriptnya gmna ya ??
ma kasih
Masak langsung minta script sih, mbak? Coba dulu dong.. Hehe
HapusUntuk penomoran otomatis anda bisa klik tab menu 1 di blog ini, lalu gulir ke bawah dan pilih yang penomoran otomatis, baru saja saya posting. Semoga membantu, selamat belajar...
mau nanya ni gan scrip join tabel gimana , itu scripnya d sql atau d vb ??
BalasHapusMaksud agan, penerapannya di sql atau vb itu perintah sql diterapkan di database atau di vb ya?
HapusKalau seperti itu pertanyaannya: tergantung kebutuhan, gan. Sql bisa diterapkan di keduanya.
mohon pencerahannya gan
BalasHapussql = "select barang.kode_barang, barang.nama_barang, barang.harga, stok_opname.sisa from barang left join stok_opname on barang.id_barang=stok_opname.id_barang"
rs.Open sql, konek, adOpenDynamic, adLockOptimistic
dibagian rs.Open sql, konek, adOpenDynamic, adLockOptimistic
error gan dan setelah sya soroti konek=empty
selanjutnya gan data hasil relasi tsb akan sya tampilkan ditextbox bagaimana ya gan caranya
ket : 1. diambil dari tabel barang : txtkode=kode_barang, txtnama=nama_barang, txtharga=harga
2. diambil dari tabel stok_opname : txtstok=sisa
tks sblumnya gan dan saya tunggu petunjuknya gan
Begitu ya, gan. Apakah agan sudah membuat koneksi? Coba cek dulu koneksinya..
HapusUntuk menampilkan data dari dua tabel ke text, sebenarnya jawaban dari pertanyaan anonim itu adalah jawabannya. Tapi baiklah, mumpung saya sedang sempat nulis, saya akan coba beri petunjuk.
Pertama adalah tambahkan combobox, lalu click dua kali dan ubah change menjadi click, seperti ini==> Combo1_Click()
lalu berikan coding ini di dalammnya, sesuaikan dengan database anda, gan!
Call buka
sql = "select barang.id_barang, barang.nama, barang.harga, " & _
"stock_opname.sisa from barang left join stock_opname on barang.id_barang=stock_opname.id_barang"
d.Open sql, konek1, adOpenDynamic, adLockOptimistic
d.Filter = "id_barang='" & Combo1.Text & "'"
If Not d.EOF Then
Text1.Text = d.Fields("nama")
Text2.Text = d.Fields("harga")
Text3.Text = d.Fields("sisa")
End If
Keterangan:
Mengambil data dari barang dan stock_opname dengan keyword id_barang, selanjutnya akan ditampilkan di text1, 2 dan 3.
#Semoga membantu..
https://projects.co.id/public/program/promo/8d8211/5362mm
Hapusgan punyaku problem dari sql .. sql itu buat apa an, ya
BalasHapusSql itu bahasa, gan. Jadi, sql itu buat berkomunikasi.
HapusSaya coba jelaskan pakai analogi:
Semisal ada 2 orang dengan suku berbeda, dan mereka hanya bisa bahasa suku mereka. Nah, supaya mereka bisa berkomunikasi maka harus ada bahasa yang dimengerti.. Mungkin si A bisa belajar bahasa si B, atau sebaliknya.
Tapi karena mereka tinggal di sebuah negara, saya ambil contoh negara Indonesia.
Orang Dayak ketemu Jawa, mereka berkomunikasi menggunakan bahasa Indonesia. Jadi, bahasa Indonesia adalah sql itu..
Nah, dari analogi itu saya harap agan sudah mengerti.
Nb: Anda bisa membuat program visual basic tanpa bahasa sql juga bisa, dengan catatan anda memakai bahasa murni dari vb 6 itu sendiri.
Komentar ini telah dihapus oleh pengarang.
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapussudah nulis sama seperti di atas
BalasHapusdi jamin tetep error
Ah masak...?
HapusMasak di tulis sama sih..? Databasenya apa juga sama..?
Sudah buat koneksi apa belum..?
Databasenya sudah sesuai dengan koding apa belum..?
Bisa anda tuliskan disini database anda, koneksi anda?
Mari di analisa..
Satu pesan dari saya, gan "programer itu tentang memahami coding, harus tahu alurnya, bukan hafalan atau sekedar copy paste.."
Sekali lagi, coba tuliskan disini coding yang anda pakai beserta databasenya dan koneksinya..!
koneksi
HapusPublic cn As ADODB.Connection
Public rs As ADODB.Recordset
Sub koneksi()
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.jet.oledb.4.0; data source = " & App.Path & "\database.mdb;"
cn.Open
Form1.Show
End Sub
kolom
Sub kolom()
Call koneksi
DataGrid1.ColumnHeaders = True
For i = 0 To 1
DataGrid1.Columns.Add (i)
Next
DataGrid1.Columns(0).Caption = "Kode buku"
DataGrid1.Columns(0).Width = "1000"
DataGrid1.Columns(1).Caption = "Kode jenis"
DataGrid1.Columns(1).Width = "1000"
DataGrid1.Columns(2).Caption = "Jenis buku"
DataGrid1.Columns(2).Width = "1500"
DataGrid1.Columns(3).Caption = "Judul buku"
DataGrid1.Columns(3).Width = "3000"
End Sub
coding inner join
Private Sub Form_Load()
Call koneksi
kolom
Set rs = New ADODB.Recordset
SQL = "select buku.kode_buku,buku.kode_jenis,jenis.jenis,buku.judul_buku," & _
" from buku left join jenis on buku.kode_jenis=jenis.kode_jenis"
rs.Open SQL, cn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs
End Sub
mohon bantuan nya mas
HapusCoba kamu periksa ulang koneksimu..!
Pada kolomnya tidak perlu pakai perulangan..
Dan untuk perintah sql di form_load itu juga kamu periksa ulang, ada perintah yang tidak sinkron dengan koneksimu..
Bagaimana dengan tabel databasemu..?
Selamat mencoba..! Good luck..
koneksi lancar gan , udah saya periksa tanpa menggunakan perintan left join
Hapustutorial agan salah di bagian
sql = "select buku.kode_buku,buku.kode_jenis,jenis.jenis,buku.judul_buku," &
,buku.judul_buku," & (harus nya punction gak di akhiri dengan ( , ) )
Kalau kamu menganggapnya begitu ya sudah..
HapusDi koneksi kamu itu ada sqlnya apa tidak..?
Kamu mendeklarasikan perintah join dengan perantara kata sql, sedangkan di koneksi kamu tidak ada kata sqlnya..?
Kamu bilang:
utorial agan salah di bagian
sql = "select buku.kode_buku,buku.kode_jenis,jenis.jenis,buku.judul_buku," &
,buku.judul_buku," & (harus nya punction gak di akhiri dengan ( , ) )
Kok bisa di bilang akhiran? buku.judul_buku, setelah tanda , ada " & _ itu adalah tanda untuk berpindah baris dalam visual basic 6.0 dan akhirannya adalah jenis.kode_jenis" dengan akhiran tanda "
Wah, agan sudah bisa menyalahkan, Pasti agan programer hebat.. berarti agan sudah master.. Berarti saya yang newbi ini tidak harus menjelaskan lebih jauh lagi, karena agan tentunya lebih hebat dari saya..
Terima kasih sudah mampir di tempat newbi dan menyempatkan membaca coretan saya ..
sql = "select buku.kode_buku,buku.kode_jenis,jenis.jenis,buku.judul_buku,"
Hapusmaaf Di bagian akhir punya saya tidak di kasih tanda (, ) langsung
sql = "select buku.kode_buku,buku.kode_jenis,jenis.jenis,buku.judul_buku"
begini punya saya baru bisa jalan
Selamat, anda telah belajar.. Itu yang saya maksud. Semoga anda mengerti kenapa tutorial di tulis seperti itu..
HapusDan saya senang anda telah mampir kemari..
Saya beri coding koneksi jika anda menggunakan database acces..
Mungkin ini bisa berguna dan bisa jadi acuan untuk tingkat lanjut..
Public konek As New ADODB.Connection
Public rs As New ADODB.Recordset
Public sql As String
Sub koneksi()
sql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "/jual.mdb"
If konek.State = adStateOpen Then
konek.Close
Set konek = New ADODB.Connection
End If
konek.Open (sql)
End Sub
Komentar ini telah dihapus oleh pengarang.
BalasHapusBerhasil gan... mantabssss,,,
BalasHapustengkyu..tengkyu..
Sama-sama, gan.. Senang bisa membantu dan terima kasih sudah mampir ke blognya newbi..
HapusMohon bantuannya gan.. Dikit bingung nih gan.. Gmn logikanya.. Ane mau update stock barang pd tbl barang jika kita mau menghapus data pembelian pada detail pembelian yg trdiri dari beberapa kodebarang dengan no nota sama.. Klo dihapius satu satu dah berhasil.. Klo hapusnya semua dgn no nota yg sama namun stock berubah berdsarkan kode barang yg terhapus. Menggunakan perulangan gan.. Mohon dibantu gan.. Kirim ke jasril. Ujang@gmail.com
BalasHapusgan, deklarasi dari buka itu gimana ya? maaf newbe
BalasHapusMaaf gan saya mau tanya??
BalasHapusUntuk menginput 3 tabel sekaligus supaya bisa runing di datagrid nya,, gimana cara nya ya???
Terus database nya yg enak pake apa??
Sekalian sama codingan nya gan??
Kalo agan sempat kirim jawaban pertanyaan saya d atas via email ya gan,,
Nasripinputra@gmail.com.
Sangat d tunggu gan,, heheheh
gan mau nanya kalau cara koding untuk ngehapus 2 tabel gimana?mohon dibalas secepatnya?
BalasHapusgan mau nanya ni..tp saya gk make sql...gimana caranya menampilkan isi dari salah satu field data grid ke form text form lain?saya sudah coba pake adodc tapi yang bisa ditampilin cuma fieldnya bukan isinya
BalasHapusemail:andiariana2@gmail.com kalo gan gk sempet bales di komen thanks
gan.. ane mampir and mau nanya..
BalasHapuscooding buat nampilin data tabel secara looping ke tabel gimana ya gan?
contoh kasus: tabel mata pelajaran, ane mau buat form nilai.. nah bingungnya yaitu cara supaya semua mata pelajaran langsung muncul dan tabel bisa ditambahkan nilai pada masing - masing mata pelajaran..
kalo satu nampilinnya, UInya nda enak gan.. mohon bantuannya dan pencerahannya gan.. thanks
ditungu commentnya gan disini, kalo bisa dikirim ya gan ke email chandra.bagas0115@gmail.com
BalasHapusthanks gan
Komentar ini telah dihapus oleh pengarang.
BalasHapus
BalasHapusTolong bantuannya gan, untuk syntax
“ adOpenDynamic dan adLockOptimistic “ tidak terbaca di Vb.net 2013
Dan “ konek “ di baris 6 itu apa iya?
Nama variabel atau apa
Terima kasih
konek itu variabel dari ADODB.CONNECTION
Hapus