Minggu, 17 Februari 2013

Menampilkan data dari dua tabel database ke datagrid vb 6



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:






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



'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.....
 

 

42 komentar:

  1. Keren gan, thanks!
    Tapi ko ada judul buku "ewe"? :D

    BalasHapus
  2. Terima kasih sudah dibilang keren. ewe itu cuma contoh,gan. Yang penting kan tekniknya. =D

    BalasHapus
  3. gan,,, 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

    sql = "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

    BalasHapus
  4. Saudara M. Hamid Saputra.

    Dalam 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...

    BalasHapus
  5. mantep bang coretannya sangat membantu...
    saya ada pertanyaan mohon dijawab sebagai yg lebih tau,,,hehehe
    saya mau menampilkan beberapa fields dalam satu column di datagrid bagaimana caranya bang??

    BalasHapus
    Balasan
    1. Sebelumnya terima kasih sudah mampir. Saya hanya tahu sedikit, saya yang newbi ini hanya ingin berbagi saja.
      Mungkin 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.

      Hapus
  6. bang nanya bang..
    klo 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

    BalasHapus
    Balasan
    1. Ada yang masuk rupanya. Sudah lama saya tidak membuka blog ini...
      Mas/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...

      Hapus
  7. Call konek
    sql = "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 ?

    BalasHapus
    Balasan
    1. Begitu ya, gan. Baiklah, mungkin penjabaran ini bisa sedikit membantu:
      Secara 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...

      Hapus
  8. mau nanya nii mas ,
    kalau 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

    BalasHapus
    Balasan
    1. Masak langsung minta script sih, mbak? Coba dulu dong.. Hehe
      Untuk 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...

      Hapus
  9. mau nanya ni gan scrip join tabel gimana , itu scripnya d sql atau d vb ??

    BalasHapus
    Balasan
    1. Maksud agan, penerapannya di sql atau vb itu perintah sql diterapkan di database atau di vb ya?
      Kalau seperti itu pertanyaannya: tergantung kebutuhan, gan. Sql bisa diterapkan di keduanya.

      Hapus
  10. mohon pencerahannya gan
    sql = "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

    BalasHapus
    Balasan
    1. Begitu ya, gan. Apakah agan sudah membuat koneksi? Coba cek dulu koneksinya..

      Untuk 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..

      Hapus
    2. https://projects.co.id/public/program/promo/8d8211/5362mm

      Hapus
  11. gan punyaku problem dari sql .. sql itu buat apa an, ya

    BalasHapus
    Balasan
    1. Sql itu bahasa, gan. Jadi, sql itu buat berkomunikasi.
      Saya 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.

      Hapus
  12. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  13. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  14. sudah nulis sama seperti di atas
    di jamin tetep error

    BalasHapus
    Balasan
    1. Ah masak...?
      Masak 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..!

      Hapus
    2. koneksi

      Public 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

      Hapus

    3. Coba 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..

      Hapus
    4. koneksi lancar gan , udah saya periksa tanpa menggunakan perintan left join
      tutorial 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 ( , ) )

      Hapus
    5. Kalau kamu menganggapnya begitu ya sudah..
      Di 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 ..

      Hapus
    6. sql = "select buku.kode_buku,buku.kode_jenis,jenis.jenis,buku.judul_buku,"
      maaf 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

      Hapus
    7. Selamat, anda telah belajar.. Itu yang saya maksud. Semoga anda mengerti kenapa tutorial di tulis seperti itu..
      Dan 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

      Hapus
  15. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  16. Berhasil gan... mantabssss,,,
    tengkyu..tengkyu..

    BalasHapus
    Balasan
    1. Sama-sama, gan.. Senang bisa membantu dan terima kasih sudah mampir ke blognya newbi..

      Hapus
  17. Mohon 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

    BalasHapus
  18. gan, deklarasi dari buka itu gimana ya? maaf newbe

    BalasHapus
  19. Maaf gan saya mau tanya??
    Untuk 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

    BalasHapus
  20. gan mau nanya kalau cara koding untuk ngehapus 2 tabel gimana?mohon dibalas secepatnya?

    BalasHapus
  21. gan 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

    email:andiariana2@gmail.com kalo gan gk sempet bales di komen thanks

    BalasHapus
  22. gan.. ane mampir and mau nanya..
    cooding 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

    BalasHapus
  23. ditungu commentnya gan disini, kalo bisa dikirim ya gan ke email chandra.bagas0115@gmail.com
    thanks gan

    BalasHapus
  24. Komentar ini telah dihapus oleh pengarang.

    BalasHapus

  25. Tolong 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

    BalasHapus