Pembuatan Aplikasi Client Server dengan Arsitektur 3-tier Part 5
Sebagai penutup postingan berseri ini kita akan bahas bagaimana membuat report menggunakan data-push reporting model (halah opo meneh iki :D) dengan model ini report yang dibuat tidak langsung mengakses database tetapi cukup dengan memanfaatkan objek DataSet.
Penggunaan model ini sangat pas dan nyambung dengan postingan berseri ini, dimana aplikasi klien akan memanggil sebuah method secara remote menggunakan objek proxy, method ini akan mengambalikan nilai dalam bentuk objek DataSet, dan untungnya DataSet merupakan turunan dari class MarshalByValueComponent sehingga bisa langsung diserialisasikan dari domain aplikasi yang berbeda dalam hal ini dari aplikasi server ke klien.
Untuk contoh report disini sy menggunakan Active Report .NET dan untuk postingan kali ini sy tidak akan membahas secara rinci bagaimana membuat report menggunakan Active Report .NET.
Oke langsung saja kita aktifkan kembali solution SmartLibrary yang di dalamnya sudah ada tiga proyek yaitu SmartLibraryKlien, SmartLibraryServer dan SmartLibraryLib.
Untuk Active Report .NETnya akan kita tambahkan pada proyek SmartLibraryKlien, tapi sebelumnya akan kita tambahkan terlebih dulu sebuah folder dengan nama Report dan sebuah form dengan nama FrmPreview.
Pada FrmPreview ini akan kita tambahkan komponen Active Report .NET Viewer yang berfungsi sebagai container untuk menampung objek dari report Active Report .NET
Kemudian masuk ke editor code FrmPreview dan tambahkan kode berikut
Nah sampai disini kita sudah bisa menambahkan report untuk SmartLibraryKlien, adapun langkah-langkahnya seperti berikut :
1. Aktifkan folder Report, kemudian klik kanan pilih menu Add -> New Item
2. Pilih item ActiveReport 3.0 File dan untuk isian Name diisi dengan ArLapBuku
Nah untuk desain reportnya cukup seperti berikut :
Setelah itu lengkapi kode untuk reportnya seperti berikut :
Yaph sampai disini untuk persiapan reportnya sudah selesai, report ini akan kita panggil dari FrmBuku jadi kita aktifkan terlebih dulu FrmBuku kemudian kita tambahkan satu buah tombol dengan nama btnPreview (Preview).
Adapun untuk kodenya seperti berikut :
pada gambar diatas terlihat objek bukuDao yang merupakan objek proxy memanggil method GetReportAll, ketika sebuah method dipanggil melalui objek proxy maka method tersebut akan dieksekusi di sisi server (SmartLibraryServer), mari kita intip kode methodnya :D.
Halah enggak ada kode yg aneh ternyata π
Method GetReportAll di atas mengembalikan nilai berupa objek DataSet, objek DataSet sendiri merupakan turunan dari objek MarshalByValueComponent sehingga bisa langsung diserialisasi dari satu domain ke domain lain.
Oke sy cukupkan sampai disini, sekarang mari kita lihat demonya π
Selamat MENCOBA π
om, mau tanya lagi nih, kalau bikin report menggunakan teknik ado.net, coding entry-nya seperti ini
//……………mulai
MySqlConnection db = new MySqlConnection(connectionSQL);
db.Open();
MySqlCommand dbcmd = db.CreateCommand();
string sql = “insert into tbdata(nama,pekerjaan) values (‘”+textBox1.Text+”‘, ‘”+textBox2.Text+”‘)”;
dbcmd.CommandText = sql;
MySqlDataAdapter sqlAdapter = new MySqlDataAdapter(sql, connectionSQL);
DataSet myDataset = new DataSet();
sqlAdapter.Fill(myDataset);
db.Close();
loadData();
//……………akhir
database yang saya gunakan Mysql. mohon pencerahanya. thq
Maksudnya gimana nih om ? Reportnya mau ditampilkan ke mana ?
di form om, sama seperti report yang ditulis om diatas, tapi saya masih awam tentang c# jadi mu bikin report-nya masih bingung lain halnya dgn VB 6,
Jadi kalau saya klik tombol preview/dsb nanti akan keluar form report-nya, seperti gambar terakhir(Laporan Data Buku), untuk coding pada tombol previewnnya gimana yah + koneksi ke MySQL-nya. misalkan ingin menampilkan/mencetak semua data, mohon pencerahanya om
mohon di maklum om, masih newbie c#.
Harusnya cukup seperti ini om :
Simple, jelas, padat dan sangat rapi tutorialnya mas… π
Kalau diperkenankan, mohon segera di posting juga tutorial .NET Entitty Framework nya juga dong khususnya untuk web based application (ASP.NET), karena saya yg masih newbie ini sangat butuh banget pemahaman konsep secara jelas untuk 3-tier architecture, bukankah sekarang udah cloud computing era…
Jadi saya secara pribadi, menyimak selalu dan memanfaatkan sharing ilmunya..
Thanks n Good luck. Bravo programming.. π
Tq om atas komennya, utk pembahasan .NET Entitty Framewornya kayaxnya bakalan tertunda lama nih karna sy sendiri lebih tertarik mempelajari dan mendalami NHibernate.
Bang KOm, mana link downloadtan tsb ?? thank a lot before do it
Download dulu om samplenya.
askum om..maaf pertanyaaannya OOT, saya dibikin tugas bikin backup database dan restore database pake VB.NET.. databasenya SQL server…ada contohnya ga mas? matur suwun π
SQL server udah nyediain store procedure utk melakukan ini, untuk contohnya bisa dilihat disini.
om, kalau pakenya vb.net coding untuk classnya gimana yah.. mohon penjelasnya. thk
Om klo mau atur ukuran kertas dan margin gimana thaks
Klik menu File -> Page Setup
Setelah itu tinggal atur posisi marginya.
Om klo VS 2010 ga bisa di klik –> Page Setup nya..
Active Report .NET klo enggak salah udah enggak disupport di VS 2010.
Nah pertanyaan si om, report disini AR .NET tau CR ?
aku pake VS 2010 AR.Net 6
Nah masalah sy belum punya AR .NET 6 om, kecuali klo om berbaik hati mengemailkan ke saya π
Om sekalian dong klo GetReportByName gimana code nya ?
Kan kodenya sama persis seperti method GetReportAll, bedanya hanya diquerynya saja :
Menjadi
om, saya mau buat report menggunakan VB.Net 08/10, tapi kenapa yah..setiap bikin report VS nya selalu crash, mohon pencerahanya. thk
Emg om pake report yg mana AR, CR atau ReportViewer ?
pake report viewr, tapi melibatkan CR dalam desainya,
Klo report viewer dan CR sy belum pernah pake om jadi belum bisa bantu nih π
ok dh, g p2,, thk om yh..
om, ada referensi AR di vb.net ?? googling kebanyakan vb.6,
Ngapain om, pusing2x googling, tinggal install aja ARnya disitu udah disertakan file help dan sample projectnya.
Ok om makasih .. dan buat AR.Net 6 bisa setting margin dll di menu Report > setting
Om klo mau email AR.Net 6 minta alamat emailnya .. oh sekalian om code di button preview untuk getrepotbyname nya gimana ? aku mau tampilin dr listview
Di email kesini aja : k4m4r82@gmail.com
Pertama lengkapi dulu kode untuk method GetReportByName yg ada di class BukuDao
Untuk tombol Previewnya seperti berikut :
Ok om makasih, dan klo boleh nanya lg cara untuk input / save data lngsung utk dua tabel sekaligus . misal utk tblsiswa ( id_siswa , nama_siswa) dan tblkelas ( id_siswa, nama_siswa)
Ya tinggal eksekusi 2x, tetapi ada database yg mendukung eksekusi multi query dg pemisah tanda ;
Contoh :
Maaf om ga bisa di kirim lewat email.
http://www.4shared.com/zip/HdyZrx7d/ar6_623681.html coba mampir ke sini om
Aku pake mysql bisa ga multi query om
Kayaxnya sih bs om, di coba aja π
Iya om dah di coba dan bisa . klo dari 2 table ato lebih gimana ?
Klo 2 tabel yg dieksekusi 2x
Maksudnya klo buat report dari 2 tabel om
Emg pengen buar report seperti apa om?
om klo mau nampilin report yg kita ceklist di listview gimana ?
ListView.CheckedListViewItemCollection itemcheked = lvTki.CheckedItems;
foreach (ListViewItem itemRow in itemcheked)
{
string idTki = itemRow.SubItems[1].Text;
ArRekom ar = new ArRekom();
DataSet ds = permohonanDao.GetReportById(idTki);
ar.DataSource = ds;
ar.DataMember = “tbrekpaspor”;
ar.Run(false);
RekPaspor frm = new RekPaspor(“RekPaspor”, ar.Document);
frm.ShowDialog();
}
aku pake kode seperti ini yg tampil satu-satu
Coba sy pengen tau dulu kode dari method GetReportById
strSql = “SELECT id_tki, nama_tki, jenis_kelamin, tempat_lahir, tgl_lahir, alamat, tujuan, agency, skill, sektor ” +
“FROM tbrekpaspor ” +
“WHERE id_tki LIKE ‘%” + IdTki + “%’ ” +
“ORDER BY id_tki “;
MySqlDataAdapter da = new MySqlDataAdapter();
da.SelectCommand = new MySqlCommand(strSql, Conn);
DataSet ds = new DataSet();
da.Fill(ds, “tbrekpaspor”);
return ds;
Begini om
Jadi intinya ingin menampilkan nama-nama tiki yg dipilih dalam satu report ? Klo memang iya kayaxnya ada yg salah dengan querynya.
Iya om begitu , jadi kita mau nampilin yg di cheklist di listview aja
Pertama ganti dulu query yg ada di method GetReportById :
Setelah itu baru lakukan revisi pada saat pemanggilan reportnya :
variabel sb dengan tipe StringBuilder digunakan untuk menampung idtiki yang dipilih.
Ok om thanks
yuph sama2x
Om klo ngambil value dari listview tuk disimpan di database gimana ?
Untuk ngambil valuenya cukup seperti ini om :
itu sama buat C# ato VB6 om ?
Klo C# ya lebih kurang om
Om masih bingung nih cara simpan data ke database yg di checklist di listview ?
Klo cuma mau ngambil nilai yg pilih, gunakan kode berikut om :
Om klo mau nambahkan control seperti button di listview C# gimana ?
Gampang om, coba kesini.
om ada active report Net 3 ga. aku download dari link punya om file currot
Dicoba lagi aja om
udah di download ulang tp tetap hasil nya currop om .. mungkin ada link yg lain
Sy enggak punya link lain om, linknya juga udah sy coba download dan hasil ekstraknya enggak ada masalah
om…kalo saya pake http kok muncul ini ya ? ” Soap Serializer does not support serializing Generic Types : System.Collections.Generic.List……dst”. apa di net 2.0 ke atas dah g support lagi ya buat soapformaternya?
terima kasih
Emg di bagian kode yg mana om errornya, coba diganti menggunakan array.
Klo pake tcp error enggak ?
kalo pake tcp g error.
saya pernah coba ambil data. interface nya saya buat dataset (g pake serializable sperti contoh si om). kemudian interface nya saya implement aja di class yang akan saya jadiin service. hasilnya pake tcp atau http bisa.
kira kira sperti ini om…..
Imports [Lib]
Imports MySql.Data.MySqlClient
Public Class cDao
Inherits MarshalByRefObject
Implements LibInterface
Public Function TampilSemua() As System.Data.DataSet Implements [Lib].LibInterface.TampilSemua
Dim SQL As String
Dim Conn As New MySqlConnection("constring")
Dim DtAdapter As New MySqlDataAdapte
Dim oCOm As New MySqlCommand
TampilSemua = New DataSet
SQL = "SELECT * FROM DATAXX"
Conn.Open()
oCOm = New MySqlCommand(SQL, Conn)
DtAdapter = New MySqlDataAdapter(oCOm)
DtAdapter.Fill(TampilSemua, "XX")
Conn.Close()
Return TampilSemua
End Function
End Class...
trus kode yg error di baris yg mana om ?
kode itu (yg diatas) yang saya coba sendiri om.
pake http apa tcp g masalah
kalo yang error ini. saya coba buatan persis kayak punya si om
Private CC As DTOCostCenter = Nothing
Private Sub frmTestCostCenter_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
InisialisasiListView()
Dim server As String = “localhost”
Dim port As String = “1234”
Dim uri As String = “CostCenterService”
Dim url As String = “http://” & server & “:” & port & “/” & uri
CC = CType(Activator.GetObject(GetType(DTOCostCenter), url), DTOCostCenter)
loaddata()
End Sub
di loaddata, itu sama persis dengan contohnya dari si om. jadi waktu formnya mau ditampilkan. muncul error ” Soap Serializer does not support serializing Generic Types : System.Collections.Generic.List`1[DataComponent.DataModel.mCostCenter]. dst”
kalo g ganggu mungkin saya email aja om kalo boleh…
biar lengkap kodenya
hehehehe……..
contoh yang om kasih (saya coba di vb.net) kalo saya ganti http. form klien malah g tampil om.
Terima kasih
Masalah emailnya entar aj om, sy ingin liat kode dari method loaddatanya.
apakah link ini menjawab om >> http://weblogs.asp.net/fbouma/archive/2005/12/12/432971.aspx
Oke klo memang enggak disupport ya pake cara lain, misal objek yg ditransfer berupa array
Om klo mau export report ke PDF gimana ?
Gimana om ? Udah bisa belum π
mas bro..sy tertarik dgn cara pembuatan aplikasi client servernya.
klo sy belajar full total da penerimaan ga’
sy tunggu di email sy: adrenalin_id@yahoo.com
Ya udah tinggal pelajari aja semua postingan sy yg berhubungan dg “cara pembuatan aplikasi client server”
Om, sekalian dibuatkan step build & deploy aplikasinya utk server dan client, so berlanjut ke “part 6” gitu…..
Yah kapan-kapan, tapi kayaxnya lebih seru membahas teknologi penerus .NET Remoting.
Insya Alloh klo ada waktu saya akan menulis ulang artikel “Pembuatan Aplikasi Client Server dengan Arsitektur 3-tier” menggunakan WCF.