none
Bagaimanal fill dataset jika join tabel? RRS feed

  • Pertanyaan

  • Jika query seperti contoh dibawah ini:

    cmd.CommandText = "SELECT Field1 from Table1"

    cmd.Connection = cnn

    myadapter.SelectCommand = cmd
    myadapter.Fill(mydataset, "Table1")

    yang saya belum tahu, bagaimana Fill dataset jika query seperti dibawah ini:

    cmd.CommandText = "SELECT a.Field1, b.Field2 from Table1 as a inner join Table2 as b on a.FieldC = b.FieldC"

    cmd.Connection = cnn

    myadapter.SelectCommand = cmd
    myadapter.Fill(mydataset, "?????")

    Keterangan:

    pada tanda tanya saya harus isi nama table yang mana? table1 atau table2? atau gimana?

    Terima kasih.

    Sabtu, 24 Maret 2012 16.34

Jawaban

  • Setelah mempelajari query yang Anda buat, yaitu:

    SELECT a.Field1, b.Field2 from Table1 as a inner join Table2 as b on a.FieldC = b.FieldC

    Baru saya menyadarinya bahwasannya tidak pernah ada metode untuk menyimpan table yang sedang di-join. Dan sejauh yang saya ketahui, apabila ada table yang sedang di-join, maka record/row-nya tidak bisa di addnew/edit/delete. 

    Mengenai cara menggabungkan (join) table pada DataSet. Anda bisa menggunakan DataRelation. Insya Allah bila ada waktu saya akan buat thread/artikel tersebut. Kalo Anda sedang terburu-buru, dan kebetulan Anda punya MSDN, cari aja artikel mengenai DataRelation.

    Mengingat Anda bukanlah pengguna DataSet yang fanatik seperti saya, bagaimana kalo kode yang Anda buat ini:

    myadapter.Fill(mydataset, "Namatable")

    Diganti menjadi:

    myadapter.Fill(Namatable)

    Tambahan: NamaTable diatas sengaja digarisi, dengan maksud itu bukanlah string, melainkan variabel DataTable yang telah Anda deklarasikan.

    Minggu, 25 Maret 2012 14.17

Semua Balasan

  • Saya masih belum nyambung dengan apa yang Anda maksud. Apakah Anda bermaksud membuat entity relationship? Kasih contoh record dan nama kolomnya dong.
    Minggu, 25 Maret 2012 07.15
  • Mas Wahyu, sebelumnya terima kasih sudah merepson pertanyaan saya diatas.

    CMIIW (Correct Me If I'm Wrong)

    Pasti Mas Wahyu ngerti dengan coding dibawah ini kan?

    myadapter.Fill(mydataset, "Namatable")

    penggunaan coding seperti diatas, itu kalau querynya dari satu tabel.

    Kalau kita mau menggabungkan record dari dua table atau lebih (JOIN TABLE) kedalam sebuah dataset gimana?

    Terima kasih.

    Minggu, 25 Maret 2012 13.28
  • Setelah mempelajari query yang Anda buat, yaitu:

    SELECT a.Field1, b.Field2 from Table1 as a inner join Table2 as b on a.FieldC = b.FieldC

    Baru saya menyadarinya bahwasannya tidak pernah ada metode untuk menyimpan table yang sedang di-join. Dan sejauh yang saya ketahui, apabila ada table yang sedang di-join, maka record/row-nya tidak bisa di addnew/edit/delete. 

    Mengenai cara menggabungkan (join) table pada DataSet. Anda bisa menggunakan DataRelation. Insya Allah bila ada waktu saya akan buat thread/artikel tersebut. Kalo Anda sedang terburu-buru, dan kebetulan Anda punya MSDN, cari aja artikel mengenai DataRelation.

    Mengingat Anda bukanlah pengguna DataSet yang fanatik seperti saya, bagaimana kalo kode yang Anda buat ini:

    myadapter.Fill(mydataset, "Namatable")

    Diganti menjadi:

    myadapter.Fill(Namatable)

    Tambahan: NamaTable diatas sengaja digarisi, dengan maksud itu bukanlah string, melainkan variabel DataTable yang telah Anda deklarasikan.

    Minggu, 25 Maret 2012 14.17
  • Mas Wahyu, akhirnya bisa juga saya join table lalu masukkan ke dataset.

    dibawah ini coding yang saya gunakan:

    cmd.CommandText = "select a.waktu, a.jumlah, b.namalengkap from tbrekappendapatan as a inner join tbuser as b on a.op = b.kduser where month(a.waktu)='" & Month(Now) & "'"
    cmd.Connection = cnn

    myadapter.SelectCommand = cmd
    myadapter.Fill(mydata, "tbrekappendapatan")

    GridView1.DataSource = mydata
    GridView1.DataBind()

    Dan hasilnya seperti gambar dibawah ini:




    Minggu, 25 Maret 2012 17.06
  • Wooow kereeen. Saya mencoba mereka-reka tabel yang Anda buat seperti ini:

    Rekap Pendapatan: Waktu, Jumlah

    User: Nama Lengkap

    Sebetulnya SQL yang Anda gunakan bisa dipermudah lagi seperti ini:

    Select

       [Rekap Pendapatan].waktu, [Rekap Pendapatan].jumlah, User.[Nama Lengkap]

    From

       [rekap pendapatan], user

    Where

       [PrimaryKey Rekap Pendapatan] = [PrimaryKey User] and month(a.waktu)='" &

       Month(Now) & "'"

    Walau begitu saya tidak berani menjamin keakuratan sql diatas, lantaran saya tidak memiliki kedua data tabel tersebut, hehehe.

    Tambahan: yang ditebali plus digaris bawahi adalah nama tabel dan nama kolom yang menjadi penghubung, semisal User.ID, atau [Rekap Pendapatan].ID. Yah, yang pasti Anda yang lebih tahu. Omong-omong, yang Anda gunakan itu WindowsForm atau WindowsPresentationForm?



    Minggu, 25 Maret 2012 17.58
  • Mas Wahyu,

    saya mengcopy-paste pernyataan SQL anda diatas seperti dibawah ini:

    select [Rekap Pendapatan].waktu, [Rekap Pendapatan].jumlah, User.[Nama Lengkap] from [rekap pendapatan], user Where [PrimaryKey Rekap Pendapatan] = [PrimaryKey User], month(a.waktu)='" & Month(Now) & "'"

    kalau saya tidak salah, yang benarkan seperti ini:

    select [Rekap Pendapatan].waktu, [Rekap Pendapatan].jumlah, User.[Nama Lengkap] from [rekap pendapatan], user Where [ForeignKey Rekap Pendapatan] = [PrimaryKey User], month(a.waktu)='" & Month(Now) & "'"

    Btw, Terima kasih sudah meluangkan waktu me-reply postingan saya.

    Senin, 26 Maret 2012 03.07
  • Nah itu dia, saya gak tahu itu primary key atau foreign key. Ditambah lagi saya gak punya tabel dan recordnya, kan, hehehe. Jadi...itu kebetulan saja rumus tersebut melintas di kepala saya. Pasti Anda lebih tahu lah dari saya, hehehe.

    Pada dasarnya, dalam men-join tabel. Yang diperlukan adalah field/datacolomn yang telah di-index. Jadi bila field/datacolomn tersebut memiliki index, maka proses join tabel bisa berjalan sukses. Sayangnya, sejauh yang saya ketahui, dalam database konvensional, maksimum field/datacolomn yang bisa di-index cuma sampai sepuluh.

    Sekali lagi, seperti yang telah saya tulis, saya hanya mereka-reka tabel yang Anda miliki. Dan syntax sql yang saya kirim tadi malam memiliki kesalahan, dan telah saya edit.

    Selamat ber-happy coding selalu.

    Senin, 26 Maret 2012 03.30