Menampilkan Data Sesuai Keinginan pada DatagridView ke Crystal Report (TOP Query) pada C#

Menampilkan Data Sesuai Keinginan pada DatagridView ke Crystal Report (TOP Query) - TOP digunakan untuk mencari data teratas pada database. Query ini bisa digunakan dengan memanggil jumlah yang sudah diinputkan user. Berikut tampilan formnya :
ditampilkan data seluruhnya kemudian pada comboBox semester jika dipilih maka akan menghasilkan jumlah penerima yang sudah diinputkan sebelumnya. Atau user bisa saja menginputkan sendiri jumlah yang ingin ditampilkan.


Misal disini saya memilih tahun 2013 semester Gasal dan saya masukkan jumlah beasiswa 2, maka dengan button cari datagridview terisi 2 data teratas yang diinginkan.
berikut coding untuk menampilkan data dengan TOP.
saya menggunakan adapter disini untuk memanggilnya, dan access sebagai databasenya.

OleDbDataAdapter adapterpenerimatop;
        DataTable dtpenerimatop = new DataTable();
        DataView dvpenerimatop = new DataView();

        private void TampilkanDataTop()
        {
            adapterpenerimatop = new OleDbDataAdapter("SELECT TOP " + (Convert.ToInt32(textBox1.Text)) + " siswa.NoInduk, siswa.NamaSiswa, siswa.Kelas, epositif.TotalP, enegatif.TotalN, [TotalN]/([TotalP]+[TotalN]) AS Hamparan, siswa.TahunAjaran, siswa.Semester FROM (siswa INNER JOIN enegatif ON siswa.NoInduk = enegatif.NoInduk) INNER JOIN epositif ON siswa.NoInduk = epositif.NoInduk WHERE (((siswa.TahunAjaran)='"+comboBox1.Text+"' AND Semester = '"+comboBox4.Text+"')) ORDER BY [TotalN]/([TotalP]+[TotalN]) DESC", MyData.Connection);
           dtpenerimatop.Clear();
            adapterpenerimatop.Fill(dtpenerimatop);
            dvpenerimatop = dtpenerimatop.DefaultView;
            dataGridView1.DataSource = dvpenerimatop;
        }



Jika sudah diketaui data yang diinginkan kemudian user dapat mencetaknya atau mengeksport ke excel data yang ditampilkan. JIka dipilih cetak maka akan tampil seperti dibawah ini.


code button cetak

AdapterHamparan adpHamparan = new AdapterHamparan();
        DataSet1 dsReport = new DataSet1();

        private void button4_Click(object sender, EventArgs e)
        {
            LapPenerimaBeasiswa neraca = new LapPenerimaBeasiswa();
            neraca.Show();

            OleDbDataAdapter adapterpenerimatop;
            DataTable dtpenerimatop = new DataTable();
            DataView dvpenerimatop = new DataView();
            DataSet1 dv = new DataSet1();

            TampilkanDataTop; // memanggil fungsi yang sudah dibuat sebelumnya dengan TOP

            dtpenerimatop.Clear();
            adapterpenerimatop.Fill(dtpenerimatop);
            dvpenerimatop = dtpenerimatop.DefaultView;
            dataGridView1.DataSource = dvpenerimatop;

            dtpenerimatop = dataGridView1.DataSource as DataTable;

          
            rptpenerima cos = new rptpenerima();

            cos.SetDataSource(dvpenerimatop);
            
            neraca.crystalReportViewer1.ReportSource = cos;
            
            neraca.crystalReportViewer1.Refresh();

        }

code untuk export ke excel

Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
            app.Visible = true;

            try
            {
                worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets["Sheet1"];
                worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.ActiveSheet;
                worksheet.Name = "Exported from Beasiswa";
                for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
                {
                    worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
                }

                for (int i = 0; i < dataGridView1.Rows.Count + 1; i++)
                {
                    for (int j = 0; j < dataGridView1.Columns.Count; j++)
                    {
                        worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
                    }
                }

                string fileName = String.Empty;
                saveFileExcel.Filter = "Excel files |*.xls|All files (*.*)|*.*";
                saveFileExcel.FilterIndex = 2;
                saveFileExcel.RestoreDirectory = true;

                if (saveFileExcel.ShowDialog() == DialogResult.OK)
                {
                    fileName = saveFileExcel.FileName;
                    workbook.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                }
                else
                    return;


            }
            catch
            //(System.Exception ex)
            {
                //MessageBox.Show("Gagal menyimpan: \n" + ex.Message);
            }
            finally
            {
                app.Quit();
                workbook = null;
                app = null;
            }



saya menggunakan adapter dalam pengaksesan datanya, kemudian untuk databasenya saya buat dengan DataSet yang dihubungkan ke Database master yaitu access 2007.
Jika ada kekurangan dalam postingan saya ini, mohon kesediaannya untuk menambahkan.. ditunggu komentarnya.. :)

5 komentar

Mbak klau boleh saya minta listing kalau database nya pakai MYSQL
karena saya suka sekali pakai database itu.Demikian terimakasih banyak
saya di http://jlw-belajar.blogspot.com

[ASK] mba, kalau membuat bordernya, gimana ya mba , kasih saran yah mba, terima kasih :)

mbak, gimana ya menampilkan sebuah query dari database ke dalam sebuah label di C sharp?

mau tanya teh ..
kalau misalkan hitungannya seperti ini gmana ya?
misalkan :
masuk kerja :
hari pertama : 08:00-17:00 = 09:00
hari kedua : 07:30 - 17 :00 = 09 : 30
hari ketiga : 07:50 - 17 : 00 = 09:10
dan seterusnya ,jika di jumlahkan 3 hari itu adalah 27 jam 40 menit ..
nnah bagaimana ngitungnya kalau pake vb.net ? terus pake gridview atau pake apa supaya enak ya ngitungnya ?
terimaksih atas jawabannya ... :)

Berkomentar yang sopan ya, Terimakasih sahabat..
EmoticonEmoticon