Futorial

Fu-styled tutorial
See also: Other Geeks@INDC

Input data lewat Web Site, InfoPath, Excel

Zaman sekarang udah canggih yah… Pusat data (baca: database) cukup satu, supaya data utuh, terorganisir, mudah dijaga, dan lain sebagainya. Tapi karena kecanggihan teknologi informasi, yang namanya mengakses data (retrieve, insert, edit, delete) bisa melalui berbagai cara (dan berbagai user interface tentunya). Bisa lewat web site, bisa lewat desktop application, bisa lewat SMS, daaaaaan lain sebagainya.

Nah, di Futorial kali ini, saya akan menunjukkan step-by-step untuk membuat tiga cara meng-input data ke satu database yang sama. Secara garis besar, kita akan membuat sebuah tabel di database, kemudian kita buat website dan web service, kemudian kita buat InfoPath Form, baru setelah itu kita buat Excel Workbook. Web service yang akan kita buat sebenarnya hanya pilihan saja, yaitu baik melalui InfoPath maupun Excel, nantinya akan memanggil fungsi di web service untuk input data. Sebenarnya bisa saja dari InfoPath atau Excel langsung tembak ke database. Namun alangkah baiknya jika ada “penengah” antara User Interface dengan database, salah satunya melalui Web Service.

Oke, tanpa banyak basa-basi, kita langsung saja.

Langkah 0 : Membuat database di SQL Server 2005 Express Edition

Di SQL Server Management Studio, expand database engine, klik kanan Databases, kemudian pilih New Database…

image

Misalkan kita beri nama SatuData, kemudian klik tombol OK.

image

Expand Databases, expand database SatuData. Klik kanan Tables, pilih New Table…

image

 

 

Berikut adalah spesifikasi untuk kolom-kolomnya:

Nama kolom

Tipe data

Keterangan

ID

int

Not Null, Primary Key, IsIdentity

Name

varchar(50)

Not Null

Price

money

Not Null

ProductionDate

datetime

Not Null

IsDiscontinued

bit

Not Null

Agar nilai kolom ID auto-increment, maka set properti IsIdentity menjadi Yes. Caranya, klik kiri kolom ID, kemudian di window Column Properties (ada di bagian bawah), expand pilihan Identity Specification. Ubah properti (Is Identity) menjadi Yes.

Simpan tabel ini sebagai tabel Products. Beginilah tampilan tabel Products di SQL Server Management Studio.

image

Nah, urusan bikin database sudah selesai sampai sini.

Langkah 0.5 : Membuat Blank Solution

Untuk keperluan proyek kecil-kecilan kita, kita buat sebuah blank Solution yang nantinya akan ada tiga buah project.

Buka Visual Studio, kemudian pilih File > New > Project…

image

Setelah klik OK, nanti di window Solution Explorer (biasanya ada di kanan, short-cut nya Ctrl+Alt+L) akan ada sebuah Solution tanpa ada project apapun.

image 

Dalam solution ini, kita butuh koneksi ke database yang telah kita buat pada langkah sebelumnya. Caranya, pada window Server Explorer (Ctrl+Alt+S), klik icon image . Akan muncul window Add Connection. Isi server name dengan instance database kita (dalam hal ini saya pakai SQL Server Express), dan isi Select or enter a database name dengan SatuData (nama database yang telah kita buat sebelumnya). Klik OK untuk connect.

image

Kalau berhasil, di window Server Explorer akan muncul database SatuData.

image

Selanjutnya, kita akan membuat web site sebagai salah satu cara menginput data.

Langkah 1 : Membuat ASP.NET Dynamic Data Web Site

Di window Solution Explorer, klik kanan Solution ‘SatuDataTigaCara’, kemudian pilih Add > New Web Site…

image

 

 

 

Pilih ASP.NET Dynamic Data Web Site. Pilih C# sebagai Labguage, dan beri nama web site yang akan kita buat ini sebagai WebSiteCaraPertama dengan mengganti path di sebelah kiri tombol Browse…

Setelah itu, klik tombol OK.

image

Setelah itu, akan muncul web site WebSiteCaraPertama di Solution Explorer. Klik kanan web site tersebut (root-nya yang di-klik kanan), kemudian pilih Add New Item…

image

Pilih LINQ to SQL Classes sebagai template dan beri nama sebagai SatuData.dbml. Klik Add.

 

 

 

 

image

Klik Yes agar file SatuData.dbml ini ditempatkan di folder khusus bernama App_Code.

image

Secara visual, file SatuData.dbml akan terbagi menjadi dua Pane. Pane yang kiri untuk menempatkan Tables dan Views di database untuk akhirnya akan dibuatkan Class untuk masing-masing Table dan View. Pane yang kanan untuk menempatkan Stored Procedures untuk akhirnya akan dibuatkan Method untuk masing-masing Stored Procedure.

image

Dari Server Explorer, drag-and-drop tabel Products ke Pane yang kiri. Simpan file ini dengan Ctrl+S atau klik icon image .

Buka file Global.asax. Uncomment code pada baris ke 17, dan ganti menjadi seperti berikut:

model.RegisterContext(typeof(SatuDataDataContext), new ContextConfiguration() { ScaffoldAllTables = true });

Klik kanan Default.aspx, kemudian pilih View in Browser. Yup, kita telah selesai membuat web site. di halaman depan web site ini, klik link Products, akan tampil isi tabel Products (yang saat ini tentunya belum ada isinya). Klik link Insert new item untuk mengisi tabel Products. Isi dengan data berikut, kemudian klik tombol Insert.

image

Kalau berhasil, tabel Products kita sekarang ada satu record.

image

 

 

 

 

Dan ini benar-benar ter-insert ke database lho. Coba aja cek lagi ke SQL Server Management Studio kalo nggak percaya.

image

Nah, cara pertama sudah selesai. Sekarang kita beralih ke cara ke-2. Namun sebelum itu, kita buat sebuah penengah, yaitu si Web Service.

Langkah 1.5 : Membuat Web Service untuk insert new product

Kembali ke Visual Studio. Di window Solution Explorer, klik kanan root website kita, kemudian pilih Add New Item… Pilih Web Service sebagai template. Beri nama InsertNewProductWebService.asmx.

image

 

 

 

Ganti method HelloWorld menjadi seperti berikut

[WebMethod]
public void InsertNewProduct(string name, decimal price, DateTime productionDate, bool isDiscontinued)
{
    Product produkBaru = new Product();
    produkBaru.Name = name;
    produkBaru.Price = price;
    produkBaru.ProductionDate = productionDate;
    produkBaru.IsDiscontinued = isDiscontinued;

    SatuDataDataContext database = new SatuDataDataContext();
    database.Products.InsertOnSubmit(produkBaru);
    database.SubmitChanges();
}

Sekarang, di window Solution Explorer, klik kiri root web site. Perhatikan window Properties. Ganti nilai pada properti Use dynamic ports menjadi False.

image

Hal ini dilakukan agar port dari web site ini statis (tidak ganti-ganti), sehingga pemanggil web service ini nggak perlu khawatir akan lokasi web service ini. Kalau dinamis, bisa saja port nya ganti, sehingga begitu ingin memanggil fungsi InsertNewProduct, terjadi error karena ya jelas.. lha wong alamatnya bisa gonta-ganti.

Oke, sekarang kita coba apakah fungsi di web service kita sudah berjalan. Klik kanan InsertNewProductWebService.asmx, kemudian pilih View in Browser. Klik link InsertNewProduct. Isi dengan data berikut, kemudian klik tombol Invoke.

image

Cek apakah data yang kita kirim barusan telah masuk ke database. Kalau berhasil, pasti masuk.

image

OK, selanjutnya baru benar-benar langkah ke dua, yaitu melalui InfoPath.

Langkah 2 : Membuat form di InfoPath melalui Visual Studio

Klik kanan solution ‘SatuDataTigaCara’ kita, kemudian pilih New Project. Pilih Office di Project types, dan pilih InfoPath 2007 Form Template sebagai Templates. Beri nama sebagai InfoPathFormTemplateCaraKedua, kemudian klik tombol OK.

image 

Pilih Web Service pada pilihan Based on. Klik OK.

image

Pilih Submit data kemudian klik Next.

image

Masukkan lokasi web service yang tadi kita buat (bisa diperoleh dari aksi klik kanan View in Browser file asmx yang tadi). Jangan lupa tambahkan string ?WSDL setelah huruf x pada asmx. Klik Next.

image

Pilih sebuah fungsi (memang hanya ada satu yang kita buat). Klik Next.

image

Biarkan nama koneksi sebagai Main submit. Klik Finish.

image

 

 

 

 

 

Setelah project dibuatkan. Pilih menu View > Data Source. Akan muncul window Data Source.

image

Drag-and-drop grup tns:InsertNewProduct ke area “Drag data fields here”. Pilih Controls in Layout Table.

image

 

 

Ganti tulisan “Click to add a title” menjadi Insert new product. Drag-and-drop sebuah button dari toolbox.

image

Klik kanan Button tersebut, kemudian pilih Button Properties… Pada window Button Properties, ganti properti Action menjadi Submit kemudian klik tombol OK.

image

 

Selesai! Yuk kita coba hasilnya. Di window Solution Explorer, klik kanan proyek InfoPathFormTemplateCaraKedua, kemudian pilih Set as StartUp Project. Setelah itu, tekan Ctrl+F5.

image

Sebuah form InfoPath akan terbuka. Isi data seperti berikut, kemudian klik tombol Submit.

image

Pilih Yes pada window Microsoft Office InfoPath Security Notice.

image

Yuk kita lihat hasilnya.

image

Nahh, dengan begini, input data lewat InfoPath udah beres. Sekarang mari kita coba pakai Excel.

Langkah 3 : Membuat Excel Workbook melalui Visual Studio

Dengan cara yang nyaris sama dengan cara membuat form InfoPath, kita buat Excel Workbook. Klik kanan Solution ‘SatuDataTigaCara’ kemudian pilih Add > New Project… Pilih Office sebagai Project types dan Excel 2007 Workbook sebagai Templates. Beri nama ExcelWorkbookCaraKetiga kemudian klik tombol OK.

image

Biarkan nama file Excel sebagai ExcelWorkbookCaraKetiga dan format xlsx. Klik OK.

image

Nahh.. sekarang Excel ada di dalam Visual Studio. Di Excel ini, kita bisa tambahkan control yang dimiliki oleh Windows Form, sepert TextBox, Button, DateTimePicker, CheckBox, dan lain sebagainya. Sekarang, ubah tampilan isi Excel tersebut menjadi seperti berikut:

image

Saya telah menambahkan beberapa tulisan dan beberapa control, yaitu

Control

Name

Keterangan

TextBox textBoxPrice Kosongkan isi properti Text
DateTimePicker dateTimePickerProductionDate  
CheckBox checkBoxDiscontinued  
Button buttonSubmit Ganti isi properti Text menjadi Submit

Sebelum otak-atik lebih lanjut, kita add service reference ke Web Service. Caranya, klik kanan project ExcelWorkbookCaraKetiga, kemudian pilih Add Service Reference… Tuliskan alamat web service yang telah kita buat (atau bisa juga melalui tombol Discover), kemudian expand Services hingga menemukan service InsertNewProductWebService. Ubah Namespace menjadi InsertNewProductServiceReference kemudian klik OK.

image

 

 

Kembali ke Excel yang ada di Visual Studio. Double-click buttonSubmit. Kita akan beralih ke “code behind”. Perlu diketahui bahwa dalam kasus ini, kita akan meng-insert sebuah record ke tabel product di mana datanya diisi melalui Excel. Kolom Name didapat melalui sebuah Cell (yaitu C3), kolom Price didapat dari textBoxPrice, kolom ProductionDate didapat dari dateTimePickerProductionDate, kolom IsDiscontinued didapat dari checkBoxDiscontinued.

Ubah isi method buttonSubmit_Click menjadi seperti berikut:

private void buttonSubmit_Click(object sender, EventArgs e)
{
    Excel.Range rangeStart = Application.ActiveCell;
    Excel.Worksheet worksheet = rangeStart.Parent as Excel.Worksheet;

    string name = worksheet.get_Range("C3", "C3").Value2.ToString();
    decimal price = Convert.ToDecimal(textBoxPrice.Text);
    DateTime productionDate = dateTimePickerProductionDate.Value;
    bool isDiscontinued = checkBoxDiscontinued.Checked;

    InsertNewProductServiceReference.InsertNewProductWebServiceSoapClient service = new ExcelWorkbookCaraKetiga.InsertNewProductServiceReference.InsertNewProductWebServiceSoapClient();
    service.InsertNewProduct(name, price, productionDate, isDiscontinued);

    MessageBox.Show("Insert new product succeed");
}

Finish! Untuk mencobanya,pada window Solution Explorer, klik kanan proyek ExcelWorkbookCaraKetiga, kemudian pilih Set as StartUp Project. Setelah itu, tekan Ctrl+F5. Sebuah file Excel akan terbuka. Isi dengan data berikut, kemudian klik tombol Submit.

image

Sekarang kita lihat hasilnyaaa… Tadaaaaa…. sukses besar!!!

image

Huuffhhh… panjang juga yah post saya yang satu ini… :D

Selamat mencoba!

Share this post: | | | |

Comments

grawas said:

mantab jaya gan :D

# January 14, 2009 8:56 AM

agusto said:

cool 1 database dengan banyak cara untuk CRUD nya

# January 15, 2009 12:58 AM

Rudy Yulianto said:

thx for share..^^

# January 30, 2009 5:07 PM

Kasim.Wirama said:

kelihatan kalau Visual Studio banyak menawarkan alternatif solusi front-end lewat sample ini. ruar biasa. Thanks atas sharingnya.

# February 5, 2009 7:40 AM

rgunawans said:

saya pakai VS2008 + InfoPath2007 koq muncul error spt ini ya?

Microsoft Office InfoPath does not recognize some or all of the command

line options. Exit and restart Microsoft Office InfoPath with the

correct command line options.

Ada yang pernah ngalami?

# February 7, 2009 9:28 AM

Fuady Rosma Hidayat said:

@rgunawans

Hmm.. aneh.. saya blom pernah ketemu error message seperti itu.

# February 10, 2009 4:31 PM

rgunawans said:

sudah saya coba update ke Office 2007 SP1, sekarang ganti errornya jadi "Infopath could not open the selected file"... apakah gara2 koneksi saya yang ke Oracle? bukan ke SQL Express?

# February 11, 2009 11:57 AM

hendro surono said:

kk

saya baru belajar visual studio 2008

setelah saya praktekan langsung

saya berhenti pada langkah:

"Buka file Global.asax. Uncomment code pada baris ke 17, dan ganti menjadi seperti berikut:

model.RegisterContext(typeof(SatuDataDataContext), new ContextConfiguration() { ScaffoldAllTables = true });

Klik kanan Default.aspx, kemudian pilih View in Browser. Yup, kita telah selesai membuat web site. di halaman depan web site ini, klik link Products, akan tampil isi tabel Products (yang saat ini tentunya belum ada isinya). Klik link Insert new item untuk mengisi tabel Products. Isi dengan data berikut, kemudian klik tombol Insert."

di visual studio 2008 saya tidak ada file "Buka file Global.asax "

di manakah saya bisa mendapatkan nya?

terima kasih...

# May 12, 2009 7:37 PM

Wiwiek Abbas said:

Ini yang gw cariiiiii.....Thanks Fuuuu, kamu memang Fuady Markotop...hahahhaha

# August 12, 2009 3:00 PM

Wiwiek Abbas said:

Fu...gw juga mengalami masalah seperti "rgunawans", piye resolvednya yah ?

Apa yang salah...hiks...hiks...

# August 12, 2009 3:03 PM

hikam said:

saya pake ms.office 2010 beta,, koq gak muncul yah template infopath di vs08 nya?

# January 15, 2010 3:18 PM