download sample code
Setelah engine-nya selesai, step selanjutnya adalah membuat User Interface untuk Top Data. User Interface ini digunakan agar nanti User yang akan menggunakan Top Data dapat melakukan konfigurasi component. Yang diatur adalah dua buah property yang tadi kita buat, yaitu Top untuk mengatur berapa banyak row yang dimunculkan, dan RestBehavior untuk mengatur sisa data yang berada di luar top apakah akan dibuang atau dialihkan ke output yang lain.
Pertama, tambahkan sebuah Windows Form dengan nama TopDataEditor.cs ke dalam project.
Kemudian tambahkan dua buah label, satu numeric button, satu combobox dan dua button seperti gambar berikut

Buka code TopDataEditor.cs dan tambahkan using Directive Microsoft.SqlServer.Dts.Pipeline.Wrapper dan Microsoft.SqlServer.Dts.Runtime
1: using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
2: using Microsoft.SqlServer.Dts.Runtime;
Tambahkan code berikut untuk menampilkan property pada saat editor-nya dibuka, dan menyimpan property pada saat tombol OK ditekan
1: private CManagedComponentWrapper designTimeInstance;
2:
3: public TopDataEditor(IDTSComponentMetaData100 md)
4: {
5: InitializeComponent();
6:
7: designTimeInstance = md.Instantiate();
8: cboTop.Value = Convert.ToDecimal(md.CustomPropertyCollection["Top"].Value);
9: cboConfigureRestRow.SelectedIndex = Convert.ToInt16(md.CustomPropertyCollection["RestBehavior"].Value);
10: }
11:
12: private void btnOK_Click(object sender, EventArgs e)
13: {
14: designTimeInstance.SetComponentProperty("Top", Convert.ToInt32(cboTop.Value));
15: designTimeInstance.SetComponentProperty("RestBehavior", cboConfigureRestRow.SelectedIndex);
16:
17: this.DialogResult = DialogResult.OK;
18: this.Close();
19: }
Selanjutnya tambahkan sebuah class dengan nama TopDataUI untuk mengimplementasikan interface IDTSComponentUI dan tambahkan using directive Microsoft.SqlServer.Dts.Design, Microsoft.SqlServer.Dts.Pipeline.Design, Microsoft.SqlServer.Dts.Runtime, Microsoft.SqlServer.Dts.Pipeline.Wrapper
1: using Microsoft.SqlServer.Dts.Design;
2: using Microsoft.SqlServer.Dts.Pipeline.Design;
3: using Microsoft.SqlServer.Dts.Runtime;
4: using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
Lalu tambahkan code untuk memanggil menampilkan TopDataEditor
1: IDTSComponentMetaData100 md;
2: IServiceProvider sp;
3:
4: public void Help(System.Windows.Forms.IWin32Window parentWindow)
5: {
6: }
7:
8: public void New(System.Windows.Forms.IWin32Window parentWindow)
9: {
10: }
11:
12: public void Delete(System.Windows.Forms.IWin32Window parentWindow)
13: {
14: }
15:
16: public bool Edit(System.Windows.Forms.IWin32Window parentWindow, Variables vars, Connections cons)
17: {
18: TopDataEditor componentEditor = new TopDataEditor(md);
19:
20: DialogResult result = componentEditor.ShowDialog(parentWindow);
21:
22: if (result == DialogResult.OK)
23: return true;
24:
25: return false;
26: }
27:
28: public void Initialize(IDTSComponentMetaData100 dtsComponentMetadata, IServiceProvider serviceProvider)
29: {
30: this.md = dtsComponentMetadata;
31: }
Yang terakhir adalah menambahkan property UITypeName pada atribut di TopData.cs
[DtsPipelineComponent(
DisplayName="Top Data",
UITypeName = "TopData.TopDataUI,TopData,Version=1.0.0.0,Culture=neutral,PublicKeyToken=55f5b994dc70eb69",
ComponentType=ComponentType.Transform)]
Baca juga:
Creating Custom SSIS Component
Custom SSIS Component: The Engine
Custom SSIS Component: The Icon
Custom SSIS Component: The Installer