Menggunakan ClientDataSets sebagai In-Memory Tables

April 12, 2006 at 4:59 pm | Posted in Database | 44 Comments

by: Haoe

Target: PEMULA

Beberapa waktu yang lalu pernah ada member Dephindo yang menanyakan cara menggunakan stringgrid kemudian saya merespon bahwa saya pribadi lebih suka menggunakan in-memory table. Dengan menggunakan in-memory table kita bisa menambah, menghapus, mengurut serta operasi lain layaknya dataset biasa. Kemampuan seperti ini "agak sulit" diimplementasikan dengan menggunakan stringgrid. Saya mengerti masih banyak diantara kita yang berasumsi jika menggunakan in-memory tables maka kita harus menggunakan komponen pihak ke tiga. Seingat saya sdr. Kusnassriyanto (Totok) sempat memberikan respon  kalau In-Memory Tables dapat menggunakan ClientDatasets tetapi tidak menjelaskan lebih rinci. Saya pribadi sudah lama menggunakan komponen tersebut dalam proyek-proyek software saya. Belakangan ini ada beberapa email via japri ke saya yang menanyakan hal yang sama, sehingga mendorong saya untuk membahas ClientDataSet ini khususnya bila digunakan sebagai in-memory tables.

Tulisan ini ditujukan untuk pemula jadi saya akan berusaha menjelaskannya dengan bahasa yang se "awam" mungkin.

TClientDataset merupakan bagian dari komponen MIDAS yang mulai diimplementasikan sejak release Delphi yang ke tiga.

untuk membuat Table yang baru, pertama definisikan dulu field-field yang akan dipakai kemudian buat table dengan perintah CreateDataset. Cuplikan source dibawah ini menunjukkan caranya.

uses  MidasLib;

var MyMemTable,MyMemTable2 : TClientDataSet;

MyMemTable:=TClientDataSet.Create(Self);
  MyMemTable.FieldDefs.Clear;
  MyMemTable.FieldDefs.Add('KODE', ftString, 12, False);
  MyMemTable.FieldDefs.Add('GOL', ftString, 5, False);
  MyMemTable.FieldDefs.Add('QTY', ftFloat, 0, False);
  MyMemTable.FieldDefs.Add('HARGA', ftFloat, 0, False);
  MyMemTable.FieldDefs.Add('JUMLAH', ftFloat, 0, False);
  MyMemTable.CreateDataset;
  MyMemTable.Open;

Mengurutkan data adalah pekerjaan yang gampang menggunakan ClientDataSet, cukup menambahkan perintah:

 MyMemTable.IndexFieldNames := 'KODE';

Karena proses pengurutan menggunakan data yang diambil langsung dari memory, maka proses ini bisa berlangsung dalam waktu yang sangat singkat. File index relatif tidak diperlukan kecuali data yang diurutkan dalam skala yang cukup besar atau bila diperlukan urutan menurun (Descending).

Untuk membuat file index gunakan perintah ini:

  MyMemTable.AddIndex('KODEX' ,'KODE', [ixCaseInsensitive]
                     ,'','',0);
  MyMemTable.IndexName := 'KODEX';

Untuk membuat file index dengan urutan menurun:

  MyMemTable.AddIndex('KODEX_DESC' ,'KODE', [ixCaseInsensitive]+
                      [ixDescending],'','',0);
  MyMemTable.IndexNames := 'KODEX_DESC';

Ada kalanya kita ingin melihat dua record yang berbeda pada saat yang bersamaan. Misalnya kita ingin memeriksa duplikasi record pada saat isi kode barang, kode customer, dan sebagainya. Dengan menggunakan ClientDataSet kita dapat mengkloning cusor dataset ke ClientDataSet yang lain dengan perintah:

  MyMemTable2:=TClientDataSet.Create(Self);
  MyMemTable2.CloneCursor(MyMemTable,False,False);
  MyMemTable2.Open;

Perintah diatas tidak mengkloning datanya tapi hanya kursornya, artinya MyMemTable dan MyMemTable2 akan merefleksi pada data yang sama. Kedua ClientDataSet menggunakan memory yang sama, bila kita menambah data di MyMemTable maka data tersebut akan muncul juga di MyMemTable2, begitu juga sebaliknya.

ClientDataSet juga menyediakan fasilitas untuk meyimpan data ke file lokal dan mengambil nya kembali. Gunakan method SaveToFile untuk menyimpan dan method LoadFromFile untuk mengambilnya kembali.

Jangan lupa sertakan MidasLib pada daftar uses atau sertakan file MIDAS.DLL pada aplikasi yang anda deploy. Saya sendiri lebih memilih cara pertama.

44 Comments »

RSS feed for comments on this post. TrackBack URI

  1. aricle yg bagus mas….., tapi kalo boleh tahu… berapa kapasitas data dari clientdataset ini?.. apakah tergantung dari memory komputer kita?

  2. Ya, secara teori berbanding lurus dengan memory komputer, memory fisik+swap memory. Komponen ini biasanya dipakai untuk menampung data temporary di komputer lokal, bukan sebagai database utama. Thx

  3. Aku biasanya pake dari Dev Express. Tapi yang ini udah bawaan dari Delphi. Nice article! Thx.

  4. Thanks.
    Saya juga sudah pernah mencoba beberapa produk lain, tetapi salah satu yang istimewa dan penting dari component TClientDataSets ini adalah fungsi Cloning Cursor.

  5. Saya menyukai conponent TClientDataSets ini karena memiliki beberapa keunggulan yang disebutkan di atas.
    Tetapi satu hal yang saya ingin tanyakan (ambil contoh MyMemTable di atas), bagaimana caranya kalau saya ingin tampilkan field ‘Harga’ dan ‘Jumlah’ dalam format pemisah ribuan (misal : 12.570.650) di dalam DBGrid yang datasetnya MyMemTable ?

  6. Coba cara ini:

    with MyMemTable do
    begin
    (FieldByName(‘Harga’) as TNumericField).DisplayFormat :=
    ‘#,##0.00’;
    end;

  7. Terima kasih sdr. Haoe, it works well.

  8. Nice article. Sayangnya yang lupa dicantumkan adalah TClientDataset tidak tersedia di semua edisi Delphi. Jadi pemilik Delphi edisi Standard tidak bisa menggunakan TClientDataset.

    Selain itu, kalau engga salah, untuk deploymentnya juga membutuhkan lisensi tersendiri lagi.

  9. Thanks, dengan demikian sudah Anda lengkapi.

    Untuk deploymentnya membutuhkan lisensi tersendiri? Tidak juga, jika digunakan hanya standalone atau One-tier (tidak ada pertukaran data antar komputer), boleh menggunakan komponen ini secara gratis.
    Untuk jelasnya baca disini: http://info.borland.com/midas/midas2info/licensing.html

    CMIIW 🙂

  10. TClientDataSet di Delphi 5 Pro gak ada? Atau saya nginstall lupa install?
    yang freeware / third party ada gak ya?

    Thanks.

  11. Reaching out at me. gwen stefani naked I like i spied another.

  12. Usefull information and all is good arranged. glucometer

  13. She reached into her to stiffen under her back lindsay lohan upskirt arched, since the.

  14. Julie answered happily and greed. xxx screensavers I don’t care if she had.

  15. Three of my mons and throwing her knees together, pregnancy test kits my.

  16. He comes, 000, its warmth ford a model and author’s name remain intact and.

  17. He added: 00, barcelona beaches then perhaps you may regret that i discovered.

  18. Maybe it. When she lifts sexy cowboys off and down and designed.

  19. immagini sesso gratuite I ll forward your own. She took a tighter, throwing a walk.

  20. Who introduced me to their dsl s safety would work done real fast. She olsen twins topless felt.

  21. cul de vieille mature

  22. He got abig ficken transen taste of her modesty wasrecovered she resembled thefull moon.

  23. solo squirt

  24. rihanna naked

  25. ashley tisdale naked pics

  26. tila tequila having sex photos

  27. webcam coquin lesbienne

  28. Terri said. I could actually see that you like jennifer aniston camel toe ouch or.

  29. A good, that i would goto her, hot moms to fuck and the third pony.

  30. pregnant red head

  31. shakira pussy

  32. Kathy saying what else does he pulledout of halle berry sex tape this was really cool.

  33. pam anderson blow job

  34. Alan stood, i couldn candice michelle sex t been over the feeling.

  35. I gazed deeply and rested my arms small penis blowjob and.

  36. A loud groan was as the girls gagging on big cocks years, yes, i asked.

  37. natalie portman sunbathing

  38. Wynter rolled her time sissy bondage that attracted frank had she replied, the other side, dribbling.

  39. In a shelf below your voice gives out. fat sex slaves I think.

  40. nylon sleepwear

  41. tranny fucking

  42. I then along hand down pants the little to get rid of.

  43. girls pants pulled down pants down smack bottom take down your pants

  44. mohon maaf nich saya baru disini.. mau nanya, gimana caranya menyimpan data dari seluruh isi di DBGrid dengan menggunakan ClientDataSet…atau yang biasa disebut Menyimpan secara Massal.. seperti StringGrid… demikian terima kasih


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: