Database Fetching Dalam Dokumen Microsoft Word Dengan Ado .Net 3.5
Dokumen Microsoft Word seringkali diremehkan hanya sebagai alat untuk kepentingan surat menyurat serta pengetikan dokumen biasa. Hal tersebut juga terjadi di lingkup perkantoran yang sesungguhnya, sehingga seakan-akan dokumen tersebut hanyalah sekedar surat rutin sehari-hari. Meski demikian dokumen yang dihasilkan dari Microsoft Word sebenarnya dapat mengandung keterangan-keterangan yang dihasilkan sebuah data di dalam sebuah sistem informasi.
Untuk memecahkan masalah tersebut, yaitu mengambil data dari sebuah sistem informasi atau database, umumnya para pengguna Microsoft Word melakukannya dengan menggunakan fasilitas Mail Merge. Sayangnya, fasilitas tersebut juga lebih layak digunakan untuk kepentingan surat menyurat yang membutuhkan rangkaian data secara utuh. Tetapi untuk rangkaian data yang memerlukan spesifikasi tertentu, fasilitas Mail Merge tidak lagi dianggap memadai untuk dilakukan.
Rangkaian data tersebut misalnya untuk menampilkan data dari sebuah sistem informasi yang sesungguhnya telah terintegrasi di sebuah lingkup organisasi. Sebagai contoh, untuk membuat sebuah surat tagihan di dalam sebuah bank yang seharusnya langsung mengambil data nasabah sekaligus dengan besar tagihan serta jenis pinjaman (yang bisa jadi majemuk dalam satu kali tagihan) serta data lainnya, tidak lagi dapat dipenuhi dengan teknik Mail Merge. Sedangkan solusi dengan menggunakan fasilitas pencetakan laporan dari sistem informasi umumnya juga sangat terbatas jika dibandingkan fasilitas pengolahan kata yang dimiliki oleh Microsoft Word.
Solusi yang umum ditawarkan untuk mengatasi masalah tersebut adalah dengan memanfaatkan fasilitas VBA (Visual Basic for Application) di dalam Microsoft Office. Tetapi untuk melakukan koneksi query secara kompleks, VBA bukanlah bahasa pemrograman yang sesuai digunakan dalam kasus tersebut. Hal ini disebabkan keterbatasan sintaks VBA dalam menangani query terutama untuk koneksi ke server database.
Di dalam eksperimen yang telah dilakukan di dalam penelitian ini, digunakan solusi lain untuk menangani kasus query tersebut. Proses database fetching yaitu pengambilan data dengan menggunakan query yang kompleks dilakukan dengan menggunakan project bertipe dokumen Microsoft Word yang terdapat di dalam .NET Framework 3.5.
Project bertipe dokumen Microsoft Office yang di .NET Framework sebelumnya lazim disebut sebagai Visual Studio Tools for Office telah terbukti jauh lebih kuat dan layak untuk dikembangkan dalam proses database fetching dibandingkan dengan solusi menggunakan VBA [2]. Hal ini disebabkan di dalam dokumen yang akan dikembangkan merupakan bagian dari project di dalam lingkup .NET Framework, bukan lagi sebuah dokumen reguler yang disisipi oleh bahasa pemrograman.
Akibatnya, di dalam dokumen Microsoft Word yang dikembangkan nantinya akan disertai dengan sebuah file runtime yang berfungsi sebagai executable saat dokumen tersebut dibuka oleh pengguna. Secara implisit, pengguna tidak akan merasakan perbedaan yang signifikan saat proses pengolahan dokumen, tetapi dengan bantuan template yang telah disisipkan melalui file runtime tersebut, maka proses database fetching akan menjadi lebih mudah dan dapat mengoperasikan query kompleks.
.NET Framework merupakan fondasi dari pengembangan aplikasi berbasis Windows. Didalamnya terdapat dua bagian penting yaitu .NET Framework Class Library serta CLR atau Common Language Runtime [4]. Dalam .NET Framework juga terdapat banyak layer yang nantinya akan didukung oleh bahasa-bahasa pemrograman yang memanfaatkan bagian .NET Framework didalamnya.
Sedangkan ADO .Net adalah bagian dari .NET Framework yang berisi kumpulan utilitas serta layer yang mempermudah koneksi terhadap data yang telah disimpan sebelumnya [3]. Kelebihan ADO .NET dibandingkan dengan metode koneksi lainnya adalah adanya fasilitas yang mampu menjadikan koneksi database dalam mode disconnected sehingga akses database dapat memenuhi asas skalabilitas yang tinggi.
ADO .NET 3.5 merupakan ADO .NET generasi ketiga dari ADO .NET dan dikeluarkan setelah ADO .NET 2.0. Beberapa perubahan yang signifikan di dalam ADO .NET 3.5 (yang sesungguhnya telah dirilis di ADO .NET 3.0) antara lain akses LINQ (Language Integrated Query) dan Table Valued Parameter [5].
Salah satu lingkup IDE (Integrated Development Environment) yang memang menjadi inti dari pengembangan menggunakan .NET Framework adalah Visual Studio. Khususnya di dalam Visual Studio 2008, telah terdapat bagian project yang langsung dapat melakukan integrasi untuk melakukan integrasi aplikasi Microsoft Office dengan aplikasi Windows.
Integrasi yang lazim disebut sebagai VSTO (Visual Studio Tools for Office) tersebut dapat memperluas penggunaan Microsoft Office untuk dapat digabungkan dengan bahasa pemrograman Visual Basic .NET atau dengan bahasa pemrograman Visual C# .
Proses yang terjadi di dalam project yang bertipe dokumen Microsoft Office (baik Microsoft Word atau Microsoft Excel) merupakan proses yang terjadi di dalam level dokumen atau document level customization. Ini berarti bahwa proses yang ada di dalam dokumen tidak terjadi di dalam dokumen itu sendiri, tetapi terdapat dalam sebuah assembly code yang diakses melalui PIA (Primary Interopt Assembly) oleh Microsoft Office.
Jenis proses yang lain yang dapat terjadi di dalam VSTO adalah proses yang memanfaatkan level aplikasi atau application level. Dalam proses jenis ini, akan ditempatkan sebuah model add ins yang menempel di dalam unit Microsoft Office, seperti sebuah template di Microsoft Outlook atau ribbon bar baru di dalam Microsoft Word.
Koneksi database di dalam dokumen Microsoft Office dengan memanfaatkan VSTO akan melakukan imitasi proses koneksi database yang terdapat di dalam aplikasi berbasis Windows di lingkup .NET Framework. Hal ini dapat dilakukan dengan berbagai macam teknik, baik dengan menggunakan bantuan XML Web Service ataupun dengan menggunakan ADO .NET secara langsung.
PERANCANGAN DAN IMPLEMENTASI
Model sistem dari eksperimen yang akan menggunakan proses database fetching ke dalam dokumen Microsoft Word digambarkan dengan use case system berikut ini :
Gambar Use Case System
Gambaran umum sistem dapat dideskripsikan sebagai berikut :
1. Pengguna yang dibagi menjadi dua yaitu pengguna awam (novice) dan pengguna dalam kategori mahir (advanced) menerangkan kebutuhan dokumen yang diperlukan kepada programmer.
2. Programmer selanjutnya melakukan perancangan template berdasarkan kebutuhan pengguna sekaligus melakukan pengecekan terhadap database yang ada di dalam sistem informasi di dalam lingkup organisasi.
3. Template pendahuluan kemudian diserahkan kepada pengguna mahir untuk dicek ulang apakah telah memenuhi kebutuhan yang telah disyaratkan.
4. Setelah template disetujui, maka selanjutnya pihak programmer akan membuat template dokumen Microsoft Word yang didalamnya telah disisipi proses database fetching dengan menggunakan ADO .NET didalamnya.
5. Dari template tersebut, lalu dilakukan proses deploy kepada para pengguna untuk digunakan sesuai kebutuhan.
Pada eksperimen yang dilakukan diambil studi kasus database fetching dengan mengambil data dari sebuah tabel sederhana bernama UserProfile dari sebuah databasea SQL Server 2005. Data dari tabel tersebut nantinya akan digunakan sebagai langkah awal untuk melakukan login di dalam dokumen Microsoft Word.
Di dalam proses login, proses pengambilan data menggunakan query dengan memanfaatkan dua parameter yaitu dari field UserID dan field UserPassword. Dari hasil query yang dilakukan, kemudian akan ditampilkan sebuah query data lain, yaitu dari tabel Customer. Tetapi data dari tabel Customer hanya akan ditampilkan jika login telah berhasil dijalankan.
Secara umum, proses yang terjadi di dalam proses pembuatan template tersebut, dapat dilihat di dalam diagram aktifitas berikut ini :
Gambar Activity Diagram
Jika melihat dari diagram aktifitas, maka dapat didekripsikan secara detail proses yang terjadi adalah :
1. Pertama kali dibuat project dengan template Word Document di lingkup IDE Visual Studio 2008. Di dalam template tersebut, kemudian field-field yang dibutuhkan didefinisikan dengan menggunakan komponen dari lingkup .NET Framework. Dalam kasus yang dikerjakan, komponen yang digunakan adalah Textbox (untuk inputan dalam proses login) dan Listbox untuk menampilkan data dari tabel Customer.
2. Berikutnya didefinisikan query yang akan dilakukan dengan mengambil data yang terdapat dalam database (dalam studi kasus yang dilakukan yaitu database dari SQL Server 2005 Express Edition). Dalam proses ini, juga dilakukan pembuatan koneksi dengan menggunakan komponen TableAdapter dari ADO .NET.
3. Query didefinisikan di dalam XML Schema yang kemudian hasil dari query tersebut (data fetching) diambil di dalam event yang ditangkap di dalam dokumen, dan ditempatkan sebagai action trigger di dalam komponen Button. Jika ternyata query menghasilkan data (untuk tabel Customer), maka data tersebut kemudian ditampilkan di dalam komponen Listbox.
Dari hasil eksperimen dapat dilihat dari screen capture berikut :
Gambar Desain Awal Template Dokumen
Dari desain awal template dokumen, terdapat dua buah Textbox yang berfungsi sebagai sarana untuk login dengan mengambil data dari tabel UserProfile. Sedangkan button Show Data diisi dengan pemanggilan query melalui Table Adapter dari ADO .NET untuk verifikasi apakah pengguna telah berhasil melampaui proses login.
Jika proses login telah berhasil dilakukan, maka selanjutnya data dari tabel Customer akan ditampilkan ke dalam Listbox. Proses tampilan data dalam Listbox memanfaatkan class Data Reader mengingat sifatnya yang fast forward dan stream only sehingga lebih sesuai untuk proses pembacaan data secara cepat dan sekuensial.
Potongan dari listing program untuk melakukan proses database fetching dalam dokumen Microsoft Word adalah sebagai berikut :
Me.UserProfileTableAdapter1.FillBy
_
(Me.DataCustomerDataSet1.UserProfile, _
Me.TextBox1.Text, Me.TextBox2.Text)
ListBox1.Items.Clear()
If Me.DataCustomerDataSet1. _
UserProfile.Rows.Count > 0 Then
Dim xreader As System.Data.IDataReader = _
Me.DataCustomerDataSet1.CreateDataReader _
(Me.DataCustomerDataSet1.Customer)
Do While xreader.Read
ListBox1.Items.Add(xreader.Item(1))
Loop
Else
MsgBox("Failed")
Me.Close()
End If
Hasil dari dokumen yang telah melampaui proses verifikasi dan melakukan proses database fetching dari database SQL Server 2005 tampak pada gambar berikut :
Gambar 4. Hasil Dokumen yang telah berhasil login dan menampilkan data dari tabel Customer