<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2817151447595259882</id><updated>2012-02-02T02:39:48.254-08:00</updated><category term='Lain-lain'/><category term='Akuntansi'/><category term='SMTP'/><category term='MySQL'/><category term='aplikasi apotek/klinik'/><category term='Linux'/><category term='Virus'/><category term='Delphi database'/><category term='My Application'/><category term='SMS Gateway'/><category term='Firebird'/><category term='Indy'/><category term='Tips'/><category term='Dasar-dasar Delphi/OOP'/><category term='Tools Database'/><category term='Express Quantum Grid'/><category term='delphi VCL'/><category term='Tips Query'/><category term='Error Messages'/><title type='text'>Sinau terus ya Om</title><subtitle type='html'>Software boleh bajakan, tapi OS jangan bajakan.  Nambah-nambahin dosa aja.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-1619429598914735742</id><published>2011-08-25T20:59:00.000-07:00</published><updated>2011-08-25T21:28:17.289-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Dual Booting Ubuntu 11.04 dan Windows7(Ubuntu First)</title><content type='html'>Normalnya untuk dual booting Windows diinstall terlebih dahulu baru kemudian Ubuntu.  Tapi bagaimana jika Windowsnya diinstall belakangan?&lt;br /&gt;&lt;br /&gt;Jika anda menginstall windows 7 yg sebelumnya ada Ubuntu maka GRUB Loadernya otomatis akan ditimpa oleh boot managernya windows sehingga anda tidak mungkin bisa booting dari GRUB.  Untuk mengatasinya caranya sederhana yaitu install ulang GRUB Loader anda dan berikut langkah-langkahnya:&lt;br /&gt;&lt;br /&gt;1.  Boot dari LiveCD, kemudian pilih menu Try Ubuntu Without Install&lt;br /&gt;2.  Masuk ke terminal(pake ctrl+T) atau klik Accessoris-&amp;gt;Terminal&lt;br /&gt;3.  Ketik perintah sebagai berikut&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo mount /dev/sda1 /mnt&lt;/span&gt; (ganti sda1 sesuai partisi ubuntu anda)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo mount --bind /dev /mnt/dev&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo mount --bind /proc /mnt/proc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo mount --bind /sys /mnt/sys&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sudo chroot /mnt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sekarang anda sudah masuk ke root ubuntu.  Setelah itu lakukan perintah berikut:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;update-grub &lt;/span&gt;(perintah ini otomatis mengkonfigurasi ulang file grub.cfg)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;grub-install /dev/sda&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*Jika ada pesan command not found, coba install grub anda dengan perintah apt-get install grub-pc.&lt;br /&gt;&lt;br /&gt;Selesai.  Reboot dengan perintah reboot now.  Cara yang sama juga bisa anda terapkan jika anda mau dual atau bahkan triple booting dengan Fedora&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-1619429598914735742?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/1619429598914735742/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2011/08/dual-booting-ubuntu-1104-dan.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1619429598914735742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1619429598914735742'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2011/08/dual-booting-ubuntu-1104-dan.html' title='Dual Booting Ubuntu 11.04 dan Windows7(Ubuntu First)'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-3299783948927625946</id><published>2011-08-19T01:04:00.000-07:00</published><updated>2011-08-19T01:11:32.555-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Indy'/><category scheme='http://www.blogger.com/atom/ns#' term='SMTP'/><title type='text'>Kirim email dari Gmail pake komponen Indy 10</title><content type='html'> Anda dapat menggunakan 2 cari yaitu memakai protocol SSL atau TLS sebagai security layernya.  Perbedaan mendasarnya adalah pada port yang digunakan.  Jika SSL menggunakan port 465 sedang untuk TLS menggunakan port 587.&lt;br /&gt;&lt;br /&gt;Ada  beberapa setting yang harus perlu diperhatikan di sini.&lt;br /&gt;&lt;br /&gt;Untuk SSL sebagai security layer pada komponen IdSMTP setting propertiesnya sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Port:=465;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UseTLS:=UseImplicitTLS;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Kemudian di komponen IDSSLioHandlerSocketopenSSL setting propertiesnya sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SSLOptions.Method:=SSLv3;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SSLOptions.Mode:=sslmClient;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Untuk contoh setting lengkapnya bisa anda download aplikasi saya di &lt;a href="http://www.enterupload.com/ok8hcp7kh93z/UseSSL.7z.html" target="_blank"&gt;sini Om&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Untuk TLS sebagai security layer, di komponen IdSMTP setting propertiesnya sebagai berikut:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Port:=587;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UseTLS:=utUseRequireTLS;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Komponen IdSSLIOHandlerSocketOpenSSL:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SSLOptions.Method:=sslvTLSv1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SSLOptions.Mode:=sslmClient;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Contoh lengkapnya dapat anda donload di&lt;a href="http://www.enterupload.com/v1sj7qnkpphk/UseTLS.7z.html" target="_blank"&gt; sini Om&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-3299783948927625946?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/3299783948927625946/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2011/08/kirim-email-dari-gmail-pake-komponen.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/3299783948927625946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/3299783948927625946'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2011/08/kirim-email-dari-gmail-pake-komponen.html' title='Kirim email dari Gmail pake komponen Indy 10'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-7452160562630684633</id><published>2011-07-29T01:57:00.000-07:00</published><updated>2011-07-29T18:43:59.118-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Indy'/><title type='text'>Ngirim Email dari Yahoo via Delphi Indy 10</title><content type='html'>Berikut langkah2 ngirim email pake Indy dengan alamat Yahoo(punya saya yahoo.co.id)&lt;br /&gt;&lt;br /&gt;1.  Cari komponen Idsmtp dan taruh di form anda.&lt;br /&gt;2.  Isi di propertiesnya sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;host:smtp.mail.yahoo.co.id&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;port:465&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;username:nama akun email anda, tapi jangan pake @&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;password:password akun email anda.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;UseTLS:utUseImplicitTLS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Langkah berikutnya adalah letakkan komponen IdSSLIOHandlerSocketOpenSSL(di tab Indy I/0 Handlers) di form anda dan setting propertiesnya sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Destination: smtp.mail.yahoo.co.id:465&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Host:smtp.mail.yahoo.co.id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SSLOptions:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method:sslvSSLv3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mode:sslmClient&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Trus isi properties IdSSLIOHandlerSocketOpenSSL di IdSmtp dengan komponen IdSSLIOHandlerSocketOpenSSL yang anda buat tadi.&lt;br /&gt;&lt;br /&gt;Lihat gambar:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-yN20rD3zgfI/TjNfKBbqPSI/AAAAAAAAAJI/mpw4LkLwjGU/s1600/Yahoo.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://4.bp.blogspot.com/-yN20rD3zgfI/TjNfKBbqPSI/AAAAAAAAAJI/mpw4LkLwjGU/s400/Yahoo.JPG" alt="" id="BLOGGER_PHOTO_ID_5634952184558402850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kemudian sekarang tinggal kita mengisi settingan pesan. Gunakan komponen IdMessage(tab Indy Misc) dan berikut properties yang harus diperhatikan:&lt;br /&gt;&lt;br /&gt;- From&lt;br /&gt;Isi semua sesuai dengan akun email anda.&lt;br /&gt;&lt;br /&gt;-Recipients&lt;br /&gt;Isi dengan alamat penerima email anda.  Alamat recipients bisa lebih satu.  Jadi jika anda ngirim email misal ke parjo@kenther.com, parno@kenther.com maka si parjo juga tahu kalo email itu juga dikirim ke si parno.&lt;br /&gt;&lt;br /&gt;-Sender&lt;br /&gt;&lt;br /&gt;Isikan sesuai akun anda.&lt;br /&gt;&lt;br /&gt;Sekarang tinggal ngisi perintah:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;idmessage1.Subject:=edit3.Text;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;idmessage1.Body:=memo1.Lines;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;if not idsmtp1.Connected then&lt;/span&gt; &lt;span style="font-style: italic;"&gt;idsmtp1.Connect;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;try&lt;/span&gt; &lt;span style="font-style: italic;"&gt;idsmtp1.Send(idmessage1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;finally&lt;/span&gt; &lt;span style="font-style: italic;"&gt;idsmtp1.Disconnect;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Kalo anda kurang jelas silahkan donload aplikasi saya &lt;a href="http://www.enterupload.com/cl6eyvc9bwpj/Yahoo.7z.html"&gt;di sin&lt;/a&gt;&lt;a href="http://www.enterupload.com/cl6eyvc9bwpj/Yahoo.7z.html"&gt;i&lt;/a&gt;.  Aplikasi ini pake Delphi 7 dan nggunain komponen Indy 10, jadi bagi anda yang menggunakan Indy 9 silahkan di upgrade ke Indy 10.  Bagaimana cara upgradenya?   Tunggu aja tulisan saya selanjutnya.&lt;br /&gt;&lt;br /&gt;Catatan: Setting ini bisa berubah-rubah tergantung dari mail servernya.  Karena itu sebagai patokan saya sarankan untuk menginstall aplikasi mail client seperti Mozilla Thunderbird.  Aplikasi mail client ini sudah ada databasenya untuk settingan mail server jadi tinggal ikutin saja dari situ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-7452160562630684633?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/7452160562630684633/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2011/07/ngirim-email-dari-yahoo-via-delphi-indy.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7452160562630684633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7452160562630684633'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2011/07/ngirim-email-dari-yahoo-via-delphi-indy.html' title='Ngirim Email dari Yahoo via Delphi Indy 10'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-yN20rD3zgfI/TjNfKBbqPSI/AAAAAAAAAJI/mpw4LkLwjGU/s72-c/Yahoo.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-1663557758930506248</id><published>2011-07-25T19:21:00.000-07:00</published><updated>2011-07-26T22:23:27.641-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lain-lain'/><title type='text'>Koneksi Host dan Guest di VirtualBox</title><content type='html'>Melanjutkan&lt;a href="http://delphirewo.blogspot.com/2011/07/mainan-dengan-virtualbox-beberapa-waktu.html"&gt; tulisan yang lalu&lt;/a&gt; bagaimana cara mengoneksikan host di virtual machine(atau disebut Guest) dengan host induk sistem operasi(atau di sebut host), berikut akan saya berikan langkah-langkahnya:&lt;br /&gt;1.  Klik tombol setting dan pilih network.  Disana ada beberapa tab untuk memilih adapter.  Setting di salah satu adapter misal adapter1 dengan Host-only mode.  Dengan memilih opsi ini maka secara otomatis host anda memiliki IP virtual 192.168.56.1.&lt;br /&gt;&lt;br /&gt;2.  Masuk ke sistem operasi virtual, cek dengan ping seperti alamat tersebut di atas.  Jika konek berarti host anda sudah bisa di akses.  Jangan lupa cek ipconfig virtual machine anda guna mengetahui berapa alamat yang diberikan oleh DHCP(biasanya 192.168.56.101).  Kalau anda bosan dengan 101, anda bisa ngerubah range IP  sesuai kemauan anda dengan cara klik file-&amp;gt;preferences-&amp;gt;networking-&amp;gt;host-only.  Di sana ada list yang berisi vboxnet0.  Edit saja settingan tersebut.&lt;br /&gt;&lt;br /&gt;Sebagai catatan jika mau koneksi ke Mysql servernya linux ubah saja my.cnf di folder /etc/mysql/my.cnf.  Cari yang ada tulisan bind-address dan beri tanda komentar.&lt;br /&gt;&lt;br /&gt;Di akhir tulisan ini saya cuman berpesan hati-hati main kayak ginian karena beresiko system crash yang memaksa anda menginstall ulang sistem operasi virtual anda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-1663557758930506248?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/1663557758930506248/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2011/07/koneksi-host-dan-guest-di-virtualbox.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1663557758930506248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1663557758930506248'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2011/07/koneksi-host-dan-guest-di-virtualbox.html' title='Koneksi Host dan Guest di VirtualBox'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-5970877682065216448</id><published>2011-07-24T18:33:00.000-07:00</published><updated>2011-07-25T18:43:13.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lain-lain'/><title type='text'>Mainan dengan Virtualbox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-kgGhtJsHsZM/TizJlQFgRbI/AAAAAAAAAJA/4Owu9Qem5Lo/s1600/virtualbox.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://4.bp.blogspot.com/-kgGhtJsHsZM/TizJlQFgRbI/AAAAAAAAAJA/4Owu9Qem5Lo/s400/virtualbox.png" alt="" id="BLOGGER_PHOTO_ID_5633098875744044466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Beberapa waktu lalu lapie kesayangan saya mengalami kejadian yang cukup memusingkan kepala yaitu tiap mau di install xp, setengah jalan pasti mati sendiri.  Coba setting harddisk controller dari ATA ke AHCI nggak ngefek sama sekali malah muncul Blue Screen warning.  Daripada pusing dan mengingat kapasitas RAM lapie saya yang cukup gedhe sebesar 1,8 GB akhirnya saya memutuskan mencoba VirtualBox punyanya mbah Oracle.&lt;/p&gt;&lt;p&gt;Langkah pertama yang saya lakukan adalah menginstall Ubuntu terbaru(Natty aka 11.04).  Kemudian cari di Synaptic Package Manager repositoriesnya dari &lt;a href="http://kambing.ui.ac.id/ubuntu"&gt;kambing.ui.ac.id&lt;/a&gt; ketemu virtualbox-ose.  &lt;/p&gt;&lt;p&gt;Alhamdulillah, akhirnya xp saya dapat berjalan pakai VirtualBox.  Yang namanya Virtual pasti juga ada kekurangannya yaitu soundnya meski jalan tapi nggak bisa buat dengarin musik pakai Clementine(recommended software pengganti Winamp).  Trus efek 3D nggak bisa tampil sesuai harapan.  Meski demikian pake virtualbox juga ada keunggulannya yaitu aplikasi dicompile sekali tapi dapat dijalankan pake dua sistem operasi sekaligus seperti semboyan Java "Compile once run anywhere". Compile di windows virtualbox, njalanin di Linux pake Wine.   &lt;/p&gt;&lt;p&gt;Untuk koneksi LAN sendiri dapat jalan lancar jaya tanpa hambatan sama sekali.  Adapter yang digunakan untuk koneksi lain adalah Bridge Networking.  Sebagai catatan sebelum menggunakan Network Adapter lebih dahulu baca user manualnya virtualbox karena jika nggak hati-hati bisa nyebabin sistem di virtual hostnya crash.&lt;/p&gt;&lt;p&gt;Lalu bagaimana cara agar hostnya virtualbox dapat koneksi dengan host induk(sistem operasi utama)?  Nah itu yang saya belum tahu.  Moga2 mbah Google bisa ngasih tahu jawabnya.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-5970877682065216448?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/5970877682065216448/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2011/07/mainan-dengan-virtualbox-beberapa-waktu.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5970877682065216448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5970877682065216448'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2011/07/mainan-dengan-virtualbox-beberapa-waktu.html' title='Mainan dengan Virtualbox'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-kgGhtJsHsZM/TizJlQFgRbI/AAAAAAAAAJA/4Owu9Qem5Lo/s72-c/virtualbox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-5270006899695817471</id><published>2011-07-13T20:25:00.000-07:00</published><updated>2011-07-13T20:30:16.484-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Backup dan Restore database Mysql di Linux</title><content type='html'>Seperti di sistem operasi jendela, di Linux untuk merestore dan membackup database mysql anda juga dapat menggunakan batch.  Caranya yaitu cukup menambahi perintah #!/bin/bash di awal baris.&lt;p&gt;Sintaks lengkapnya(untuk backup database dengan mysqldump)&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;#!/bin/bash&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;mysqldump -u jono -pjoni -h 192.168.1.1 databaseku -R -r "/home/mbahdien/Documents/databasebackup/databaseku.dmp"&lt;/p&gt;&lt;p&gt;Simpan di teks editor anda.  Jangan lupa sebelum menjalankannya ubah tipe filenya menjadi executable dengan  perintah&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;sudo chmod +x file batch anda.&lt;/p&gt;&lt;p&gt;Sedang untuk merestore database gunakan perintah ini:&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;#!/bin/bash&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;echo "Restore Database"&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: courier new;"&gt;mysql -u user -ppassword -e "drop database if exists databaseku;create database databaseku;use databaseku;\. /home/mbahdien/Documents/databaseku.dmp"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;#optional, anda bisa menambah perintah ini untuk mengecek apakah terjadi error saat restore:&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;tail -f /var/log/mysql/error.log&lt;/p&gt;&lt;p&gt;Sama juga dengan yang di atas, gunakan perintah chmod agar file bisa di eksekusi:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-5270006899695817471?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/5270006899695817471/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2011/07/backup-dan-restore-database-mysql-di.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5270006899695817471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5270006899695817471'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2011/07/backup-dan-restore-database-mysql-di.html' title='Backup dan Restore database Mysql di Linux'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-485643391512983988</id><published>2011-07-05T21:05:00.000-07:00</published><updated>2011-07-05T21:37:23.422-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools Database'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Menjalankan EMS MySQL Manager di Ubuntu</title><content type='html'>Sebenarnya Ubuntu sudah menyediakan tools untuk browsing MySQL database yaitu mysql query browser.  Tapi karena kekuranglengkapannya, saya nyobain nginstal EMS MySQL Manager yang tentu saja versi OS sejuta umat aka jendela.&lt;br /&gt;&lt;br /&gt;Instalasi EMS MySQL Manager di Ubuntu sendiri tidak terlalu rumit bahkan yang versi b*jakannya sekalipun :D.  Dengan nggunain anggur merah alias Wine akhirnya tools ini dapat hadir di Ubuntu meski agak sedikit cacat terutama dari segi tampilan.  Tapi tetap lumayan daripada OS Wedhuz yang gak bisa digunain nginstall MySQL Administrator Tool nya Ubuntu.&lt;br /&gt;&lt;br /&gt;Lalu bagaimana cara koneksi ke database.  Untuk koneksi ke localhost anda tidak bisa nggunain alamat localhost tapi pakai IP loopback yaitu 127.0.0.1 atau kalo mo lebih komplit tambahin pake socket sekalian dengan format ipaddress [socket path].  Contoh 127.0.0.1 /tmp/mysql.sock.  Sedang untuk koneksi remote seperti biasa anda bisa gunain alamat IP yang dituju.&lt;br /&gt;&lt;br /&gt;Dan berikut ini screenshootnya:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-5TRrNDqueSM/ThPmBiBHs8I/AAAAAAAAAI0/SmxwuzEFIZc/s1600/EMSMysqlManager.png"&gt;&lt;img style="cursor: pointer; width: 623px; height: 270px;" src="http://3.bp.blogspot.com/-5TRrNDqueSM/ThPmBiBHs8I/AAAAAAAAAI0/SmxwuzEFIZc/s400/EMSMysqlManager.png" alt="" id="BLOGGER_PHOTO_ID_5626093273501643714" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-485643391512983988?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/485643391512983988/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2011/07/menjalankan-ems-mysql-manager-di-ubuntu.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/485643391512983988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/485643391512983988'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2011/07/menjalankan-ems-mysql-manager-di-ubuntu.html' title='Menjalankan EMS MySQL Manager di Ubuntu'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-5TRrNDqueSM/ThPmBiBHs8I/AAAAAAAAAI0/SmxwuzEFIZc/s72-c/EMSMysqlManager.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-3621468933186220550</id><published>2011-03-10T22:10:00.000-08:00</published><updated>2011-03-10T22:29:42.511-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='aplikasi apotek/klinik'/><title type='text'>Software  Penjualan Untuk Apotek dan Klinik</title><content type='html'>Iseng-iseng saya membuat program Apotek dan Klinik dengan Delphi 7 dan databasenya pakai MySQL.  Berikut screenshootnya:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Login&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-rwfCaWI9LHg/TXm9nIjvQoI/AAAAAAAAAH4/vZuf9GbS5rg/s1600/image002.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-rwfCaWI9LHg/TXm9nIjvQoI/AAAAAAAAAH4/vZuf9GbS5rg/s320/image002.jpg" alt="" id="BLOGGER_PHOTO_ID_5582701693112369794" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;Produk&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-5eiy8PnlDaE/TXm9nreurrI/AAAAAAAAAIA/PGL-NXKlXGs/s1600/image004.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-5eiy8PnlDaE/TXm9nreurrI/AAAAAAAAAIA/PGL-NXKlXGs/s320/image004.jpg" alt="" id="BLOGGER_PHOTO_ID_5582701702486601394" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;Penjualan&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://4.bp.blogspot.com/-3ZeVzrB52vQ/TXm_hfEzrDI/AAAAAAAAAIY/nP7bgiyxotw/s1600/image005.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-3ZeVzrB52vQ/TXm_hfEzrDI/AAAAAAAAAIY/nP7bgiyxotw/s320/image005.png" alt="" id="BLOGGER_PHOTO_ID_5582703795100691506" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;Pembelian&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/-0C_NM5J-i2I/TXm_8Vz0h_I/AAAAAAAAAIg/Fj9xR74tcVI/s1600/image007.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-0C_NM5J-i2I/TXm_8Vz0h_I/AAAAAAAAAIg/Fj9xR74tcVI/s320/image007.png" alt="" id="BLOGGER_PHOTO_ID_5582704256469993458" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Laporan&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-wK06tqH4VWk/TXm9oCUrJsI/AAAAAAAAAIQ/wUeRkGCf3dA/s1600/image010.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 256px;" src="http://3.bp.blogspot.com/-wK06tqH4VWk/TXm9oCUrJsI/AAAAAAAAAIQ/wUeRkGCf3dA/s320/image010.jpg" alt="" id="BLOGGER_PHOTO_ID_5582701708618442434" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin:0cm;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Modul-modul yang ada sudah tertera di daftar menu gambar yang paling atas.&lt;span style=""&gt;  &lt;/span&gt;Program ini sudah dipakai di salah satu apotek di Semarang dengan alamat yang tertera di atas.&lt;span style=""&gt;  &lt;/span&gt;Silahkan anda donlod file exenya di &lt;a href="http://www.4shared.com/file/Rry4iaF6/Apotek_2.html" target="_blank"&gt;sini&lt;/a&gt;.&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-3621468933186220550?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/3621468933186220550/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2011/03/software-penjualan-untuk-apotek-dan.html#comment-form' title='3 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/3621468933186220550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/3621468933186220550'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2011/03/software-penjualan-untuk-apotek-dan.html' title='Software  Penjualan Untuk Apotek dan Klinik'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-rwfCaWI9LHg/TXm9nIjvQoI/AAAAAAAAAH4/vZuf9GbS5rg/s72-c/image002.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-4598706797022623217</id><published>2010-04-22T22:47:00.000-07:00</published><updated>2010-04-23T20:04:31.100-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><category scheme='http://www.blogger.com/atom/ns#' term='My Application'/><title type='text'>MbahdienSQLConverter, tool untuk generate perintah SQL di Delphi</title><content type='html'>Bagi para Delphiers pasti tahu perintah menutup dan membuka dataset seperti ini:&lt;br /&gt;&lt;br /&gt;var qry:string;&lt;br /&gt;begin&lt;br /&gt;qry:='select idmahasiswa,NIM,nama from mahasiswa ';&lt;br /&gt;&lt;br /&gt;mytable.close;&lt;br /&gt; mytable.sql.clear;&lt;br /&gt; mytable.sql.add(qry);&lt;br /&gt;mytable.open;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;Karena terlalu seringnya perintah ini digunakan dalam aplikasi database, saya tertarik untuk menciptakan tool sederhana untuk menggenerate perintah SQL ke sintak Delphi dan berikut skrinsuut tool bikinan saya tersebut&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_I_W3DDtwmHM/S9JfpFl5ksI/AAAAAAAAAHY/FNaT7nTQfzM/s1600/mbahdien+SQL+Konverter.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_I_W3DDtwmHM/S9JfpFl5ksI/AAAAAAAAAHY/FNaT7nTQfzM/s320/mbahdien+SQL+Konverter.JPG" alt="" id="BLOGGER_PHOTO_ID_5463534457434247874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Untuk menjalankannya anda tinggal ketik perintah sql anda di Memo sebelah kiri dan lihat hasilnya di sebelah kanan.  Ingat, tool ini tidak untuk checking syntak tapi hanya memudahkan anda mentranslate perintah SQL di Delphi.&lt;br /&gt;&lt;br /&gt;Tool ini masih dalam tahap awal sehingga masih ada kemungkinan-kemungkinan pengembangan-pengembangan dengan menambahkan fitur-fitur baru seperti konversi dari sintak Delphi ke perintah SQL atau mungkin juga penambahan ke bahasa-bahasa pemograman lain seperti VB/VBNet.&lt;br /&gt;&lt;br /&gt;Silahkan Unduh &lt;a href="http://www.4shared.com/file/JKVZAaQc/MbahdienSQLKonverter.html"&gt;MbahdienSQLConverter&lt;/a&gt; di &lt;a href="http://www.4shared.com/file/JKVZAaQc/MbahdienSQLKonverter.html"&gt;sini&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-4598706797022623217?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/4598706797022623217/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/04/mbahdiensqlconverter-tool-untuk.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4598706797022623217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4598706797022623217'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/04/mbahdiensqlconverter-tool-untuk.html' title='MbahdienSQLConverter, tool untuk generate perintah SQL di Delphi'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_I_W3DDtwmHM/S9JfpFl5ksI/AAAAAAAAAHY/FNaT7nTQfzM/s72-c/mbahdien+SQL+Konverter.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-158883265249152945</id><published>2010-04-15T01:52:00.000-07:00</published><updated>2010-04-15T23:52:15.640-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Akuntansi'/><title type='text'>Desain Tabel untuk Perhitungan Rugi Laba dan Neraca di Database pada Perusahaan Dagang</title><content type='html'>Sebelum memulai tulisan ini saya sedikit bingung mau pakai judul apa nih, maklum saja dulu saya tidak sekolah di Sistem Informasi yang penuh dengan teori-teori seperti DFD, normalisasi tabel dan teori basis data lainnya, tapi ya udah daripada kebanyakan teori dan bikin pusing, di sini saya akan menjelaskan tabel-tabel apa saja yang perlu dibuat untuk perhitungan rugi laba dan neraca.&lt;br /&gt;&lt;br /&gt;Sebelum melangkah ke desain tabel, saya akan sedikit menjelaskan tentang konsep perhitungan rugi-laba dan neraca.&lt;br /&gt;&lt;br /&gt;Untuk menghitung rugi laba, terlebih dahulu kita harus menghitung Rugi/Laba Kotor terlebih dahulu dengan rumus:&lt;br /&gt;&lt;br /&gt;Rugi/Laba Kotor=Penjualan Bersih - HPP&lt;br /&gt;&lt;br /&gt;Penjualan Bersih=Penjualan-Potongan Penjualan-Retur Penjualan+PPN Keluaran(jika ada)&lt;br /&gt;&lt;br /&gt;HPP=Persediaan Awal+Pembelian Bersih-Persediaan Akhir&lt;br /&gt;&lt;br /&gt;Pembelian Bersih=Pembelian-retur pembelian-potongan pembelian-beban angkut pembelian(jika ada)+PPN Masukan(jika ada)&lt;br /&gt;&lt;br /&gt;Rugi/Laba Bersih=Rugi Laba Kotor - Beban&lt;br /&gt;&lt;br /&gt;Untuk lebih jelasnya lihat yang di bawah ini:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_I_W3DDtwmHM/S8gI5s29VLI/AAAAAAAAAHI/RQO3-tx5rx0/s1600/2qltwzsrl3.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_I_W3DDtwmHM/S8gI5s29VLI/AAAAAAAAAHI/RQO3-tx5rx0/s320/2qltwzsrl3.jpg" alt="" id="BLOGGER_PHOTO_ID_5460624335573963954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Ngadem dulu gan, Ntar saya lanjutin lagi.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-158883265249152945?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/158883265249152945/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/04/desain-tabel-untuk-perhitungan-rugi.html#comment-form' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/158883265249152945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/158883265249152945'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/04/desain-tabel-untuk-perhitungan-rugi.html' title='Desain Tabel untuk Perhitungan Rugi Laba dan Neraca di Database pada Perusahaan Dagang'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_I_W3DDtwmHM/S8gI5s29VLI/AAAAAAAAAHI/RQO3-tx5rx0/s72-c/2qltwzsrl3.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-6258701366707845542</id><published>2010-04-14T21:06:00.000-07:00</published><updated>2010-04-14T21:27:58.716-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips Query'/><title type='text'>Membuat Update Urut Otomatis di MySQL</title><content type='html'>&lt;div style="text-align: justify;"&gt;Misal jika toko anda punya pelanggan dan pelanggan tersebut prefik kodenya dinomori sesuai area/wilayahnya.  Contoh: SMG-001,PWD-001, kemudian anda diminta menomorinya secara otomotis.  Lalu bagaimana cara memecahkan hal tersebut.&lt;br /&gt;&lt;br /&gt;Untuk mengatasi hal itu sangat mudah.  Copas saja kode berikut ini di Editor SQL Manager anda(pake Navicat atau EMS terserah).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SET @URUT=0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;update pelanggan set kode=concat('SMG','-',lpad(@urut=:@urut+1,3,'0')) where&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;kode_area='SMG';&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-6258701366707845542?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/6258701366707845542/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/04/membuat-update-urut-otomatis-di-mysql.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6258701366707845542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6258701366707845542'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/04/membuat-update-urut-otomatis-di-mysql.html' title='Membuat Update Urut Otomatis di MySQL'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-8319188576387460481</id><published>2010-04-11T20:22:00.000-07:00</published><updated>2010-04-11T22:41:05.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Akuntansi'/><title type='text'>Contoh-contoh Nyata Kasus Akuntansi</title><content type='html'>&lt;div style="text-align: justify;"&gt;Hari minggu kemarin(11 April 2010) saya mendapat tugas dari istri yaitu membantu membuatkan laporan rugi laba tempat kerjanya.  Karena background saya bukan Sarjana Akuntansi(titel saya cuma Amd, alias ahli makan doang) agak confused juga.  Tapi berbekal pengalaman  yang sedikit bisa akuntansi meski cuma dasar serta hasil searching di Mbah Google akhirnya pekerjaan tersebut selesai juga.&lt;br /&gt;&lt;br /&gt;Dalam soal2 yang diberikan istri saya tersebut, ada beberapa kasus yang menurut saya cukup menarik yaitu:&lt;br /&gt;&lt;br /&gt;1.  Bagaimana pembelian barang inventaris secara kredit, harus ditempatkan di pos mana, dan bagaimana jurnalnya?&lt;br /&gt;2.  Bagaimana cara perhitungan Harga Pokok Penjualan&lt;br /&gt;3.  Apabila perusahaan menunda pembayaran gaji, atau cuma membayar sebagian gaji pada pegawainya, bagaimana jurnalnya?&lt;br /&gt;4.  Bagaimana jurnalnya bila perusahaan tidak mampu melunasi cicilan barang inventaris sehingga barang tersebut ditarik.&lt;br /&gt;5.  Yang paling berat nih, bagaimana menjelaskan kepada pimpinan jika di laporan laba rugi itu terlihat untung, tapi pada kenyataannya uang berbentuk cash tidak ada.&lt;br /&gt;&lt;br /&gt;Itu adalah sebagian kecil kasus-kasus nyata akuntansi dalam dunia kerja yang tentunya jauh lebih sulit dibanding dengan teori yang kita peroleh di bangku sekolah dulu.&lt;br /&gt;&lt;br /&gt;Nah, berikut ini akan saya jelaskan pemecahan kasus-kasus tersebut.&lt;br /&gt;&lt;br /&gt;1.  Jika pembelian barang inventaris secara kredit, anda harus memasukkan ini ke dalam kolom neraca, bukan rugi laba.  Jadi bunyi jurnalnya adalah begini:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Barang Inventaris  80&lt;br /&gt;       Hutang barang inventaris     80&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Yang agak membingungkan disini adalah menentukan harga perolehan, apakah harga cashnya atau harga kreditnya?&lt;br /&gt;&lt;br /&gt;Yang dipakai disini adalah harga kreditnya(Uang Muka+(cicilan*lama angsuran)).&lt;br /&gt;&lt;br /&gt;2.  Dalam dunia perdagangan, penentuan HPP termasuk hal yang cukup sulit.  Kita akan dibenturkan pada kenyataan-kenyataan yang ada di lapangan misal:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Harga yang selalu berubah cepat(dalam hal ini umumnya terjadi pada harga-harga kebutuhan pokok/sembako)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Catatan administrasi yang tidak lengkap, misal:&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;            Ada barang yang terjual tapi harga belinya tidak di ketahui.&lt;br /&gt;           Jarang diadakan stok opname, sehingga persediaan awal dan akhir tidak diketahui.&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Perusahaan yang menjual barang dagangan secara campuran, dalam artian dia mendapatkan barang itu dari supplier dan juga membuat sendiri.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Untuk perhitungan HPP, karena agak panjang lebar kalau dijelaskan disini, anda bisa mendownload ebook yang saya temukan &lt;a href="http://www.docstoc.com/docs/4473482/04-AKUNTANSI-PERSEDIAAN-%2813%29/"&gt;di sini&lt;/a&gt;.  Memang tidak terlalu bisa memecahkan persoalan diatas, tapi setidak-tidaknya membantu anda mengenai cara perhitungan HPP.&lt;br /&gt;&lt;br /&gt;3.  Jika perusahaan belum membayar gaji karyawannya baik sebagian ataupun penuh, maka tetap dikategorikan biaya pada periode tersebut.   Jadi bunyi jurnalnya adalah begini:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Biaya gaji   10&lt;br /&gt;       Hutang gaji          10&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;atau bila sebagian dibayarkan&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Biaya gaji  10&lt;br /&gt;            Kas           6&lt;br /&gt;            Hutang gaji   4&lt;br /&gt;&lt;/pre&gt;    &lt;br /&gt;4.  Bila terjadi penarikan barang karena perusahaan tidak mampu melunasi cicilan barang inventaris maka harus dibuatkan jurnal penyesuaian yaitu:&lt;br /&gt;&lt;br /&gt;Hutang Barang Inventaris  D(sebesar nilai kekurangan pembayaran)&lt;br /&gt;Kerugian krn penarikan barang(masuk pos biaya sebesar&lt;br /&gt;harga perolehan - kekurangan pembayaran) D&lt;br /&gt;              Barang Inventaris                                                                                                      K(Sebesar harga perolehan)&lt;br /&gt;&lt;br /&gt;Contoh soal:&lt;br /&gt;misal PT. Robot Gedhek beli mobil secara kredit 80 juta.  pada saat angsuran 50 juta perusahaan itu tidak mampu melunasi pembayarannya, bagaimana jurnalnya.&lt;br /&gt;&lt;br /&gt;Saat menerima barang:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Mobil  80&lt;br /&gt;   Hutang               80&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Saat mobil itu ditarik&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Hutang                       30&lt;br /&gt;Biaya krn penarikan barang   50&lt;br /&gt;Mobil                                   80&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;5.  Secara riil di lapangan mungkin kita menjumpai seorang owner yang tahunya kalau suatu perusahaan untung adalah pemasukan lebih besar dari pengeluaran.  Saat disajikan laporan laba rugi yang dia tahu jika perusahaannya itu laba maka harus ada jumlah sisa uang sebesar nilai laba tersebut.  Pada kenyataannya uang di kas perusahaan tinggal sedikit dan tidak mampu memenuhi permintaan sang owner.  Lalu bagaimana cara jika anda sebagai akunting menjawabnya?&lt;br /&gt;Untuk menjawab persoalan itu lumayan mudah(saya tidak bilang mudah lho, krn perlu hati2 juga bila nerangin sama owner, apalagi kalau termasuk kategori bawel+jadul).  Yang harus anda perhatikan adalah anda harus melihat sisi neraca anda.  Apakah ada barang-barang yang masuk kategori cicilan.  Apakah ada pembelian barang inventaris cash dalam jumlah besar?  Terangkan bahwa keuntungan perusahaan tersebut digunakan untuk membeli barang-barang keperluan perusahaan sehingga jika sang owner ingin uang yang lebih, bilang saja barang-barang tersebut bisa dijual lagi buat menambah uang kas.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-8319188576387460481?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/8319188576387460481/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/04/contoh-contoh-nyata-kasus-akuntansi.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8319188576387460481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8319188576387460481'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/04/contoh-contoh-nyata-kasus-akuntansi.html' title='Contoh-contoh Nyata Kasus Akuntansi'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-1856355244352681997</id><published>2010-04-08T08:06:00.000-07:00</published><updated>2010-04-08T08:17:36.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><category scheme='http://www.blogger.com/atom/ns#' term='Express Quantum Grid'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi VCL'/><title type='text'>Menghilangkan Title Caption di ExpressQuantumGrid</title><content type='html'>"Drag Column header here to group by that column", ups, tulisan ini pasti muncul di komponen ExpressquantumGrid anda.  Memang tidak mengganggu sih, tapi kalau tulisan itu bisa hilang pasti akan lebih cantik lagi bukan. &lt;br /&gt;&lt;br /&gt;Untuk menghilangkan tulisan itu caranya cukup mudah:&lt;br /&gt;&lt;br /&gt;1.  Tambahkan uses CxClasses dan cxGridStrs di Main form project anda.&lt;br /&gt;&lt;br /&gt;2.  Saat onCreate Event tulis kode berikut:&lt;br /&gt;&lt;br /&gt; cxSetResourceString(@scxGridGroupByBoxCaption,'');&lt;br /&gt;&lt;br /&gt;Ingat, anda tidak perlu memakai cara ini satu persatu di seluruh form, tapi cukup pada form utama anda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-1856355244352681997?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/1856355244352681997/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/04/menghilangkan-title-caption-di.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1856355244352681997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1856355244352681997'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/04/menghilangkan-title-caption-di.html' title='Menghilangkan Title Caption di ExpressQuantumGrid'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-4849138249061769335</id><published>2010-04-06T00:20:00.000-07:00</published><updated>2010-04-06T00:24:09.203-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi VCL'/><title type='text'>Sharing komponen Delphi</title><content type='html'>Bagi anda yang kesulitan mencari link donload komponen seperti IBDAC, Unidac, DevExpress, business skin form, Suipack, dll, anda bisa donlod di &lt;a href="http://www.4shared.com/file/258066598/f2e59379/LINK_DONLOD_KOMPONEN.html" target=_blank&gt;sini&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-4849138249061769335?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/4849138249061769335/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/04/sharing-komponen-delphi.html#comment-form' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4849138249061769335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4849138249061769335'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/04/sharing-komponen-delphi.html' title='Sharing komponen Delphi'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-1246752729297556193</id><published>2010-04-02T20:37:00.000-07:00</published><updated>2010-04-02T20:57:38.985-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Backup Database dengan Delphi</title><content type='html'>Untuk membackup database for example mysql, anda bisa menggunakan perintah mysqldump, dan untuk menjalankannya di Delphi kita bisa menggunakan perintah Windows Api yaitu ShellExecute atau WinExec.  Tapi perintah itu mempunyai kelemahan yaitu kita tidak tahu kapan backup datanya selesai karena masing-masing punya thread sendiri-sendiri.&lt;br /&gt;&lt;br /&gt;Untuk mengatasi problem tersebut, anda bisa menggunakan perintah ShellExecuteEx dari unit ShellApi.  Dan berikut ini caranya:&lt;br /&gt;&lt;br /&gt;Tambahkan uses ShellApi di unit anda.&lt;br /&gt;&lt;br /&gt;lalu ketikkan kode seperti berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;procedure backup(const namafile:string);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; SEInfo:TShellExecuteinfo;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; ExitCode:DWORD;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; paramstring:string;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;paramstring:=&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'-u [your youser] -p[your password] --single-transaction -q --skip-comments --opt -c -r '+&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'"'+sfile+'"'+' -R [your database]';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  fillchar(SEInfo,sizeof(SEInfo),0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  with SEInfo do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     cbSize:=sizeof(SEInfo);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     fMask := SEE_MASK_NOCLOSEPROCESS;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     Wnd := Application.Handle;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     lpFile := PChar('mysqldump') ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    lpparameters:=pchar(paramstring);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     nShow := SW_SHOW;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     lpdirectory:=pchar('C:\Program Files\MySQL\MySQL Server 5.0');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        if shellexecuteex(@SEInfo) then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       begin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;          repeat&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       Application.ProcessMessages;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       GetExitCodeProcess(SEInfo.hProcess, ExitCode) ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     until (ExitCode &lt;&gt; STILL_ACTIVE) or&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       Application.Terminated;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     [your next command here]&lt;/span&gt;&lt;br /&gt;          &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Anda juga dapat menggunakan cara tersebut di atas untuk membackup data dari Firebird, SQL Server &amp;amp; juga database2 RDBMS yang lain&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-1246752729297556193?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/1246752729297556193/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/04/backup-database-dengan-delphi.html#comment-form' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1246752729297556193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1246752729297556193'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/04/backup-database-dengan-delphi.html' title='Backup Database dengan Delphi'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-6393642697883037474</id><published>2010-04-02T20:25:00.000-07:00</published><updated>2010-04-02T20:33:05.316-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Refreshing Dataset</title><content type='html'>&lt;div style="text-align: justify;"&gt;Perintah untuk merefresh dataset memang sangat mudah yaitu tinggal panggil method:&lt;br /&gt;&lt;br /&gt;mydataset.close;&lt;br /&gt;mydataset.open;&lt;br /&gt;&lt;br /&gt;Tapi jika anda jeli, anda akan melihat bahwa posisi cursor dataset tersebut akan kembali ke atas(ke record pertama).  Lalu bagaimana cara merefresh dataset agar posisi cursor bisa kembali semula?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;with mydataset do begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    bm:=getbookmark;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    disablecontrols;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    close;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    open;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    finally&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    if bookmarkvalid(bm) then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    Gotobookmark(bm);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    enablecontrols;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    end;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-6393642697883037474?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/6393642697883037474/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/04/refreshing-dataset.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6393642697883037474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6393642697883037474'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/04/refreshing-dataset.html' title='Refreshing Dataset'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-4479305389205322447</id><published>2010-03-31T09:06:00.000-07:00</published><updated>2010-03-31T09:48:28.354-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS Gateway'/><title type='text'>Membuat SMS Gateway for SE-K700I dengan Delphi</title><content type='html'>Adakah komponen Delphi atau OCX untuk SMS Gateway yang support HP-Sony Erricson K700i?&lt;br /&gt;&lt;br /&gt;Setelah nyobain berbagai macam komponen maupun ActiveX mulai dari OxygenSMS, NowSMS, nrComm, Ozeki akhirnya saya menemukan sebuah OCX file yang support banget dengan HP kesayangan istri saya tersebut.  ActiveX tersebut namanya Kylix SMS Activex Control.&lt;br /&gt;&lt;br /&gt;Cara pakainya pun sangat begitu mudah yaitu:&lt;br /&gt;&lt;br /&gt;1.  Pasang blutut anda&lt;br /&gt;2.  Hidupkan blutut di HP.&lt;br /&gt;3.  Koneksikan ya antara HP dengan blutut.&lt;br /&gt;4.  Instal OCX nya dengan cara klik component--&gt;ActiveXControl--&gt;Instal. Lihat di tab ActiveX, pasti komponen anda sudah ada.&lt;br /&gt;5.  Untuk mengkoneksikannya lihat di demo software tersebut.&lt;br /&gt;6.  Untuk mendapatkan komponen tersebut cari di &lt;a href="http://www.google.com/"&gt;sini&lt;/a&gt;, kalau mau gretongan, ketik saja kata kuncinya Kylix SMS Rapid*share atau Hot*files atau Mega*Upload atau Deposit*Files(semua tanpa tanda bintang), pokoknya semua hostingan-hostingan yang berbau Warez.  Kalau sudah nyerah anda boleh hubungi saya.&lt;br /&gt;&lt;br /&gt;Dan ini adalah screen shoot dari SMS-SMS yang masuk di inbox HP dan saya tampung di TMemo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I_W3DDtwmHM/S7N8TQVdUrI/AAAAAAAAAG4/N7cQfdawzxU/s1600/SMS+Gateway+screen+shout.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_I_W3DDtwmHM/S7N8TQVdUrI/AAAAAAAAAG4/N7cQfdawzxU/s320/SMS+Gateway+screen+shout.JPG" alt="" id="BLOGGER_PHOTO_ID_5454840243920130738" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-4479305389205322447?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/4479305389205322447/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/03/membuat-sms-gateway-for-se-k700i-dengan.html#comment-form' title='5 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4479305389205322447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4479305389205322447'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/03/membuat-sms-gateway-for-se-k700i-dengan.html' title='Membuat SMS Gateway for SE-K700I dengan Delphi'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_I_W3DDtwmHM/S7N8TQVdUrI/AAAAAAAAAG4/N7cQfdawzxU/s72-c/SMS+Gateway+screen+shout.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-2208825226169852603</id><published>2010-03-28T21:00:00.000-07:00</published><updated>2010-03-29T09:39:09.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips Query'/><title type='text'>Cara Membuat CrossTab Query di MySQL atau Firebird</title><content type='html'>&lt;div style="text-align: justify;"&gt;Kelompok preman pasar "Jon Dekil" tiap tahun selalu merekap hasil palakannya di beberapa pasar di Kota Semarang.  Adapun rekapitulasi kelompok preman yang dipimpin oleh seorang kurus kerempeng bertubuh dekil karena jarang mandi yang dipanggil Jon Dekil ditunjukkan oleh tabel berikut:&lt;br /&gt;&lt;br /&gt;&lt;table style="text-align: left; margin-left: 0px; margin-right: 0px;" bgcolor="black" border="0" cellpadding="3" cellspacing="1"&gt;            &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td nowrap="nowrap"&gt;&lt;span style="color:white;"&gt;&lt;b&gt;PASAR&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap"&gt;&lt;span style="color:white;"&gt;&lt;b&gt;TAHUN&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap"&gt;&lt;span style="color:white;"&gt;&lt;b&gt;JUMLAH&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Peterongan&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;2009&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;4500000.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Mrican&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;2008&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;3500000.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Karangayu&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;2008&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;5000000.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Peterongan&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;2008&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;4250000.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Karangayu&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;2009&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;2500000.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Jika anda memakai query seperti ini:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;select pasar,&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;case when tahun=2008&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; then jumlah else 0 end &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;as duaribulapan,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;case when tahun=2009 then jumlah else 0 &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;end&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; as duaribusembilan  &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;from hasil_palakan&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="text-align: left; margin-left: 0px; margin-right: 0px;" bgcolor="black" border="0" cellpadding="3" cellspacing="1"&gt;            &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td nowrap="nowrap"&gt;&lt;span style="color:white;"&gt;&lt;b&gt;PASAR&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap"&gt;&lt;span style="color:white;"&gt;&lt;b&gt;DUARIBULAPAN&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap"&gt;&lt;span style="color:white;"&gt;&lt;b&gt;DUARIBUSEMBILAN&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Peterongan&lt;/td&gt;&lt;td&gt;&lt;span style="color:red;"&gt;0&lt;/span&gt;&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;4500000.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Mrican&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;3500000.00&lt;/td&gt;&lt;td&gt;&lt;span style="color:red;"&gt;0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Karangayu&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;5000000.00&lt;/td&gt;&lt;td&gt;&lt;span style="color:red;"&gt;0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Peterongan&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;4250000.00&lt;/td&gt;&lt;td&gt;&lt;span style="color:red;"&gt;0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Karangayu&lt;/td&gt;&lt;td&gt;&lt;span style="color:red;"&gt;0&lt;/span&gt;&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;2500000.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Padahal hasil yang diinginkan adalah seperti ini:&lt;br /&gt;&lt;table style="text-align: left; margin-left: 0px; margin-right: 0px;" bgcolor="black" border="0" cellpadding="3" cellspacing="1"&gt;            &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td nowrap="nowrap"&gt;&lt;span style="color:white;"&gt;&lt;b&gt;PASAR1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap"&gt;&lt;span style="color:white;"&gt;&lt;b&gt;DUARIBULAPAN&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap"&gt;&lt;span style="color:white;"&gt;&lt;b&gt;DUARIBUSEMBILAN&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Karangayu&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;5000000.00&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;2500000.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Mrican&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;3500000.00&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;0.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr bgcolor="white"&gt;&lt;td nowrap="nowrap"&gt;Peterongan&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;4250000.00&lt;/td&gt;&lt;td align="right" nowrap="nowrap"&gt;4500000.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Ada beberapa alternatif Query, di antaranya adalah seperti ini:&lt;br /&gt;select pasar,&lt;br /&gt;sum(duaribulapan) as duaribulapan,&lt;br /&gt;sum(duaribusembilan) as duaribusembilan&lt;br /&gt;from&lt;br /&gt;(select &lt;span style="font-weight: bold;"&gt;pasar as pasar&lt;/span&gt;,&lt;br /&gt;case when tahun=2008&lt;br /&gt;then jumlah else 0 end as&lt;span style="font-weight: bold;"&gt; duaribulapan&lt;/span&gt;,&lt;br /&gt;case when tahun=2009 then jumlah else 0 end&lt;br /&gt;as &lt;span style="font-weight: bold;"&gt;duaribusembilan&lt;/span&gt;  from hasil_palakan ) as alias1  group by&lt;br /&gt;pasar&lt;br /&gt;&lt;br /&gt;Tapi yang terbaik adalah ini:&lt;br /&gt;&lt;br /&gt;select pasar,&lt;br /&gt;sum(case when tahun=2008&lt;br /&gt;then jumlah else 0 end) as duaribulapan,&lt;br /&gt;sum(case when tahun=2009 then jumlah else 0 end)&lt;br /&gt;as duaribusembilan  from hasil_palakan group by pasar&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-2208825226169852603?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/2208825226169852603/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/03/cara-membuat-crosstab-query-di-mysql.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2208825226169852603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2208825226169852603'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/03/cara-membuat-crosstab-query-di-mysql.html' title='Cara Membuat CrossTab Query di MySQL atau Firebird'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-1655019342112030667</id><published>2010-03-26T09:19:00.000-07:00</published><updated>2010-03-26T10:42:06.878-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><category scheme='http://www.blogger.com/atom/ns#' term='My Application'/><title type='text'>Membuat Aplikasi Penjualan Sederhana dengan Delphi</title><content type='html'>Iseng-iseng saya membuat aplikasi penjualan sederhana dengan menggunakan Delphi 7 dan database Firebird.&lt;br /&gt;&lt;br /&gt;Adapun komponen-komponen yang saya gunakan adalah:&lt;br /&gt;&lt;br /&gt;1.  Express Quantum Grid&lt;br /&gt;2.  DBExpress&lt;br /&gt;3.  Zeos&lt;br /&gt;4.  Fast Report 4&lt;br /&gt;5.  Business Skin Form&lt;br /&gt;6.  Delphi Speedup untuk mempercepat kompilasi&lt;br /&gt;7.  Komponen buatan sendiri untuk menyimpan, mengedit dan menghapus data melalui ClientDataset yaitu AnsDBNavigator.  Komponen ini source codenya menjiplak dari DBNavigator dengan melakukan sedikit modifikasi.&lt;br /&gt;8.  Rokok dan kopi buat begadang.&lt;br /&gt;&lt;br /&gt;Dan berikut ini Screen Capturenya&lt;br /&gt;&lt;br /&gt;spoiler for sales&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_I_W3DDtwmHM/S6zrrtNMU8I/AAAAAAAAAGA/bSQEzSovNpM/s1600/sales+person.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_I_W3DDtwmHM/S6zrrtNMU8I/AAAAAAAAAGA/bSQEzSovNpM/s320/sales+person.JPG" alt="" id="BLOGGER_PHOTO_ID_5452992384940659650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;spoiler for faktur&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_I_W3DDtwmHM/S6zrsFSDD3I/AAAAAAAAAGI/jI6IW5Ub2Oc/s1600/faktur.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_I_W3DDtwmHM/S6zrsFSDD3I/AAAAAAAAAGI/jI6IW5Ub2Oc/s320/faktur.JPG" alt="" id="BLOGGER_PHOTO_ID_5452992391403474802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spoiler for Pembayaran&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_I_W3DDtwmHM/S6zrsgIRl-I/AAAAAAAAAGQ/GhZvwLJF3VQ/s1600/Pembayaran.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_I_W3DDtwmHM/S6zrsgIRl-I/AAAAAAAAAGQ/GhZvwLJF3VQ/s320/Pembayaran.JPG" alt="" id="BLOGGER_PHOTO_ID_5452992398610241506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;spoiler for laporan-laporan&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I_W3DDtwmHM/S6ztcE8N1iI/AAAAAAAAAGw/zwOhFWpA-S4/s1600/SALDO+PIUTANG.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_I_W3DDtwmHM/S6ztcE8N1iI/AAAAAAAAAGw/zwOhFWpA-S4/s320/SALDO+PIUTANG.JPG" alt="" id="BLOGGER_PHOTO_ID_5452994315457254946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_I_W3DDtwmHM/S6ztbeilf4I/AAAAAAAAAGg/fHlSOsqyLBw/s1600/STOK.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_I_W3DDtwmHM/S6ztbeilf4I/AAAAAAAAAGg/fHlSOsqyLBw/s320/STOK.JPG" alt="" id="BLOGGER_PHOTO_ID_5452994305149206402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I_W3DDtwmHM/S6ztbIXMLWI/AAAAAAAAAGY/Wz4tTpCM7fE/s1600/Perincian+Stok.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_I_W3DDtwmHM/S6ztbIXMLWI/AAAAAAAAAGY/Wz4tTpCM7fE/s320/Perincian+Stok.JPG" alt="" id="BLOGGER_PHOTO_ID_5452994299195829602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I_W3DDtwmHM/S6ztbo8f-7I/AAAAAAAAAGo/mL4X_9dOA0U/s1600/laporan+penjualan.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_I_W3DDtwmHM/S6ztbo8f-7I/AAAAAAAAAGo/mL4X_9dOA0U/s320/laporan+penjualan.JPG" alt="" id="BLOGGER_PHOTO_ID_5452994307942251442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spoiler for Link Download dengan source Code &lt;a href="http://www.4shared.com/file/249607902/419042b8/sales_with_source_code.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spoiler for Download without Source code &lt;a href="http://www.4shared.com/file/249644299/ece0c6b6/sales_without_source_code.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sebetulnya ada sedikit bug dalam aplikasi ini, dan saya masih malas memperbaikinya yaitu saat aplikasi ditutup muncul Access Vioalation di module ntdll.dll. &lt;br /&gt;&lt;br /&gt;Moga aplikasi sederhana dari saya itu bermanfaat buat anda, terutama yang masih menyusun skripsi atau TA yang mungkin dapat dijadikan bahan pembanding atau referensi.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-1655019342112030667?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/1655019342112030667/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/03/membuat-aplikasi-penjualan-sederhana.html#comment-form' title='6 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1655019342112030667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1655019342112030667'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/03/membuat-aplikasi-penjualan-sederhana.html' title='Membuat Aplikasi Penjualan Sederhana dengan Delphi'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_I_W3DDtwmHM/S6zrrtNMU8I/AAAAAAAAAGA/bSQEzSovNpM/s72-c/sales+person.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-4796640343727882250</id><published>2010-03-26T02:36:00.000-07:00</published><updated>2010-03-26T02:59:15.610-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Record Not Found Or Changed by another User, apakah penyebabnya?</title><content type='html'>Error ini adalah error internal di DBExpress yaitu saat onReconcillerror.  Error itu terjadi karena DBExpress bingung menentukan Record-record yang akan diupdate.  Biasanya error itu timbul karena:&lt;br /&gt;&lt;br /&gt;1.  Pemakaian default value pada field di tabel anda.  Jika anda mengisi nol, maka di ClientDataset saat OnNewRecord juga harus di isi nol.&lt;br /&gt;&lt;br /&gt;2.  Pemakaian trigger.&lt;br /&gt;&lt;br /&gt;Cek trigger anda terutama saat event before insert atau before update.  Set new.myfield=newvalue.   Jika field itu ditampilkan maka kemungkinan terjadi error karena tidak sinkron dengan yang diisikan di ClientDataset anda.&lt;br /&gt;&lt;br /&gt;3.  Perubahan data yang sama pada saat bersamaan oleh 2 user atau lebih. &lt;br /&gt;&lt;br /&gt;Contoh: user A melakukan edit data pada faktur no 1, pada saat bersamaan user B mengedit data atau menghapus data pada faktur tersebut.  Tentunya hal ini menimbulkan konflik sehingga menimbulan error seperti tersebut di atas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-4796640343727882250?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/4796640343727882250/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/03/record-not-found-or-changed-by-another.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4796640343727882250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4796640343727882250'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/03/record-not-found-or-changed-by-another.html' title='Record Not Found Or Changed by another User, apakah penyebabnya?'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-2493877791367075143</id><published>2010-03-26T02:06:00.000-07:00</published><updated>2010-03-26T09:17:28.032-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Yang Gratis Belum Tentu Lebih Letoy</title><content type='html'>Apakah delphi Database Engine yang terbaik untuk koneksi ke MySQL, apakah MySQLDAC, DBExpress, DBExpressPlus,ataukah Zeos?  Jawabannya relatif, karena tiap-tiap database engine punya kelebihan dan kelemahan sendiri-sendiri.  Lalu, manakah yang tercepat dari 4 database engine tersebut di atas?&lt;br /&gt;&lt;br /&gt;Untuk DBExpress dan DBExpressPlus+ClientDataset-nya, tidak terlalu cepat.  Hal ini bisa dimaklumi karena data ditampung di memori terlebih dahulu baru ditampilkan.  So, whats about Zeos vs MySQLDac.  Wow, ternyata Zeos dengan TZReadOnlyQuery-nya ternyata lebih cepat dari komponen TQuery di MySQLDac.  Setelah saya tes dengan hampir 100.000 record dengan join query, Zeos membutuhkan waktu cuma 3 koma sekian detik sedangkan MySQLDac sekitar 6 detikan.&lt;br /&gt;&lt;br /&gt;Sedangkan DBExpress vs DBExpressplus ternyata lebih cepat DBExpressPlus dimana DBExpressplus membutuhkan waktu 36 detik, sedangkan DBExpress sendiri memerlukan waktu 42 detik lebih pada Query yang sama.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-2493877791367075143?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/2493877791367075143/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/03/yang-gratis-belum-tentu-lebih-letoy.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2493877791367075143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2493877791367075143'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/03/yang-gratis-belum-tentu-lebih-letoy.html' title='Yang Gratis Belum Tentu Lebih Letoy'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-8641527116756147714</id><published>2010-03-26T01:33:00.000-07:00</published><updated>2010-03-26T09:02:54.999-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><title type='text'>Is it true that MySql is more faster than Firebird?</title><content type='html'>Karena terpicu oleh rasa penasaran saya, lebih cepat mana sih antara Firebird dan MySQL, saya melakukan tes Query join tabel yang melibatkan hampir 100.000 record pada tabel dan juga indek yang sama.&lt;br /&gt;&lt;br /&gt;Tes ini menggunakan EMS SQL Manager versi lite yang tentunya free.  Untuk MySQL nya adalah versi 5.0.41 Engine InooDB dan Firebird 2.1.3 versi SuperServer.  Hasilnya cukup mengejutkan, ternyata Firebird jauh lebih cepat dari MySQL(5x-nya). Dan berikut ini screeen capturenya:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I_W3DDtwmHM/S6zVyw2VaxI/AAAAAAAAAFo/_ZKQ09wxFgw/s1600/test+mysql.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_I_W3DDtwmHM/S6zVyw2VaxI/AAAAAAAAAFo/_ZKQ09wxFgw/s320/test+mysql.JPG" alt="" id="BLOGGER_PHOTO_ID_5452968316921801490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ini menggunakan koneksi MySQL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_I_W3DDtwmHM/S6zaWLu_FCI/AAAAAAAAAFw/psgiNnx0oXk/s1600/test+firebird.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_I_W3DDtwmHM/S6zaWLu_FCI/AAAAAAAAAFw/psgiNnx0oXk/s320/test+firebird.JPG" alt="" id="BLOGGER_PHOTO_ID_5452973323480667170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dan ini adalah dengan koneksi Firebird&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-8641527116756147714?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/8641527116756147714/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/03/is-it-true-that-mysql-is-more-faster.html#comment-form' title='3 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8641527116756147714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8641527116756147714'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/03/is-it-true-that-mysql-is-more-faster.html' title='Is it true that MySql is more faster than Firebird?'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_I_W3DDtwmHM/S6zVyw2VaxI/AAAAAAAAAFo/_ZKQ09wxFgw/s72-c/test+mysql.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-6649991030227553976</id><published>2010-03-25T23:34:00.000-07:00</published><updated>2010-03-26T09:14:45.201-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Virus'/><title type='text'>Virus CTFMon, marakke ngelu</title><content type='html'>&lt;div style="text-align: justify;"&gt;Gara-gara ingin dapat software gretongan, Mbahdien beberapa hari yang lalu dibuat pusing oleh ulah sang virus yang tiba-tiba menyerang si Bencis, kompi kesayangannya.  Virus itu didapat setelah mendonlod Crack-crackan RazorSQL di Hotfiles.  Karena file virus itu disamarkan sebagai keygen, tanpa basa-basi Mbahdien mengeksekusi file tersebut.&lt;br /&gt;&lt;br /&gt;Kali ini Mbahdien ketiban sial, saat diklik, tiba-tiba file tersebut hilang dan tiba-tiba si Bencis jadi lemot setengah mati.  Di task manager menunjukkan CPU Usage-nya 100%.  Saat dilihat di processlist, menunjukkan ada peningkatan aktivitas yaitu pengeksekusian ipconfig.exe dan cmd.exe secara terus menerus.   Ketika di end process, bukannya malah berhenti tapi malah terjadi peningkatan aktivitas yang luar biasa.&lt;br /&gt;&lt;br /&gt;Melihat hal tersebut, Mbahdien mengeluarkan jurus pertamanya yaitu pakai AVG, tapi sayang software ini tidak mempan karena tidak mampu mendeteksi virus tersebut.  Karena jurus pertama tidak mempan, Mbahdien mencoba update AVG terbaru tapi hasilnya juga nihil karena koneksi ke internet dibuat lemot setengah mateng.&lt;br /&gt;&lt;br /&gt;Iseng-iseng Mbahdien kemudian ke Warnet dan donload Antivirus Lokal yaitu SmaDav.  Dari scanning Smadav tersebut hanya didapat registry yang dicurigai terinfeksi yaitu HKLM\software\microsoft\windows\current version\run\ctfmon.exe dan HKLM\software\microsoft\windows\current version\run\conime.exe dengan nilai alamat path ctfmon.exe tersebut yaitu system32.   Disamping itu ada juga registry lain yang intinya merujuk ke ctfmon.exe.  Dari informasi yang didapat di Google, virus tersebut dinamakan virus Yahoo Messenger dan untuk variant yang hinggap di si Bencis itu, Mbahdien sendiri tidak tahu Variant yang mana.&lt;br /&gt;&lt;br /&gt;Setelah mengetahui penyebabnya, tugas selanjutnya adalah membunuh file tersebut.  Memang pekerjaan membunuh file sangat gampang yaitu tinggal pencet tombol shift+klik kanan dan press delete.  Tapi karena file tersebut processnya masih jalan tentunya anda tidak dapat menghapusnya semudah itu.  Setelah searching Om Google sebentar, jalan termudah untuk mendelete file yang masih running adalah dengan memakai unlocker file.&lt;br /&gt;&lt;br /&gt;Nah berikut step-step untuk menghajar virus tersebut:&lt;br /&gt;1.  Delete file msvbm50.dll serta ubah file msvbm60.dll(di Windows\system32)&lt;br /&gt;2.  Buka software Unlocker File(totally free) lalu cari file dengan nama ctfmon.exe dan juga beberapa file yang anda curigai sebagai virus(kalau di kompi Mbahdien sih namanya wmivcrt.exe atau wmicrt.exe, sory lali maklum wis pikun).&lt;br /&gt;3.  Hapus file-file tersebut.&lt;br /&gt;4.  Bersihkan temporary file dengan software penghapus temporary file.&lt;br /&gt;5.  Dan jangan lupa, setiap koneksi ke Internet, aktifkan dulu Firewall anda, karena virus itu tiba-tiba bisa muncul lagi sesaat setelah anda berhubungan dengan internet.&lt;br /&gt;6.  Saya sarankan jika aplikasi anda membutuhkan file msvbm60.dll, pindahkan aja ke folder aplikasi anda, jangan di system32, karena kebanyakan virus menggunakan library milik Visual Basic ini.&lt;br /&gt;&lt;br /&gt;Di balik musibah ada berkah. Ternyata beberapa hari kemudian Mbahdien tiba-tiba dihubungi oleh mantan bosnya kompinya juga terinfeksi virus.  Setelah dideteksi, ternyata kompi  mantan pimpinan mbahdien di Ganeca itu terjangkiti virus yang sama.  Akhirnya malam itu Mbahdien pulang dengan hati riang karena tidak perlu mengurangi jatah istri untuk beli rokok.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-6649991030227553976?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/6649991030227553976/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/03/virus-ctfmon-marakke-ngelu.html#comment-form' title='4 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6649991030227553976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6649991030227553976'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/03/virus-ctfmon-marakke-ngelu.html' title='Virus CTFMon, marakke ngelu'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-5226927355908790827</id><published>2010-03-25T23:12:00.000-07:00</published><updated>2010-03-25T23:31:37.130-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Hapus beberapa records di Dataset</title><content type='html'>Jika di DML untuk melakukan operasi penghapusan anda cukup menuliskan perintah:&lt;br /&gt;&lt;br /&gt;delete from mytable where [your key field]=your parameter value&lt;br /&gt;&lt;br /&gt;Lalu bagaimana perintah ini diimplementasikan ke Delphi TDataset dan off course juga turunannya?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    mydataset.disablecontrols;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     while not mydataset.eof do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;mydataset.delete;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;finally&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;mydataset.enablecontrols;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ini akan menghapus semua entry yang ada di dataset anda. &lt;br /&gt;&lt;br /&gt;Lalu bagaimana jika penghapusan tersebut disertai parameter?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;try&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;    mydataset.disablecontrols;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;     while not mydataset.eof do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            if mydataset.fieldbyname('mykolom').value=5 then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            mydataset.delete;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;            mydataset.next;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     end;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;finally&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;mydataset.enablecontrols;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maaf Jon, cara ini tidak bekerja sama sekali.  Cara ini akan menghapus record pertama, tapi tidak untuk record selanjutnya.&lt;br /&gt;&lt;br /&gt;Untuk menghapus beberapa record di Dataset, caranya cukup sederhana yaitu dengan menambahkan method filter pada procedure anda.  Jadi perintahnya menjadi seperti ini:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: courier new;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           mydataset.disablecontrols;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           mydataset.filtered:=true;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           mydataset.filter:='mykolom=5';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;           mydataset.first;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                while mydataset.eof do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                  mydataset.delete;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;finally&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;mydataset.enablecontrols;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;mydataset.filtered:=false;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-5226927355908790827?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/5226927355908790827/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/03/hapus-beberapa-records-di-dataset.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5226927355908790827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5226927355908790827'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/03/hapus-beberapa-records-di-dataset.html' title='Hapus beberapa records di Dataset'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-6914209479546924283</id><published>2010-03-25T21:23:00.000-07:00</published><updated>2010-03-25T23:12:29.467-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Express Quantum Grid'/><title type='text'>Update Multiple rows in EQG(ExpressQuantumGrid)</title><content type='html'>Kalau di DBGrid untuk update multiplerows anda dapat menggunakan method ini:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;b&gt;procedure&lt;/b&gt; TForm1.updateClick(Sender: TObject);&lt;br /&gt;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;   &lt;b&gt;for&lt;/b&gt; i := 0 &lt;b&gt;to&lt;/b&gt; DBGrid1.SelectedRows.Count-1 &lt;b&gt;do&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;     GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));&lt;br /&gt;     [your code or some operation here]&lt;br /&gt; &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Tapi hal ini tidak berlaku untuk EQG.&lt;br /&gt;&lt;br /&gt;Setelah searching di Jon Google, akhirnya ketemu juga cara melakukan operasi multiple rows&lt;br /&gt;buat Express Quantum Grid. Caranya adalah sebagai berikut:&lt;br /&gt;Pertama kali adalah set property &lt;span style="font-weight: bold;"&gt;smartrefresh&lt;/span&gt; ke true(this is must) terus tambahkan uses CxDataUtils di unit anda.&lt;br /&gt;&lt;br /&gt;Lalu tuliskan sintak berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;procedure Tfrmbgbank.BTN_UPDATEClick(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; I, APrevFocusedRecordIndex: Integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;with [your TCXGridDBTableView] do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   APrevFocusedRecordIndex := DataController.FocusedRecordIndex;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   DataController.BeginUpdate;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     for I := 0 to Controller.SelectedRecordCount - 1 do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      DataController.FocusedRecordIndex := Controller.SelectedRecords[I].RecordIndex;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      [your command here]&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;       &lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;DataController.SetEditValue([your TCxGridDBColumn.Index,[nilai yang akan diisi], evsValue);&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   finally&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     if DataController.DataSet.State in [dsEdit] then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       DataController.PostEditingData;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     DataController.FocusedRecordIndex := APrevFocusedRecordIndex;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     DataController.EndUpdate;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yang perlu diperhatikan disini adalah, saat property smartrefresh di set ke true, EQG tidak dapat melakukan operasi langsung ke dataset.  Jadi anda tidak dapat menuliskan kode seperti ini:&lt;br /&gt;&lt;br /&gt;mydataset.fieldbyname('my column').value:=my value;&lt;br /&gt;&lt;br /&gt;So, untuk mengisi data, anda harus menuliskan method SetEditValue(lihat DevExpress manual).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-6914209479546924283?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/6914209479546924283/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/03/update-multiple-rows-in.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6914209479546924283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6914209479546924283'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/03/update-multiple-rows-in.html' title='Update Multiple rows in EQG(ExpressQuantumGrid)'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-7083621346834024594</id><published>2010-01-16T07:51:00.000-08:00</published><updated>2010-01-16T08:05:23.135-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Cara Memindah-mindahkan Record dalam Tabel</title><content type='html'>Dalam pembuatan sebuah laporan akuntansi, setiap akun tentunya harus disusun secara sekuensial atau berurutan.  Akan terasa sangat aneh jika saat membuat laporan rugi laba, pada perhitungan HPP, anda menuliskan potongan pembelian dulu baru pembelian.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Sebagai ilustrasi, bila di MYOB Accounting pengaturan urutan itu tergantung kode yang diberikan, artinya kode yang semakin besar pasti ditempatkan paling bawah. Jika diprogram anda field kode bertipe varchar, yang tentunya akan sangat sulit dilakukan pengurutan, anda membutuhkan field pembantu yang berfungsi untuk mengurutkan record-record&lt;br /&gt;tersebut.  Taruh saja nama field tersebut adalah urut atau no_urut.&lt;br /&gt;&lt;br /&gt;Lalu bagaimana jika dalam urutan itu terlanjur terbalik antara satu dengan yang lain? Tentunya anda harus menukarkan record-record tersebut.&lt;br /&gt;&lt;br /&gt;Dan berikut ini contoh sintaksnya:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;procedure TFrmcoa.Button2Click(Sender: TObject);&lt;br /&gt;var urut1,urut2:integer;&lt;br /&gt;bm:Tbookmark;&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;if coa.Bof then exit;&lt;br /&gt; bm:=coa.GetBookmark;&lt;br /&gt; urut2:=coaurut.Value;&lt;br /&gt; coa.Prior;&lt;br /&gt;urut1:=coaurut.Value;&lt;br /&gt;coa.Edit;&lt;br /&gt;coaurut.Value:=urut2;&lt;br /&gt;coa.Post;&lt;br /&gt;coa.GotoBookmark(bm) ;&lt;br /&gt;coa.Edit;&lt;br /&gt;coaurut.Value:=urut1;&lt;br /&gt;coa.Post;&lt;br /&gt;coa.ApplyUpdates(0);&lt;br /&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Catatan:&lt;br /&gt;&lt;br /&gt;- Coa adalah nama komponen untuk ClientDataset(komponen turunan Dataset favorit saya)&lt;br /&gt;- Record yang dipertukarkan adalah record sebelumnya.&lt;br /&gt;- Di tabel anda field "urut" jangan diindeks unique atau Primary key.&lt;br /&gt;&lt;br /&gt;Lihat gambar berikut:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_I_W3DDtwmHM/S1HhaRUAuUI/AAAAAAAAAFY/QJDXoY9NXBI/s1600-h/screcordpindah1.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_I_W3DDtwmHM/S1HhaRUAuUI/AAAAAAAAAFY/QJDXoY9NXBI/s320/screcordpindah1.JPG" alt="" id="BLOGGER_PHOTO_ID_5427366867398342978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dan ini adalah akun listrik yang saya tempatkan dibawah akun biaya operasional dengan menekan tombol up berulang-ulang.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I_W3DDtwmHM/S1Hhazhl-oI/AAAAAAAAAFg/jrZ3zFBwktM/s1600-h/screcordpindah2.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_I_W3DDtwmHM/S1Hhazhl-oI/AAAAAAAAAFg/jrZ3zFBwktM/s320/screcordpindah2.JPG" alt="" id="BLOGGER_PHOTO_ID_5427366876582115970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Untuk kebalikannya, yaitu menurunkan record, anda bisa mengganti sintaks "bof" dengan&lt;br /&gt;"eof" serta "prior" dengan "next".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-7083621346834024594?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/7083621346834024594/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2010/01/cara-memindah-mindahkan-record-dalam.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7083621346834024594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7083621346834024594'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2010/01/cara-memindah-mindahkan-record-dalam.html' title='Cara Memindah-mindahkan Record dalam Tabel'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_I_W3DDtwmHM/S1HhaRUAuUI/AAAAAAAAAFY/QJDXoY9NXBI/s72-c/screcordpindah1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-8782286951161288333</id><published>2009-12-24T17:23:00.000-08:00</published><updated>2009-12-24T17:25:55.027-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Menghitung Hari Pasaran</title><content type='html'>Dalam kalender Jawa kita mengenal 5 hari pasaran secara berurutan yaitu&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Legi, Pahing, Pon, Wage, Kliwon&lt;br /&gt;&lt;br /&gt;Untuk menentukan hari pasaran, kita harus menentukan sebuah tanggal&lt;br /&gt;sebagai constanta pembanding.  Contoh tanggal 24 Desember 2009 hari pasarannya adalah Legi.&lt;br /&gt;&lt;br /&gt;Nah berikut ini adalah algoritmanya&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function getpasaran(const tgl:Tdatetime):string;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;const Apasar:array[0..4] of string=(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;'Legi','Pahing','Pon','Wage','Kliwon');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;tgllegi:Tdatetime ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  hariantara:integer;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;tgllegi:=encodedate(2009,12,24);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;hariantara:=daysbetween(dateof(tgl),dateof(tgllegi)) ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if tgl&gt;=tgllegi then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; result:=Apasar[hariantara mod 5]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; else result:=Apasar[((hariantara*5)-hariantara) mod 5];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note:Jangan lupa tambahkan uses dateutils di unit anda.&lt;br /&gt;&lt;br /&gt;Dari algoritma tersebut, kita bisa menentukan kalau hari pasaran tanggal kemerdekaan&lt;br /&gt;kita adalah Legi dan hari pasaran hari Sumpah Pemuda adalah Wage.  Lalu, apakah hari pasaran&lt;br /&gt;anda?  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-8782286951161288333?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/8782286951161288333/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/12/menghitung-hari-pasaran.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8782286951161288333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8782286951161288333'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/12/menghitung-hari-pasaran.html' title='Menghitung Hari Pasaran'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-821119919302380780</id><published>2009-10-25T10:38:00.000-07:00</published><updated>2009-10-25T10:41:10.623-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dasar-dasar Delphi/OOP'/><title type='text'>Virtual Method</title><content type='html'>Lihat kode berikut:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;unit Unit1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Dialogs, StdCtrls;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Tibu=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  procedure p;virtual;\\&lt;/span&gt;anda dapat mengganti virtual dengan dynamic&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      Tanak=class(Tibu)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      procedure p;override;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TForm1 = class(TForm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Button1: TButton;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Private declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Public declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Form1: TForm1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{$R *.dfm}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          { Tibu }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; procedure Tibu.p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; showmessage('Ibu');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{ Tanak }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Tanak.p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  showmessage('anak');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;//taruh tombol di form anda, klik dua kali dan ketik perintah berikut&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var anak:Tanak;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;anak:=Tanak.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;anak.p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//&lt;/span&gt;coba juga perintah ini:Tibu(anak).p;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Method di atas bersifat virtual, artinya method itu bersifat dinamis, menyesuaikan dengan class yang memanggilnya.  Agar anda lebih jelas lagi coba anda lakukan langkah berikut:&lt;br /&gt;&lt;br /&gt;Hilangkan kata virtual dan override yang tercantum di atas.&lt;br /&gt;&lt;br /&gt;Ganti perintah &lt;span style="font-style: italic;"&gt;anak.p&lt;/span&gt; dengan&lt;span style="font-style: italic;"&gt; Tibu(anak).p&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lihat hasilnya.&lt;br /&gt;&lt;br /&gt;Tambahkan lagi kata virtual dan override.&lt;br /&gt;&lt;br /&gt;Lihat hasilnya lagi.&lt;br /&gt;&lt;br /&gt;Penjelasan:&lt;br /&gt;Jika perintah virtual dan override di hilangkan, maka method tersebut melaksanakan perintah dari class moyangnya(Tibu), method ini di namakan method  statis.  Tapi jika method itu virtual, maka ia melaksankan method dari class turunannya.&lt;br /&gt;&lt;br /&gt;Di helpnya Delphi di jelaskan bahwa virtual method dan dynamic method adalah sama, yang membedakannya hanyalah bahwa virtual lebih mengoptimasikan kecepatan, sedang dynamic methods adalah ukuran kodenya.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-821119919302380780?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/821119919302380780/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/virtual-method.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/821119919302380780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/821119919302380780'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/virtual-method.html' title='Virtual Method'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-237870798043326414</id><published>2009-10-22T21:00:00.000-07:00</published><updated>2009-10-22T21:02:33.051-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Perbedaan Definer dan Invoker pada Stored Procedure/function di MySQL</title><content type='html'>CREATE PROCEDURE `sp_test`(param1 varchar(20))&lt;br /&gt;    NOT DETERMINISTIC&lt;br /&gt;    SQL SECURITY INVOKER&lt;br /&gt;    COMMENT ''&lt;br /&gt;BEGIN&lt;br /&gt;insert into tabel1(a,b) values(1,param1);&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;Anda lihat sintaks stored procedure di atas?  Ada kata-kata SQL Security Invoker.  Apa yang dimaksud SQL Security Invoker dan apa bedanya dengan SQL Security Definer? &lt;br /&gt;&lt;br /&gt;Keyword Invoker dan keyword Definer berhubungan dengan hak-hak privileges pada account database anda.  Agar lebih jelas ikuti langkah-langkah berikut ini:&lt;br /&gt;&lt;br /&gt;Buat tabel baru misalnya tabel1 seperti contoh diatas, dengan  field a bertipe integer dan field b bertipe varchar(20);&lt;br /&gt;&lt;br /&gt;Buat user baru misalnya joni, mau pakai prompt mysql terserah atau kalau lebih praktis pakai EMS SqlManager.&lt;br /&gt;&lt;br /&gt;Beri semua hak privileges pada account joni tersebut kecuali untuk insert tabel.&lt;br /&gt;&lt;br /&gt;Sekarang anda masuk ke database anda gunakan user  root(promptnya mysql -u root -ppassword anda).&lt;br /&gt;Buat stored procedure seperti di atas&lt;br /&gt;&lt;br /&gt;Masuk lagi ke database anda, tapi dengan user joni yang baru anda buat tadi(promptnya mysql -u joni-ppassword anda).&lt;br /&gt;&lt;br /&gt;Sekarang sebagai user joni anda coba eksekusi procedure diatas.  Pasti akan timbul error seperti ini:&lt;br /&gt;“INSERT command denied to user 'joni'@'localhost' for table 'tabel1' “&lt;br /&gt;&lt;br /&gt;Hal ini dikarenakan user joni tidak punya hak untuk insert tabel, jadi saat stored procedure itu dieksekusi otomatis dia tidak bisa memasukkan data ke tabel1.  Berbeda dengan ketika anda menggunakan keyword definer, meskipun anda(sebagai user joni) tidak punya hak insert tabel, tapi anda masih bisa eksekusi(baca memasukkan data ke tabel1) stored procedure itu.  Coba saja kalau nggak percaya, ganti aja invoker dengan definer, pasti data bisa masuk dengan sukses alias tidak ada error.&lt;br /&gt;&lt;br /&gt;Catatan: Setelah anda buat user dan memberi hak privileges, service mysqlnya harus direstart dulu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-237870798043326414?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/237870798043326414/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/perbedaan-definer-dan-invoker-pada.html#comment-form' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/237870798043326414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/237870798043326414'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/perbedaan-definer-dan-invoker-pada.html' title='Perbedaan Definer dan Invoker pada Stored Procedure/function di MySQL'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-8805873144004101134</id><published>2009-10-22T16:22:00.000-07:00</published><updated>2009-10-22T16:25:28.434-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Tips Optimasi Query MySql</title><content type='html'>Berikut akan saya berikan tips optimasi di MySQL yang sering saya digunakan.&lt;br /&gt;&lt;br /&gt;1. Untuk join tabel sebaiknya gunakan inner join daripada left join atau right join.&lt;br /&gt;&lt;br /&gt;2. Cek indek-indek di tabel anda terutama untuk field-field yang sering di join.  Secara default hal ini sudah dilakukan saat anda membuat primary key dan foreign key.  Jadi anda jangan lupa untuk memasang primary dan foreign key di tabel anda..&lt;br /&gt;&lt;br /&gt;3. Untuk nilai-nilai unik gunakan AutoIncrement.&lt;br /&gt;&lt;br /&gt;4. Gunakan persistent connection(koneksi yang terus menerus).  Dalam artian anda dilarang untuk membuka tutup koneksi.  Di help Mysql dijelaskan bahwa kalau anda membuka tutup koneksi maka bisa menyebabkan connection overhead.&lt;br /&gt;&lt;br /&gt;5. Hindari query yang kompleks untuk tabel yang menggunakan MyISAM dan sering diupdate.  Jadi kalau pengin aman gunakan Engine InnoDB saja.&lt;br /&gt;&lt;br /&gt;6. Gunakan Explain sintak untuk mengetahui informasi dari pernyataan Select&lt;br /&gt;&lt;br /&gt;7. Sebisa mungkin hindari Sub Query. &lt;br /&gt;&lt;br /&gt;Berdasar pengalaman saya sering terjadi kasus dimana saya di haruskan sub query yang menggunakan klausa “not in”.  Contoh:&lt;br /&gt;Select f.kode_faktur,f.tanggal, from faktur f where f.kode_faktur not in(select kode_faktur from gudang_keluar).&lt;br /&gt;Untuk meningkatkan kecepatan akses datanya, anda dapat menggantinya dengan sintak berikut :&lt;br /&gt;Select f.kode_faktur,f.tanggal from faktur f left join gudang_keluar g on f.kode_faktur=g.kode_faktur where g.kode_faktur is null&lt;br /&gt;Di samping mempengaruhi kecepatan, berdasar pengalaman saya juga, klausa not in untuk jumlah data yang besar kadang hasil yang di dapat tidak sesuai dengan yang saya harapkan.&lt;br /&gt;&lt;br /&gt;Tips-tips di atas adalah berdasar pengalaman saya.   Kalau anda pengin lihat lebih detail lagi lihat saja di helpnya mysql, lebih komplet lagi plus menambah pusing kepala.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-8805873144004101134?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/8805873144004101134/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/tips-optimasi-query-mysql.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8805873144004101134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8805873144004101134'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/tips-optimasi-query-mysql.html' title='Tips Optimasi Query MySql'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-7460086849907365332</id><published>2009-10-20T23:28:00.001-07:00</published><updated>2009-10-20T23:28:51.694-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dasar-dasar Delphi/OOP'/><title type='text'>Static Method</title><content type='html'>Lihat  kode berikut&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;unit delphiclass;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Dialogs, StdCtrls;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TIbu=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;protected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Tanak=class(Tibu)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  procedure p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Tcucu=class(Tanak)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      procedure p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TForm1 = class(TForm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Button1: TButton;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Private declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Public declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Form1: TForm1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{$R *.dfm}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{ TIbu }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TIbu.p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    showmessage('Ibu');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{ Tanak }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Tanak.p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   inherited;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; showmessage('Anak');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{ Tcucu }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Tcucu.p;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;inherited;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage('Cucu');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tambahkan komponen button, kemudian ketik kode berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var cucu:Tcucu;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cucu:=Tcucu.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cucu.p; //hasilnya muncul pesan 3 kali ibu, anak, cucu&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; cucu.Destroy;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cucu:=Tcucu.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tibu(Cucu).p;  //hasilnya pesan Ibu&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cucu.Destroy;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cucu:=Tcucu.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tanak(cucu).p;  //hasilnya pesan ibu,anak;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cucu.Destroy;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cucu:=Tanak.create;//error compile(incompatible types Tcucu and Tanak),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//karena moyangnya(Tanak)  tidak bisa membuat&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//instanisasi object dari turunannya(Tcucu)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Procedure p di atas merupakan method static. Artinya, untuk tiap class yang diturunkan dari moyangnya dan kebetulan punya method yang sama, maka method dari class di atasnya yang di panggil.&lt;br /&gt;&lt;br /&gt;Sedang untuk reserved word “inherited” di atas menandakan bahwa method di class atasnya di wariskan kepada class turunannya. Untuk percobaan saja coba hilangkan “inherited” dari program tersebut, kemudian compile kembali. Tampak bahwa method di class yang bawah ketika melaksanakan procedure p, ia malah menjalankan method atau procedure class di atasnya. Misal:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tibu(cucu).p;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hasilnya adalah showmessage “ibu” bukan showmessage “cucu”.&lt;br /&gt;&lt;br /&gt;Untuk lebih jelasnya, akan berikan contoh riil sesuai class-class yang ada di delphi. Lihat kode berikut:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;unit delphiclass1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Dialogs,delphiclass, StdCtrls;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TCb=class(Tcombobox)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure show;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TForm2 = class(TForm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Button1: TButton;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Private declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Public declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Form2: TForm2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{$R *.dfm}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{ TCb }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TCb.Show;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  inherited hide;//mewariskan method hide dari moyangnya.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage('Muncul');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// taruh komponen button di form anda, klik dua kali lalu tulis perintah berikut:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm2.Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var cb:TCb;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cb:=Tcb.Create(Self);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cb.Parent:=self;// dengan perintah ini instanisasi object anda telah muncul di form&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cb.show;// anda boleh hilangkan perintah ini, dan lihat hasilnya.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Anda dapat mengganti perintah show di atas dengan&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tcombobox(cb).show;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TCustomcombo(cb).show;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TWinControl(cb).show;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tcontrol(cb).show;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-7460086849907365332?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/7460086849907365332/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/static-method.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7460086849907365332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7460086849907365332'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/static-method.html' title='Static Method'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-3484581341832907428</id><published>2009-10-20T00:49:00.000-07:00</published><updated>2009-10-20T00:51:21.983-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dasar-dasar Delphi/OOP'/><title type='text'>Class reference</title><content type='html'>Mungkin saat mempelajari delphi sering melihat sintak yang berbunyi “class of”.  Contoh(ini saya ambil di forms.pas)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; Tformclass = class of Tform;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Contoh diatas dalam dunia pemograman delphi disebut class reference.&lt;br /&gt;&lt;br /&gt;Untuk implementasi berdasar contoh di atas dapat saya tuliskan sebagai berikut:&lt;br /&gt;&lt;br /&gt;Buka delphi anda, akan tampak tampilan form1.  Terus tambahkan 2 form lagi.  Beri nama defaultnya(form2 dan form3).&lt;br /&gt;Untuk unit1(form1) tambahkan uses ke unit2(form2) dan unit3(form3).&lt;br /&gt;Tambahkan tombol di form1 tersebut dan ketik perintah berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      mclass:Tformclass;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  f2,f3:Tform;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  mclass:=Tform2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  f2:=mclass.create(self);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  f2.Show;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   mclass:=Tform3;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   f3:=mclass.Create(Self);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   f3.Show;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jalankan aplikasi anda dan klik tombol tersebut.&lt;br /&gt;&lt;br /&gt;variable “mclass” merupakan variable bertipe class reference.  Variabel jenis ini digunakan bila kita ingin memanggil class method(lihat di delphi definisi class method) atau constructor suatu kelas melalui variabel.&lt;br /&gt;&lt;br /&gt;Saya akan berikan contoh lagi agar anda lebih paham mengenai class reference.  Tambahkan button1 ke form anda lalu salin saja kode berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;unit Unit1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Dialogs, StdCtrls;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TMilan=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   class procedure champione;// ini di sebut class method.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   procedure ngicik;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tmilanisti=class of Tmilan;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Tmilan1=class(Tmilan)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    class procedure mobom;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TForm1 = class(TForm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Button1: TButton;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Private declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Public declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Form1: TForm1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{$R *.dfm}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;class procedure Tmilan.champione;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    showmessage('Milan champione');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TMilan.ngicik;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage('Ngicik');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;class procedure Tmilan1.mobom;//&lt;/span&gt;unused method alias tidak berguna, cuma assesoris aja&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage('Mobom');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   var mli:Tmilanisti;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   m1:Tmilan;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;mli:=Tmilan1;// &lt;/span&gt;assign ke class Tmilan1&lt;br /&gt;&lt;span style="font-style: italic;"&gt; m1:=mli.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; m1.ngicik;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; m1.champione;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;m1.mobom// &lt;/span&gt;error karena variabel mli mengacunya ke class Tmilan bukan Tmilan1.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-3484581341832907428?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/3484581341832907428/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/class-reference.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/3484581341832907428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/3484581341832907428'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/class-reference.html' title='Class reference'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-2427789271552543284</id><published>2009-10-15T10:14:00.000-07:00</published><updated>2009-10-15T10:18:12.261-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dasar-dasar Delphi/OOP'/><title type='text'>Forward Declaration</title><content type='html'>Suatu class dapat saling ketergantungan satu dengan yang lain.  Saya ambilkan contoh class TDBGRID(lihat di DBGrid.pas di IDE Delphi anda).  Class TDBGrid moyangnya adalah TcustomDBgrid.  Dalam pembuatannya, class TcustomDBGrid memerlukan class Tgriddatalink.  Secara struktural sederhana dalam pendeklarasiannya adalah sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tgriddatalink=class(Tdatalink)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FGrid: TcustomDBGrid;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TcustomDBGrid=class(TGrid)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FDataLink: TgridDataLink;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dalam implementasinya, ketika class Tgriddatalink memanggil method di field Fgrid, contoh:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Fgrid.EditingChanged;  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;maka hal tersebut tidak menimbulkan masalah karena secara struktur class TcustomDBgrid di bawah class Tgriddatalink.  Tapi sebaliknya jika class TcustomDbgrid memanggil method yang ada di field Fdatalink akan menyebabkan compile error karena class Tgriddatalink di atas TcustomDBGrid.  Untuk mengatasi hal tersebut anda harus terlebih dahulu mendeklarasikan class TcustomDBgrid di atas Class Tgriddatalink.  Agar anda lebih jelas lihat sintak berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TcustomDBGrid=class;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tgriddatalink=class(Tdatalink)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FGrid: TcustomDBGrid;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TcustomDBGrid=class(TGrid)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FDataLink: TgridDataLink;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Hal tersebut di atas di Delphi di namakan forward declaration.  Sebagai latihan saja, coba anda praktekkan sintak berikut di project Delphi anda:&lt;br /&gt;&lt;br /&gt;Ketik kode berikut di bawah tulisan type unit anda&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tanak=class;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Tibu=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Fanak:Tanak;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   Constructor Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Tanak=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Fibu:Tibu;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   Public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   Constructor Create(AIbu:TIbu;nama:string);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;setelah itu ketik juga implementasinya&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;constructor Tibu.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage('Ibu di buat');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Fanak:=Tanak.Create(Self,'mbahdien');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{ Tanak }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;constructor Tanak.Create(AIbu: TIbu; nama: string);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;inherited Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Fibu:=Aibu;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Showmessage(nama);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Saat form create ketik perintah berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var ibu:Tibu;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     ibu:=Tibu.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Untuk lebih lengkapnya lihat kode berikut:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;unit Unit1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Dialogs, StdCtrls, Mask, DBCtrls, Grids, DBGrids;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Tanak=class;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Tibu=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Fanak:Tanak;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   Constructor Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Tanak=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Fibu:Tibu;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   Public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   Constructor Create(AIbu:TIbu;nama:string);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TForm1 = class(TForm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Private declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Public declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Form1: TForm1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{$R *.dfm}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{ Tibu }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;constructor Tibu.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage('Ibu di buat');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Fanak:=Tanak.Create(Self,'mbahdien');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{ Tanak }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;constructor Tanak.Create(AIbu: TIbu; nama: string);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;inherited Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Fibu:=Aibu;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Showmessage(nama);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var ibu:Tibu;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     ibu:=Tibu.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-2427789271552543284?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/2427789271552543284/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/forward-declaration.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2427789271552543284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2427789271552543284'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/forward-declaration.html' title='Forward Declaration'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-5392166168003000328</id><published>2009-10-15T10:09:00.000-07:00</published><updated>2009-10-15T10:13:12.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dasar-dasar Delphi/OOP'/><title type='text'>EabstractError</title><content type='html'>Salin kode berikut ini di bagian bawah tulisan type&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Tcoba=class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  protected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  function gethitung:integer;virtual;abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   function getjumlah: integer; virtual;abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Setjumlah(const Value: integer);virtual;abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  property jumlah:integer read getjumlah write Setjumlah;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   property hitung:integer read gethitung;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Klik 2 kali form anda (event OnCreate) lalu isikan kode berikut::&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var coba:Tcoba;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;coba:=Tcoba.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;coba.jumlah:=5;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Kode lengkapnya berikut ini:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;unit Unit1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Dialogs, StdCtrls;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tcoba=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function getjumlah: integer; virtual;abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Setjumlah(const Value: integer);virtual;abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  property jumlah:integer read getjumlah write Setjumlah;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TForm1 = class(TForm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Private declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Public declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Form1: TForm1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{$R *.dfm}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var coba:Tcoba;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;coba:=Tcoba.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;coba.jumlah:=5;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Compile project anda dan jalankan, pasti akan muncul pesan EabstractError.&lt;br /&gt;&lt;br /&gt;Penyebabnya adalah Class Tcoba tersebut mempunyai method setjumlah dan getjumlah yang bersifat abstract.  Lalu apakah yang di maksud abstract Method?&lt;br /&gt;&lt;br /&gt;Abstract method adalah suatu method yang bersifat virtual atau dynamic yang tidak ada implementasinya.  Implementasi abstract method tersebut ada di Class turunannya. &lt;br /&gt;&lt;br /&gt;Agar anda lebih gampang memahaminya akan saya contohkan class yang berisi Abstract Method yaitu Tstrings.&lt;br /&gt;&lt;br /&gt;Di helpnya Delphi di jelaskan bahwa kita tidak boleh membuat instanisasi Tstrings langsung dari classnya melainkan harus dari class di bawahnya.&lt;br /&gt;&lt;br /&gt;Misal:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Var ls:Tstrings;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Ls:=Tstrings.create;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;End;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jika anda melaksanakan perintah di atas dan di eksekusi saya yakin tidak ada masalah.  Tapi bagaimana jika setelah itu anda melaksanakan satu method saja dari Tstrings, misal: ls.add(‘ayam’);&lt;br /&gt;&lt;br /&gt;Pasti akan muncul pesan “Abstract Error”.&lt;br /&gt;Di Class Tstrings sebenarnya cuma ada 3 method aja yang bersifat abstract dan terletak di bagian public yaitu:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure Delete(Index: Integer); virtual; abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Insert(Index: Integer; const S: string); virtual; abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Clear; virtual; abstract;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tapi method-method ini saling berhubungan dengan seluruh method di class Tstrings.  Akibatnya apa?  Setiap anda menuliskan method tertentu, maka langsung atau tidak langsung ia akan berhubungan dengan 3 method di atas.  Hal itulah yang menyebabkan EabstractError tiap kali anda melakukan sebagian atau seluruh method yang ada di Scope public class Tstrings .  Lalu bagaimana cara mengatasinya.&lt;br /&gt;&lt;br /&gt;Implementasi Abstract Method di Tstrings harus ada di class di bawahnya contohnya Tstringlist.  Jadi jika anda ingin melakukan semua method yang ada di Tstrings anda harus membuat Instanisasi Object dari Tstringlist.  Contoh:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Var ls:Tstrings;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Ls:=Tstringlist.create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Ls.clear;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Ls.add(‘ayam’);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;End;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Compile program anda, jalankan, dan saya yakin tidak ada masalah.&lt;br /&gt;&lt;br /&gt;Sekarang kembali ke pertanyaan di atas tadi, untuk apa abstract method di buat?&lt;br /&gt;&lt;br /&gt;Anda tentunya tahu komponen Memo dan Combobox.  Di situ terdapat property yang bertipe Tstrings yaitu Lines untuk Memo dan Items untuk Combobox.  Meskipun dua-duanya punya tipe data Tstrings, namun dalam implementasi abstract method Class Tstrings mereka punya Class sendiri-sendiri.  Untuk Tmemo ialah TmemoStrings sedang Tcombobox adalah TcustomComboBoxStrings(sama-sama turunan Tstrings). &lt;br /&gt;&lt;br /&gt;Di Class Tstrings itu ada procedure clear.  Berikut adalah implementasi dari method Clear tersebut di Class TcustomcomboboxStrings:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TCustomComboBoxStrings.Clear;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  S: string;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  S := ComboBox.Text;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  SendMessage(ComboBox.Handle, CB_RESETCONTENT, 0, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  ComboBox.Text := S;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  ComboBox.Update;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;dan ini adalah di TmemoStrings&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure TMemoStrings.Clear;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Memo.Clear;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dari contoh tersebut tampak jelas perbedaan implementasi abstract method di class Tstrings.&lt;br /&gt;&lt;br /&gt;Lalu apa kesimpulannya?  Abstract Method berguna untuk kustomisasi\referensi method.  Dengan bahasa sederhananya, meskipun implementasi method di class turunannya berbeda, tapi ia harus memberikan hasil yang sama.  Contohnya adalah method Clear seperti tersebut di atas.  Method itu pada intinya adalah mengosongkan teks.  Sehingga jika di baca di class-class turunan Tstrings yang lain tetap sama hasilnya.  Contoh:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Var ls:Tstrings;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Ls:=Tstringlist.create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Ls:=memo1.lines;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Caption:=inttostr(ls.count);//Akan sama dengan  Caption:=inttostr(memo1.lines.count);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;End;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Berikut akan saya berikan contoh pembuatan class yang mempunyai abstract method dan semoga anda memahaminya:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;unit Uabstract;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Dialogs,Stdctrls;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Tcoba=class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  protected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  function gethitung:integer;virtual;abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   function getjumlah: integer; virtual;abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Setjumlah(const Value: integer);virtual;abstract;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  property jumlah:integer read getjumlah write Setjumlah;//di class ini property jumlah, function gethitung &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cuma sebagai referensi aja.  Artinya kita tidak tahu pelaksanannya bagaimana dan &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; hasilnya apa, karena implementasinya ada di class bawahnya.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   property hitung:integer read gethitung; //belum tahu hasilnya.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Tcoba1=class(Tcoba)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Fjumlah:integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    published&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       function getjumlah: integer;override;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Setjumlah(const Value: integer);override;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     function gethitung:integer;override;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     property hitung:integer read gethitung;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Tcoba2=class(TCoba)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Fjumlah:integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    published&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      function getjumlah: integer;override;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Setjumlah(const Value: integer);override;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       function gethitung:integer; override;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       property hitung:integer read gethitung;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TForm1 = class(TForm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Private declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Public declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Form1: TForm1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{$R *.dfm}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Tcoba1.Setjumlah(const Value: integer);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   Fjumlah:=value;//menyimpan nilai Fjumlah&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function Tcoba1.getjumlah: integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   result:=Fjumlah; //mendapatkan hasilnya&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function Tcoba1.gethitung: integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;result:=jumlah+1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Tcoba2.Setjumlah(const Value: integer);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   Fjumlah:=value;//menyimpan jumlah&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function Tcoba2.getjumlah: integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   result:=Fjumlah;//di baca hasilnya&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function Tcoba2.gethitung: integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;result:=jumlah+2-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var coba1:Tcoba;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;coba2:Tcoba;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;coba1:=Tcoba1.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;coba1.jumlah:=5;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage(inttostr(coba1.hitung));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; coba2:=Tcoba2.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; coba2.jumlah:=5;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; showmessage(inttostr(coba2.hitung)); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-5392166168003000328?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/5392166168003000328/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/eabstracterror.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5392166168003000328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5392166168003000328'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/eabstracterror.html' title='EabstractError'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-1624382131220651293</id><published>2009-10-15T09:57:00.001-07:00</published><updated>2009-10-15T10:06:06.121-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dasar-dasar Delphi/OOP'/><title type='text'>Properties</title><content type='html'>Di Object Inspector delphi anda, ada dua tab yang berisi properties dan event.  Kali ini saya akan membahas mengenai properties dan bagaimana cara membuatnya.&lt;br /&gt;&lt;br /&gt;Tidak semua properties di komponen bersifat published yang artinya bisa langsung di object inspector.  Kadang-kadang kita membutuhkan property dengan scope public yang artinya kita harus menulisnya di code editor.  Property dengan scope public ini biasanya hanya dapat di baca saja(meskipun tidak selalu).  Contoh property yang bersifat public adalah property State di class Tdataset dan turunannya(Tquery,Tadodataset,Tclientdataset dan lain sebagainya).&lt;br /&gt;&lt;br /&gt;Agar anda dapat lebih memahami langsung mengenai properties di Delphi, sekarang kita praktek langsung cara membuat property.&lt;br /&gt;&lt;br /&gt;Klik 2 kali form anda dan taruh kode berikut&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tsimbahproperty=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Fmakan:string;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;protected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Setmakan(nilai:string);virtual;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;property makan:string read Fmakan write Setmakan;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TForm1 = class(TForm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Private declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Public declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Sekarang ketik kode berikut di bagian bawah implementasi:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure Tsimbahproperty.Setmakan(nilai: string);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage(‘Simbah makan ‘+nilai);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Berikutnya tulis syntak berikut saat event oncreate di form anda:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Simbah:Tsimbahproperty;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Simbah:=Tsimbahproperty.Create;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;simbah.makan:='Ayam';&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;end;&lt;br /&gt;Hasilnya: Simbah makan ayam&lt;br /&gt;&lt;br /&gt;Mungkin anda bertanya mengapa field Fmakan tidak di gunakan?  Ini karena saya mengajarkan penulisan property yang dengan method write.  Property method write?  Apa artinya?&lt;br /&gt;&lt;br /&gt;Artinya penyebutan property itu di sebelah kirinya dan isi nilai property di sebelah kanannya.  Contoh Edit1.text:=’amir’;&lt;br /&gt;Berbanding terbalik dengan property method read.  Property dengan method read di gunakan ketika kita membuat persamaan, yang mana isi persamaan itu mengambil nilai tersebut.  Saya ambilkan contoh:caption:=Edit1.text;&lt;br /&gt;Edit1.text itu di baca oleh property Caption di form, dan property Caption di form itu gantian melakukan method write.&lt;br /&gt;&lt;br /&gt;Sekarang kita kembali pada contoh di atas.  Anda lihat procedure Setmakan.  Saat nilai property di isikan, maka parameter di atas juga di isi dengan nilai tersebut.&lt;br /&gt;Jadi saat anda mengisi &lt;span style="font-style: italic;"&gt;Simbah.makan:=’Ayam’,&lt;/span&gt; maka secara implisit di program anda melaksanakan &lt;span style="font-style: italic;"&gt;Simbah.Setmakan(‘Ayam’);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Passing parameter di method write di Delphi tidak boleh bersifat var atau out melainkan harus bersifat by Value atau Const(lihat tulisan saya mengenai passing parameter).  Jika anda memaksakannya pasti errornya begini: [Error] Unit1.pas(16): Property setters cannot take var parameters.&lt;br /&gt;&lt;br /&gt;Berikutnya saya akan menjelaskan property dengan method read.  Coba buka kembali program anda dan ketik kode berikut di bawah procedure TSimbahproperty.Setmakan:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Fmakan:=nilai;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tambahkan juga di Event Oncreate program anda kode berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;caption:=simbah.makan;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lihat hasilnya, di Caption form anda membacanya “ayam” bukan? Artinya secara tidak langsung anda membacanya sebagai berikut: Caption:=Simbah.Fmakan.&lt;br /&gt;Persamaan di atas(caption:=Simbah.Fmakan) tidak masalah di panggil di class lain asalkan masih satu unit, tapi bagaimana dengan bila di panggil di unit lain?&lt;br /&gt;&lt;br /&gt;Tentu saja anda tidak bisa mengakses property tersebut.  Untuk bisa mengaksesnya anda harus menambahi kata public atau published di atas tulisan property makan.  Jadi kode program anda menjadi seperti ini:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Tsimbahproperty=class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Fmakan:string;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;protected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Setmakan(nilai:string);virtual;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;published&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;property makan:string read Fmakan write Setmakan;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hasilnya, di unit lain anda harus memanggilnya caption:=simbah.makan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-1624382131220651293?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/1624382131220651293/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/properties.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1624382131220651293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/1624382131220651293'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/properties.html' title='Properties'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-829498646021660834</id><published>2009-10-09T06:27:00.000-07:00</published><updated>2009-10-09T06:29:15.342-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Firebird'/><title type='text'>Menampilkan nama tabel di firebird dan mysql</title><content type='html'>Nama-nama tabel di firebird tersimpan di dalam metadata(adalah data yang berisi  obyek database, misalnya nama tabel, nama view, trigger dan lain-lain) dengan nama tabel rdb$relation_name.  Berikut ini querynya:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;select rdb$relation_name as nama_tabel from rdb$relations where rdb$view_source is null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;and rdb$system_flag=0;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Kolom rdb$relation_name berisi tentang seluruh nama tabel ataupun view baik itu tabel system maupun tabel yang di buat oleh user(kita sendiri).&lt;br /&gt;&lt;br /&gt;Kolom rdb$view_source menunjukkan isi dari view bila obyek itu berupa view.  Sehingga kalau obyek database yang kita inginkan adalah tabel maka logikanya isi dari kolom rdb$view_source pasti berisi nilai null.&lt;br /&gt;&lt;br /&gt;Kolom rdb$system_flag menunjukkan apakah nama obyek itu di buat oleh user sendiri atau dari system.&lt;br /&gt;&lt;br /&gt;Untuk tutorial lengkapnya dapat anda kunjungi &lt;a href="http://www.ibphoenix.com"&gt;www.ibphoenix.com&lt;/a&gt;, download aja tutorialnya(jadi satu dengan interbase).&lt;br /&gt;&lt;br /&gt;Contoh di atas adalah untuk menampilkan tabel di firebird, lalu bagaimana dengan mysql?&lt;br /&gt;&lt;br /&gt;Informasi nama tabel di mysql terletak di INFORMATION_SCHEMA.TABLES.  Dan berikut ini querynya:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;SELECT table_name FROM INFORMATION_SCHEMA.TABLES&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHERE table_schema='nama database anda' and TABLE_TYPE='BASE TABLE'&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-829498646021660834?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/829498646021660834/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/menampilkan-nama-tabel-di-firebird-dan.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/829498646021660834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/829498646021660834'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/menampilkan-nama-tabel-di-firebird-dan.html' title='Menampilkan nama tabel di firebird dan mysql'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-9157075628438449698</id><published>2009-10-09T06:24:00.000-07:00</published><updated>2009-10-09T06:26:35.274-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Replikasi MysSQL di Windows</title><content type='html'>Replikasi adalah duplikasi data dari database sumber dalam hal ini disebut master ke database lainnya atau juga disebut slave dalam suatu jaringan.  Tujuan replikasi adalah  untuk mengurangi beban dari server dalam pengaksesan data untuk dibagi ke komputer-komputer lain.  Replikasi bersifat asynchronize yang artinya seumpama  komputer master dan komputer slave disconnect lalu tersambung lagi maka data di master tidak secara otomatis diupdate ke slave semua.  Jadi untuk mensinkronkan datanya anda harus melalui perintah manual.  Hal itu berbeda dari teknologi MySQL Cluster dimana duplikasi datanya bersifat synchronize, sayangnya teknologi ini tidak ada di Windows.&lt;br /&gt;&lt;br /&gt;Berikut akan saya terangkan cara replikasi&lt;br /&gt;&lt;br /&gt;Untuk Master&lt;br /&gt;Taruh konfigurasi berikut ini  di file my.ini mysql anda di bawah section mysqld&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;server-id = 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;log-bin=mysql-bin&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;masuk ke prompt mysql anda dan ketik perintah reset master&lt;br /&gt;&lt;br /&gt;untuk slave&lt;br /&gt;stop servicenya mysql di komputer slave taruh konfigurasi seperti ini di file my.ini dibawah section mysqld&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;server-id=2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;master-host=nama komputer master anda&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;master-user=user di komputer master anda&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;MASTER-PASSWORD=password di komputer master anda&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; replicate-do-db=database yang di replikasi, bersifat optional&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Start lagi service mysqlnya.  Selanjutnya masuk ke prompt Mysql dan ketik perintah: start slave.&lt;br /&gt;Tampilkan status slave anda dengan mengetik perintah:&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt; show slave status\G&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jika pada kolom Slave_IO_Running dan Slave_SQL_running isinya yes semua maka replikasi telah berhasil.  Tapi tunggu dulu, setelah replikasi berhasil, coba sering-sering di cek status slave nya.  Jika di kolom Last_Error ada errornya berarti replikasi anda gagal lagi.  Nah, berikut akan saya terangkan mengenai error yang mungkin terjadi berdasar pengalaman:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Error 'Definer is not fully qualified' on query. Default database: bla-bla-bla&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ini karena terjadi masalah trigger di tabel anda.  Error ini biasanya dijumpai jika anda menggunakan mysql baik di master atau di slave versi 5.018 ke bawah. Ini merupakan bug di mysql di versi tersebut, saran saya supaya tidak pusing-pusing anda bisa  mengupgrade versi mysql anda terutama yang digunakan untuk slave. Dalam hal ini versi mysql di slave harus lebih tinggi dari komputer master.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-9157075628438449698?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/9157075628438449698/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/replikasi-myssql-di-windows.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/9157075628438449698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/9157075628438449698'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/replikasi-myssql-di-windows.html' title='Replikasi MysSQL di Windows'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-4380943381250049884</id><published>2009-10-09T06:19:00.000-07:00</published><updated>2009-10-09T06:20:19.627-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Memanggil stored procedure mysql di Delphi</title><content type='html'>Untuk memanggil stored procedure apapun database anda dapat dilakukan dengan mudah.  Cukup dengan method execute(sesuaikan dengan engine database yang anda gunakan di delphi) di ikuti dengan call lalu isi parameternya(bila ada)&lt;br /&gt;&lt;br /&gt;Untuk ADOConnection:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;adoconnection1.Execute('call testproc('+&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; inttostr(6) + ')');&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;BDE&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;database1.Execute('call testproc('+&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;inttostr(5) + ')'); &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dbexpress&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;SQLConnection1.Executedirect('call testproc('+&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; inttostr(6) + ')');&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-4380943381250049884?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/4380943381250049884/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/memanggil-stored-procedure-mysql-di.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4380943381250049884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/4380943381250049884'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/memanggil-stored-procedure-mysql-di.html' title='Memanggil stored procedure mysql di Delphi'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-6579092993943574537</id><published>2009-10-09T06:11:00.000-07:00</published><updated>2009-10-09T06:14:23.266-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Membuat teks berganti-ganti</title><content type='html'>Berikut saya berikan tips membuat teks berjalan seperti iklan TV.  Koneksi yang saya pakai adalah dbexpress dengan database firebird):&lt;br /&gt;&lt;br /&gt;1.Deklarasikan dulu variabel array dinamis dan variabel counter di scope global(di bawah tulisan var Form1:Tform1)&lt;br /&gt;&lt;br /&gt; contoh:&lt;br /&gt; var&lt;br /&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Form1: TForm1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  arrpelanggan:array of string;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;counter:integer;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2.Tambahkan komponen timer di form anda dan ubah property enabled nya menjadi false.&lt;br /&gt;&lt;br /&gt;3.Ketik perintah berikut saat Form show&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;procedure TForm1.FormShow(Sender: TObject);&lt;br /&gt;var i:integer;&lt;br /&gt;begin&lt;br /&gt;label1.left:=0;&lt;br /&gt;label1.caption:=’’;&lt;br /&gt;CPELANGGAN.Close;&lt;br /&gt;CPELANGGAN.Open;&lt;br /&gt;counter:=-1;&lt;br /&gt;i:=0;&lt;br /&gt;    setlength(arrpelanggan,cpelanggan.RecordCount);&lt;br /&gt;   while not cpelanggan.Eof do begin&lt;br /&gt;   arrpelanggan[i]:=cpelanggannama.Value;//simpan dulu nama pelanggan di array dinamis.&lt;br /&gt;   cpelanggan.Next;&lt;br /&gt;   inc(i);&lt;br /&gt;   end;&lt;br /&gt;if cpelanggan.recordcount&gt;0 then&lt;br /&gt;   timer1.Enabled:=true;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;*cpelanggan adalah nama komponen dari TClientdataset&lt;br /&gt;&lt;br /&gt;4. Saat OnTimer ketik perintah berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Timer1Timer(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;inc(counter);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if counter=cpelanggan.RecordCount then counter:=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;label1.Caption:=arrpelanggan[counter];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;label1.Left:=label1.Left +18;//geser kira-kira 5 mili(setiap 18 pixel lebih kurang adalah 5 milimeter).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if label1.Left &gt;width then label1.Left:=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Kode lengkap:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;unit Unit1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Dialogs, Provider, SqlExpr, DBXpress, ExtCtrls, StdCtrls, DB, DBClient,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  DBLocal, DBLocalS;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  TForm1 = class(TForm)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    cpelanggan: TSQLClientDataSet;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    SQLConnection1: TSQLConnection;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Label1: TLabel;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    Timer1: TTimer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    cpelangganIDPELANGGAN: TIntegerField;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    cpelangganKODE: TStringField;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    cpelangganNAMA: TStringField;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    cpelangganALAMAT: TStringField;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    cpelangganPHOTO: TMemoField;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure FormShow(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    procedure Timer1Timer(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  private&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Private declarations }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    { Public declarations }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Form1: TForm1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  arrpelanggan:array of string;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  counter:integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{$R *.dfm}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.FormShow(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var i:integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CPELANGGAN.Close;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CPELANGGAN.Open;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;counter:=-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;i:=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     setlength(arrpelanggan,cpelanggan.RecordCount);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    while not cpelanggan.Eof do begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    arrpelanggan[i]:=cpelanggannama.Value;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    cpelanggan.Next;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    inc(i);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  if cpelanggan.recordcount&gt;0 then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    timer1.Enabled:=true;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Timer1Timer(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;inc(counter);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if counter=cpelanggan.RecordCount then counter:=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;label1.Caption:=arrpelanggan[counter];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;label1.Left:=label1.Left +18;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if label1.Left &gt;width then label1.Left:=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Itu adalah contoh sederhana dari saya, variasinya terserah anda. Sebagai catatan saja&lt;br /&gt;trik ini tidak dapat berjalan bila anda menggunakan MDIForm(saya sendiri tidak tahu penyebabnya).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-6579092993943574537?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/6579092993943574537/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/membuat-teks-berganti-ganti.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6579092993943574537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6579092993943574537'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/membuat-teks-berganti-ganti.html' title='Membuat teks berganti-ganti'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-2038209462119117361</id><published>2009-10-09T06:09:00.000-07:00</published><updated>2009-10-09T06:10:25.284-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Looping di Stored Procedure/triggers di MySQL</title><content type='html'>Ada beberapa statement yang berkaitan dengan perulangan yaitu: REPEAT sampai END REPEAT,&lt;br /&gt;WHILE sampai END WHILE dan LOOP sampai END LOOP.&lt;br /&gt;&lt;br /&gt;Bentuk perulangan-perulangan itu biasanya dipakai oleh cursor. Kalau anda pernah makai bahasa lain pasti kenal kode seperti ini:&lt;br /&gt;&lt;br /&gt;While not tabel1.eof do begin end;(di delphi),  for blablabla in tabel1 loop(oracle), while @@fetchstatus=0(SQL Server).  Contoh itu adalah bentuk perulangan yang menggunakan cursor.  Lalu bagaimana penggunaannya di MySQL?&lt;br /&gt;&lt;br /&gt;Di helpnya mysql kalau saya lihat contohnya memang agak membingungkan penjelasan mengenai cursor.  Daripada anda pusing lihat contohnya, di artikel ini saya kasih kode sederhana looping cursor di mysql:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;create procedure sp_test()&lt;br /&gt;begin&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;declare mtuntung int;/* deklarasi variabel */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;declare ctabel1 cursor for select tuntung from tabel1;/*deklarasi cursor */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;declare exit handler for not found begin end;/* pencegahan error, jika record tidak ketemu maka tidak terjadi apa-apa */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;open ctabel1; /* membuka cursor(buka tabel) */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;loop /* awal perulangan */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; fetch ctabel1 into mtuntung; /*bergerak ke record-record dalam cursor */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pernyataan anda;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end loop; /* akhir perulangan */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;close ctabel1; /* tutup perulangan */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-2038209462119117361?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/2038209462119117361/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/looping-di-stored-proceduretriggers-di.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2038209462119117361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2038209462119117361'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/looping-di-stored-proceduretriggers-di.html' title='Looping di Stored Procedure/triggers di MySQL'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-7578646802891029575</id><published>2009-10-09T06:05:00.000-07:00</published><updated>2009-10-09T06:08:30.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Trigger di MySQL</title><content type='html'>Trigger adalah sebuah database object yang berasosiasi dengan tabel.  Artinya bahwa trigger itu bisa ada setelah tabel di buat.  Ketika tabel di drop atau di hilangkan maka secara otomatis semua trigger yang melekat di tabel itu juga ikut hilang.&lt;br /&gt;&lt;br /&gt;Berikut syntak pembuatan trigger&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;CREATE [DEFINER = { user | CURRENT_USER }]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TRIGGER nama_trigger waktu_trigger nama_kejadian ON nama_tabel&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  FOR EACH ROW BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    isi trigger&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  END&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;contoh:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;CREATE TRIGGER tabel2_after_ins_tr AFTER INSERT ON tabel2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  FOR EACH ROW&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;insert into table1(a) values(new.a);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Untuk tanda yang di beri kurung kotak(DEFINER = { user | CURRENT_USER }) adalah opsional yang artinya boleh di pakai boleh juga tidak.  Jika tidak di pakai maka secara otomatis  defaultnya adalah DEFINER=CURRENT_USER.  Jadi berdasar contoh di atas maka sintaknya berubah seperti ini:&lt;br /&gt;&lt;br /&gt;CREATE DEFINER=CURRENT_USER TRIGGER ( selanjutnya idem seperti di atas)&lt;br /&gt;&lt;br /&gt;Anda dapat mengganti definer=current_user menjadi definer=nama_user@nama_komputer.&lt;br /&gt;Contoh definer='root'@'localhost'&lt;br /&gt;Jadi sintaknya menjadi begini:&lt;br /&gt;&lt;br /&gt;Create definer='root'@'localhost' trigger ( selanjutnya idem seperti di atas)&lt;br /&gt;&lt;br /&gt;Lalu apa bedanya definer=current_user dengan definer=nama_user@nama_komputer?&lt;br /&gt;&lt;br /&gt;Perbedaannya menyangkut hak akses privelegenya.  Misal jika si user root itu tidak mempunyai hak menginsert tabel maka saat anda login menggunakan user tersebut kemudian trigger tersebut aktif dan di trigger tersebut ada perintah memasukkan data ke tabel lain maka otomatis ia gagal dan terjadi error.  Berbeda dengan definer=current_user, ia tetap berhasil memasukkan data ke tabel lain meskipun si user root itu tidak punya hak menginsert tabel.&lt;br /&gt;&lt;br /&gt;Waktu trigger dapat di bedakan menjadi dua yaitu before dan after.  Sedangkan event trigger dapat di bedakan menjadi 3 yaitu:&lt;br /&gt;&lt;br /&gt;insert:  Terjadi ketika ada penambahan baru melalui pernyataan insert, load maupun replace&lt;br /&gt;update:  Terjadi ketika ada modifikasi data melalui pernyataan update.&lt;br /&gt;Delete: Terjadi ketika ada penghapusan data melalui pernyataan delete maupun replace.&lt;br /&gt;&lt;br /&gt;Bila anda akan mengompilasi trigger untuk insert tabel dan ada pernyataan yang melibatkan field tabel tersebut, anda di wajibkan menyertakan klausa new, artinya anda di haramkan menambah klausa old.&lt;br /&gt;Misal: insert into tabel1(a) values(new.a)  atau update tabel1 set a=new.a where b=new.b.  Jadi tidak boleh menjadi begini: insert into tabel1(a) values(old.a)&lt;br /&gt;&lt;br /&gt;Hal ini berbeda dengan saat update tabel, anda dapat menyertakan kedua klausa tersebut baik new dan old.  Misal: Update tabel1 set a=new.a where b=old.b;&lt;br /&gt;&lt;br /&gt;Kebalikannya dengan delete, anda di haramkan menambahkan klausa new dan di wajibkan menggunakan klausa old.&lt;br /&gt;&lt;br /&gt;Mungkin anda berpikir apa bedanya trigger itu aktif saat sebelum dan sesudahnya, misal before insert di bandingkan dengan after insert, before update dengan after update dan before delete dengan after delete, dan bagaimana seharusnya di gunakan?&lt;br /&gt;&lt;br /&gt;Jika event trigger itu insert atau update, before sangat berguna untuk merubah data yang akan masuk di tabel yang ditumpangi trigger itu sendiri.  Contoh sintak: if new.a='mbahdien' then new.b=2000 else new.b=0;&lt;br /&gt;&lt;br /&gt;Sedangkan after berguna bila berurusan dengan penambahan ataupun modifikasi data di tabel lain.&lt;br /&gt;&lt;br /&gt;Bila event trigger itu terjadi pada saat delete,before berguna untuk memasukkan data yang akan di hapus ke tabel lain.  Sedangkan after berguna untuk menghapus data di tabel lain.&lt;br /&gt;&lt;br /&gt;Kalau di software database lain macam Oracle, Firebird, SQL Server dll, object trigger ini dapat kita manfaatkan validasi yaitu dengan membuat pernyataan exception namun tidak demikian di mysql bahkan untuk versi terbaru sekalipun.  Saya tidak tahu sebabnya apa, mungkin biar beda dengan yang lain kali.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-7578646802891029575?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/7578646802891029575/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/trigger-di-mysql.html#comment-form' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7578646802891029575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7578646802891029575'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/trigger-di-mysql.html' title='Trigger di MySQL'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-7041174426385582393</id><published>2009-10-08T16:35:00.000-07:00</published><updated>2009-10-08T16:38:05.227-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dasar-dasar Delphi/OOP'/><title type='text'>Passing parameter dalam method/fungsi di Delphi</title><content type='html'>Bagi anda yang  masih baru di Delphi mungkin masih agak bingung membedakan passing parameter, apakah mau pakai const,  by value atau mungkin by reference(menggunakan var) dan out .  Lalu apa bedanya?&lt;br /&gt;&lt;br /&gt;Berikut ini adalah contoh penggunaan parameter dengan tipe const:&lt;br /&gt;Tambahkan metod ini di bagian private.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure test(const t:integer);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tulis lagi di bagian implementation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure Tform1.test(const t:integer);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if t=5 then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage(inttostr(t));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Jalankan procedure di atas, misalnya saat event onclick:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;test(5);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Kompile program tersebut. Berhasil bukan?  Sekarang akan saya contohkan passing parameter menggunakan by value.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tambahkan metod ini di bagian private.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure test(t:integer);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tulis lagi di bagian implementation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Tform1.test(t:integer);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if t=1 then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage(inttostr(a));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;t:=2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage(inttostr(t));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Jalankan procedure di atas dengan memberi perintah test(1)(mau event apa terserah).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tampak tampil pesan 2 kali, yang pertama menampilkan “1” dan yang kedua menampilkan “2”.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Sekarang ganti tambahkan kata const dalam method yang kedua tersebut. Jadi sintaknya begini:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure Tform1.test(const t:integer);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if t=1 then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage(inttostr(a));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;t:=2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage(inttostr(a));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;compile program tersebut.  Pasti errornya begini: “[Error] Unit1.pas(32): Left side cannot be assigned to”. &lt;br /&gt;&lt;br /&gt;Dari contoh di atas, kita dapat menyimpulkan bahwa nilai dengan tipe parameter const tidak dapat diubah pada saat method di jalankan(hanya dapat di baca saja), tapi tidak dengan by value.&lt;br /&gt;&lt;br /&gt;Berikutnya kita akan pelajari passing parameter dengan menggunakan var&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.test(var t: integer);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if t=1 then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage(inttostr(t));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;t:=2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;showmessage(inttostr(t));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Saat kita mengisi parameter dengan tipe var tersebut maka kita terlebih dahulu harus mendeklarasikan variabel terlebih dahulu.  Lihat di bawah ini:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var m:integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;m:=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;test(m);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  caption:=inttostr(m);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jalankan program anda, lihat caption form berubah jadi “2” bukan.  Hal ini berbeda jika passing parameter by value, caption form anda adalah “1” bukan “2”&lt;br /&gt;&lt;br /&gt;Untuk passing parameter out, mirip dengan var, hanya saja out lebih sering digunakan untuk distributed-object models seperti COM and CORBA.  Di samping itu passing parameter out sebaiknya digunakan saat melewatkan variabel yang tidak ada inisialisasinya.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-7041174426385582393?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/7041174426385582393/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/passing-parameter-dalam-methodfungsi-di.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7041174426385582393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7041174426385582393'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/passing-parameter-dalam-methodfungsi-di.html' title='Passing parameter dalam method/fungsi di Delphi'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-626575016237146573</id><published>2009-10-07T09:43:00.000-07:00</published><updated>2009-10-07T09:44:44.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Memasukkan/upload foto atau gambar ke tabel di MySQL</title><content type='html'>Bila anda ingin memasukkan gambar/foto ke dalam tabel di Mysql, rencanakan dulu berapa maksimal ukuran gambar yang akan anda upload.  Hal ini berguna untuk :&lt;br /&gt;&lt;br /&gt;1   Menentukan tipe data&lt;br /&gt;2   Menentukan maksimal packet size(max_allowed_packet).&lt;br /&gt;&lt;br /&gt;Tipe data yang cocok untuk foto atau gambar adalah BLOB.  Tapi kalau ukuran gambar anda cukup besar saya sarankan memakai tipe data LONG BLOB.   Sedang untuk setting di Mysql anda, anda harus menambah opsi berikut&lt;br /&gt;&lt;br /&gt;Ketik opsi ini di file my.ini  Mysql anda:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[mysql]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;max_allowed_packet=32M&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[mysqld]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;max_allowed_packet=32M&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Restart server anda.&lt;br /&gt;&lt;br /&gt;Secara default max_allowed_packet di sisi client(mysql) adalah 16 M sedang di sisi server(mysqld) adalah 1M. &lt;br /&gt;&lt;br /&gt;Mengapa max_allowed_packet ini harus di rubah?&lt;br /&gt;&lt;br /&gt;Hal ini untuk menghindari problem error yang bunyinya “MySQL server has gone away” akibat packet data yang anda kirimkan terlalu besar.&lt;br /&gt;&lt;br /&gt;Terus bagaimana dengan setting di Delphi?&lt;br /&gt;&lt;br /&gt;Di Delphi, baik itu tipe data BLOB, MEDIUM BLOB ataupun LONG BLOB secara otomatis di konversi ke dalam Tblobfield.  Untuk memasukkan gambar anda dapat menggunakan method loadfromfile dari class TBLObfield.  Agar anda lebih jelas lihat sintak berikut:&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;br /&gt;if od.Execute then&lt;br /&gt;begin&lt;br /&gt;  if not(cgambar.State in [dsinsert,dsedit]) then cgambar.Edit;&lt;br /&gt;  cgambarphoto.LoadFromFile(od.FileName);&lt;br /&gt;  cgambarpath.Value:=od.FileName;&lt;br /&gt;  cgambar.Post;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;od adalah nama untuk component openDialog&lt;br /&gt;Cgambar adalah nama untuk component clientDataset&lt;br /&gt;&lt;br /&gt;Untuk menampilkan gambarnya bila itu single data(maksudnya tidak melalui grid) anda dapat menginstal komponen EDBImage(cari di google, gratis) Komponen ini mempunyai kelebihan bisa menampilkan gambar dari file yang berekstensi jpg atau jpeg, serta tipe file berekstensi lainnya.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-626575016237146573?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/626575016237146573/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/memasukkanupload-foto-atau-gambar-ke.html#comment-form' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/626575016237146573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/626575016237146573'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/memasukkanupload-foto-atau-gambar-ke.html' title='Memasukkan/upload foto atau gambar ke tabel di MySQL'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-6765176915368878709</id><published>2009-10-07T09:37:00.000-07:00</published><updated>2009-10-07T09:38:47.434-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Eksport Import Data dari dan ke Excel</title><content type='html'>Berikut akan saya berikan kode untuk Eksport dan import data dengan Delphi:&lt;br /&gt;&lt;br /&gt;Ekport tabel ke Excel&lt;br /&gt;&lt;br /&gt;Tambahkan uses ComObj di unit anda, kemudian&lt;br /&gt;buat tabel didatabase anda misalnya namanya tabel1 dengan fieldnya masing-masing diberi nama field “a” dan field “b”.&lt;br /&gt;Aktifkan dataset anda, terserah anda pakai koneksi apa(kalau saya kebiasaan pakai dbexpress.  Kemudian ketik perintah berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;var v:Variant;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;i:integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;with sqlclientdataset1 do begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;close;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;open;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   v:=createoleobject('excel.application');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  v.workbooks.add;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    i:=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    while not sqlclientdataset1.Eof do begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     v.cells.RANGE['A'+INTTOSTR(I)]:=SQLCLIENTDATASET1A.AsString;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     V.CELLS.RANGE['B'+inttostr(i)]:=sqlclientdataset1b.AsString;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     sqlclientdataset1.Next;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     inc(i);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     v.visible:=true;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     except&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;on e:exception do begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;v:=null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Keterangan:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;V:=null adalah untuk mengantisipasi seumpama di komputer anda tidak ada aplikasi excel.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Import dari tabel ke excel.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Untuk import dari excel ke tabel database perintahnya sangat mudah.  Berikut akan saya berikan contohnya(jangan lupa uses ke Comobj juga dulu).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tambahkan komponen opendialog di project anda, kemudian ketik perintah berikut ini:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;procedure TForm1.Button2Click(Sender: TObject);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; var v:Variant;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;i:integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;if opendialog1.Execute then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      v:=createoleobject('excel.application');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   v.workbooks.open(opendialog1.FileName);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   i:=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   while vartostr(v.cells.range['a'+inttostr(i)])&lt;&gt;'' do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   sqlconnection1.ExecuteDirect('insert into tabel1(a,b) values('+&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   quotedstr(vartostr(v.cells.range['a'+inttostr(i)])) +&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          ','+&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          quotedstr(vartostr(v.cells.range['b'+inttostr(i)])) + ')');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    inc(i);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   v.quit;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   //optional&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   with sqlclientdataset1 do begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   close;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   open;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   except&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   on e:exception do begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   raise exception.Create(e.message);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-6765176915368878709?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/6765176915368878709/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/eksport-import-data-dari-dan-ke-excel.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6765176915368878709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6765176915368878709'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/eksport-import-data-dari-dan-ke-excel.html' title='Eksport Import Data dari dan ke Excel'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-969863646665902093</id><published>2009-10-07T09:32:00.000-07:00</published><updated>2009-10-07T17:01:17.330-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dasar-dasar Delphi/OOP'/><title type='text'>Initialization dan Finalization</title><content type='html'>Initialization adalah suatu bagian dari delphi yang digunakan saat start-up aplikasi.  Secara lebih lanjut dapat saya terangkan bahwa ketika anda menjalankan program pertama kali, maka perintah-perintah di section ini akan di panggil dulu sebelum perintah lainnya. &lt;br /&gt;&lt;br /&gt;Perintah di section ini bukan hanya jalan saat runtime aja, tetapi juga saat di kompile.  Itu sudah saya buktikan sendiri ketika saya mengkompile komponen yang saya buat. &lt;br /&gt;&lt;br /&gt;Untuk lebih jelas lagi, saya masih punya contoh aplikasi.  Aplikasi ini saya cuplikkan dari buku kesayangan saya    Pemograman Delphi   karangan   Kusnassriyanto Syaiful Bachri dan  Wawan Sachriyanto    (buku ini cuukup bagus untuk bahan referensi).&lt;br /&gt;&lt;br /&gt;Panggil menu File-New Other&lt;br /&gt;&lt;br /&gt;Pada page New, pilih Console Application dan tekanOk&lt;br /&gt;&lt;br /&gt;Kemudian pilih File-New-Unit sebanyak 3 kali sehingga kita memiliki sebuah program utama dan tiga buah unit.  Untuk masing-masing unit ketikkan program berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;program Project1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{$APPTYPE CONSOLE}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  SysUtils,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Unit1 in 'Unit1.pas',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Unit2 in 'Unit2.pas',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Unit3 in 'Unit3.pas';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  { TODO -oUser -cConsole Main : Insert code here }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  writeln('Program utama');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;unit Unit1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;uses unit2,unit3;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    initialization&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    writeln('inisialisasi unit1');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    finalization&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    writeln('finalisasi unit1');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;unit Unit2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   uses unit3;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    initialization&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;writeln('Inisialisasi unit2');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;finalization&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;writeln('Finalisasi unit2');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;unit Unit3;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;implementation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   initialization&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;writeln('Inisialisasi unit3');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;finalization&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;writeln('Finalisasi unit3');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;end.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Compile program tersebut dan jalankan melalui DOS.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Hasilnya:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Inisialisasi unit3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Inisialisasi unit2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Inisialisasi unit1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Program utama&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Finalisasi unit1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Finalisasi unit2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Finalisasi unit3&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-969863646665902093?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/969863646665902093/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/initialization-dan-finalization.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/969863646665902093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/969863646665902093'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/initialization-dan-finalization.html' title='Initialization dan Finalization'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-929847770626120425</id><published>2009-10-07T09:29:00.000-07:00</published><updated>2009-10-07T09:31:45.923-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error Messages'/><title type='text'>Cannot make a visible window modal</title><content type='html'>Pernahkah anda mengalami error tersebut di atas?  Berikut kemungkinan-kemungkinan yang menimbulkan error tersebut:&lt;br /&gt;&lt;br /&gt;-  Nilai Property visible di form yang akan di showmodal adalah true.&lt;br /&gt;&lt;br /&gt;Secara default saat design time, nilai property visible di form anda adalah false.  Jadi anda cek dulu apakah nilai property visible di form anda apakah false atau true.  Jika true ganti dengan false.&lt;br /&gt;&lt;br /&gt;-  Nilai property Formstyle adalah fsMDIChild.  Ganti dengan FSNormal3. &lt;br /&gt;-  Nilai property Enabled di form modal anda adalah false.  Ganti dengan true&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-929847770626120425?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/929847770626120425/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/cannot-make-visible-window-modal.html#comment-form' title='1 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/929847770626120425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/929847770626120425'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/cannot-make-visible-window-modal.html' title='Cannot make a visible window modal'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-8071282618863105162</id><published>2009-10-07T09:25:00.000-07:00</published><updated>2009-10-07T09:28:20.326-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Hapus beberapa baris di dbgrid</title><content type='html'>Hapus beberapa baris di dbgrid&lt;br /&gt;&lt;br /&gt;Untuk menghapus beberapa baris di dbgrid anda bisa tidak menuliskan kode apapun, cukup memasukkan opsi dgmultiselect di property options dbgrid.  Saat running taruh kursor mouse di dbgrid tersebut sambil tekan tombol Ctrl.  Anda akan melihat bahwa di sisi kiri dbgrid gambar indikatornya berubah dari semula segitiga hitam semua menjadi segitiga bergaris ganda.  Terus untuk cara hapusnya adalah dengan menekan Ctrl+delete.  Lalu bagaimana jika kalau anda ingin menghapus dengan menekan tombol klik.&lt;br /&gt;&lt;br /&gt;Berikut adalah kodenya:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;procedure TForm1.Button2Click(Sender: TObject);&lt;br /&gt;var i:integer;&lt;br /&gt;begin&lt;br /&gt;&lt;br /&gt;for i:=0 to dbgrid2.SelectedRows.Count -1 do begin&lt;br /&gt;&lt;br /&gt;dbgrid2.SelectedRows.Delete;&lt;br /&gt;end;&lt;br /&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jangan lupa untuk menyertakan  dgmultiselect di property options DBGrid anda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-8071282618863105162?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/8071282618863105162/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/hapus-beberapa-baris-di-dbgrid.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8071282618863105162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/8071282618863105162'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/hapus-beberapa-baris-di-dbgrid.html' title='Hapus beberapa baris di dbgrid'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-2168685498816192925</id><published>2009-10-07T09:19:00.000-07:00</published><updated>2009-10-07T17:04:48.802-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dasar-dasar Delphi/OOP'/><title type='text'>Directive Reintroduce</title><content type='html'>Directive reintroduce hanya berfungsi untuk menyembunyikan compiler warnings karena ada method yang sama antara class dari moyangnya dan class turunannya serta,  Sedangkan method yang di sembunyikan itu harus bersifat virtual(virtual method)&lt;br /&gt;&lt;br /&gt;Contoh:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;unit Unit1;&lt;br /&gt;&lt;br /&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;Dialogs, StdCtrls;&lt;br /&gt;&lt;br /&gt;type&lt;br /&gt;Tibu=class&lt;br /&gt;procedure memasak;virtual;&lt;br /&gt;end;&lt;br /&gt;  Tanak=class(Tibu)&lt;br /&gt;  procedure memasak;reintroduce;&lt;br /&gt;    end;&lt;br /&gt;TForm1 = class(TForm)&lt;br /&gt;  Button1: TButton;&lt;br /&gt;  procedure Button1Click(Sender: TObject);&lt;br /&gt;private&lt;br /&gt;  { Private declarations }&lt;br /&gt;public&lt;br /&gt;  { Public declarations }&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;var&lt;br /&gt;Form1: TForm1;&lt;br /&gt;&lt;br /&gt;implementation&lt;br /&gt;&lt;br /&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;{ Tibu }&lt;br /&gt;&lt;br /&gt;procedure Tibu.memasak;&lt;br /&gt;begin&lt;br /&gt;showmessage('Ibu memasak');&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;{ Tanak }&lt;br /&gt;&lt;br /&gt;procedure Tanak.memasak;&lt;br /&gt;begin&lt;br /&gt;inherited;&lt;br /&gt;showmessage('Anak memasak');&lt;br /&gt;end;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var anak:Tanak;&lt;br /&gt;begin&lt;br /&gt;anak:=Tanak.Create;&lt;br /&gt;anak.memasak;&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;end.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Compile program tadi, tampak tidak ada compiler warning di project anda.  Coba hilangkan kata reintroduce pasti akan muncul pesan begini:&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;br /&gt;[Warning] Unit1.pas(14): Method 'memasak' hides virtual method of base type 'Tibu'&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-2168685498816192925?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/2168685498816192925/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/directive-reintroduce.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2168685498816192925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2168685498816192925'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/directive-reintroduce.html' title='Directive Reintroduce'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-7540181667859645925</id><published>2009-10-05T08:26:00.000-07:00</published><updated>2009-10-05T08:40:44.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><category scheme='http://www.blogger.com/atom/ns#' term='Error Messages'/><title type='text'>Record Not Found or Changed by Another User</title><content type='html'>Buat tabel dengan perintah sebagai berikut:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CREATE TABLE `coba` (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  `id` int(11) NOT NULL auto_increment,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  `jumlah` double(15,3) default '0.000',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  `jumlah1` double(15,3) default '0.000',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  `a` varchar(20) default NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  `b` varchar(20) default NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  PRIMARY KEY  (`id`)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;) ENGINE=InnoDB DEFAULT CHARSET=latin1;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Koneksikan ke Delphi dengan komponen TclientDataset&lt;br /&gt;&lt;br /&gt;Isi data sebagai berikut:&lt;br /&gt;&lt;br /&gt;Field Id diisi dengan nilai 1 atau terserah anda, untuk field lainnya tidak usah diisi.  Simpan dengan perintah applyupdates(0).&lt;br /&gt;&lt;br /&gt;Sekarang edit data anda dan ganti isian data tersebut di sembarang field.  Berikan perintah applyupdates(0) lagi.&lt;br /&gt;&lt;br /&gt;Berikan perintah ini di event onReconcileerror komponen clientdataset anda:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Showmessage(e.message);&lt;/span&gt;//jangan lupa untuk menambahkan uses dialogs.&lt;br /&gt;&lt;br /&gt;‘Record Not Found or Changed by Another User’, itulah error yang muncul.  Untuk mengatasinya beri saja nilai 0 saat onNewrecord pada field jumlah dan jumlah1.&lt;br /&gt;&lt;br /&gt;Apakah ada sebab lain error tersebut muncul?&lt;br /&gt;&lt;br /&gt;Buka aplikasi anda sekaligus 2 atau lebih.  Sekarang edit data anda di aplikasi 1 dan simpan.  Lakukan langkah yang sama untuk aplikasi 2.  Error tersebut muncul lagi bukan?&lt;br /&gt;&lt;br /&gt;Cara mengatasinya adalah jangan membuka 2 dataset yang sama oleh 2 user sekaligus atau anda bisa juga memberikan perintah untuk merefresh data seperti contoh:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;With clientdataset1 do begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Close;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Open;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;End;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-7540181667859645925?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/7540181667859645925/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/record-not-found-or-changed-by-another.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7540181667859645925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/7540181667859645925'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/record-not-found-or-changed-by-another.html' title='Record Not Found or Changed by Another User'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-2853373156419328099</id><published>2009-10-04T07:47:00.001-07:00</published><updated>2009-10-04T21:15:11.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><category scheme='http://www.blogger.com/atom/ns#' term='Error Messages'/><title type='text'>Error Truncate Incorrect Double Value</title><content type='html'>&lt;div style="text-align: left;"&gt;Di Indonesia umumnya format desimal adalah koma yang dalam hal ini berbeda dengan format standar internasional yang menggunakan titik.  Error tersebut timbul karena perbedaan format desimal tersebut.&lt;br /&gt;&lt;br /&gt;Jika di setting regional options anda menggunakan format Indonesia maka di Delphi untuk tipe data extended atau double otomatis format desimalnya adalah koma.  Dan hal ini menimbulkan masalah saat memasukkan data ke tabel karena Delphi tidak bisa secara otomatis mengkonversi format tersebut menjadi titik.&lt;br /&gt;&lt;br /&gt;Bagaimana cara mengatasi hal tersebut?&lt;br /&gt;&lt;br /&gt;Ketik di bagian inisialitazion aplikasi anda kode sebagai berikut:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51); font-style: italic;font-size:85%;" &gt;Setlocaleinfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SDECIMAL,'.');&lt;br /&gt;DecimalSeparator:=',';&lt;/span&gt;//perintah ini diperlukan agar tampilan format desimalnya tetap koma.  Jika di hilangkan maka tampilan simbol desimalnya berubah menjadi titik.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sekarang lihat di setting regional options windows anda, simbol desimalnya telah berubah menjadi titik.  Agar masih tetap koma, kita balik saja dengan menuliskan kode berikut di bagian finalization:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;Setlocaleinfo(LOCALE_SYSTEM_DEFAULT,LOCALE_SDECIMAL,',');&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-2853373156419328099?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/2853373156419328099/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/error-truncate-incorrect-double-value.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2853373156419328099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/2853373156419328099'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/error-truncate-incorrect-double-value.html' title='Error Truncate Incorrect Double Value'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-5367956079285702895</id><published>2009-10-03T10:17:00.000-07:00</published><updated>2010-03-28T21:17:01.594-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Penggunaan Lookup dalam Dataset</title><content type='html'>Secara internal di Delphi, ada  komponen yang bisa berfungsi sebagai lookup yaitu TDBLookupCombobox.  Jika anda bekerja dengan grid, otomatis Field-field lookup yang telah anda buat, di kolom DBGrid akan tampil komponen yang mirip dengan Combobox.&lt;br /&gt;&lt;br /&gt;Field lookup ini sebenarnya mempunyai keterbatasan yakni hanya mampu menampilkan 20 karakter, sehingga bila anda ingin menampilkan data bertipe string yang panjangnya lebih 20 karakter maka otomatis akan terpotong.  Untuk mengatasi keterbatasan itu anda dapat mengunduh komponen VolgaDBgrid di sini.   Komponen tersebu mempunyai kemampuan banyak dan lumayan komplet..  Bila anda ingin tampilan checkbox di DbGrid anda juga bisa menggunakan komponen tersebut.  Berikut contoh aplikasi Field Lookup.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://delphirewo.blogspot.com/2010/03/membuat-aplikasi-penjualan-sederhana.html"&gt;http://delphirewo.blogspot.com/2010/03/membuat-aplikasi-penjualan-sederhana.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-5367956079285702895?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/5367956079285702895/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/penggunaan-lookup-dalam-dataset.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5367956079285702895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/5367956079285702895'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/penggunaan-lookup-dalam-dataset.html' title='Penggunaan Lookup dalam Dataset'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-6827645564603200887</id><published>2009-10-03T10:16:00.000-07:00</published><updated>2009-10-03T10:17:36.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Membangun Nested Dataset</title><content type='html'>Nested dataset atau dataset bertingkat diperlukan untuk menghubungkan data di tabel induk dengan data di tabel anak(Master Detail).&lt;br /&gt;&lt;br /&gt;Penggunaan nested dataset ini harus hati-hati, karena bila data yang diakses dalam jumlah banyak atau besar maka otomatis retrieve datanyapun berjalan lambat.  Berikut contoh aplikasi Nested dataset:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-6827645564603200887?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/6827645564603200887/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/membangun-nested-dataset.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6827645564603200887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/6827645564603200887'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/membangun-nested-dataset.html' title='Membangun Nested Dataset'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-438229675710432762</id><published>2009-10-03T10:15:00.000-07:00</published><updated>2009-10-03T10:16:17.258-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Membangun Dataset dengan DBExpress</title><content type='html'>Ada beberapa komponen DBExpress yang digunakan untuk meretrieve data di antaranya adalah TSQLDataset, TSQLQuery dan TSSQLTable.  Ketiga komponen tersebut bersifat unidirectional.  Karena bersifat unidirectional itulah kedua komponen tidak dapat langsung dihubungkan ke Data Aware melalui Tdatasource.  Dan misalkan anda memaksa untuk menghubungkan maka akan terjadi error berikut:&lt;br /&gt;&lt;br /&gt;“Operation not allowed on a unidirectional dataset”&lt;br /&gt;&lt;br /&gt;Karena bersifat unidirectional itulah maka diperlukan komponen Tclientdataset yang dihubungkan dengan TdatasetProvider.&lt;br /&gt;&lt;br /&gt;Berikut adalah contoh aplikasi untuk menampilkan data di mysql lengkap dengan fungsi tambah, edit dan hapusnya.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-438229675710432762?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/438229675710432762/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/membangun-dataset-dengan-dbexpress.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/438229675710432762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/438229675710432762'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/membangun-dataset-dengan-dbexpress.html' title='Membangun Dataset dengan DBExpress'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2817151447595259882.post-3046674655820949729</id><published>2009-10-03T10:13:00.000-07:00</published><updated>2009-10-03T10:15:25.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi database'/><title type='text'>Membangun Koneksi Database MySQL di Delphi dengan DBExpress</title><content type='html'>Tutorial ini diperuntukkan bagi khusus pemakai Mysql 5.0 ke atas.  Makin terbaru versinya makin baik.&lt;br /&gt;&lt;br /&gt;Untuk membangun koneksi ke mysql dengan Dbexpress file yang harus disiapkan adalah dbxopenmysql50.dll, dan anda dapat mencarinya di Google.  Setelah itu ikuti langkah berikut:&lt;br /&gt;&lt;br /&gt;1. Taruh file dbxopenmysql50.dll di path aplikasi anda atau bisa juga di windows environment&lt;br /&gt;2. Tambahkan kode berikut di file dbxdrivers.ini di folder C:\Program Files\Common Files\Borland Shared\DBExpress&lt;br /&gt;&lt;br /&gt;[OpenMySQL50]&lt;br /&gt;LibraryName=dbxopenmysql50.dll&lt;br /&gt;GetDriverFunc=getSQLDriverMYSQL50&lt;br /&gt;VendorLib=libmysql.dll&lt;br /&gt;&lt;br /&gt;3. Tambahkan juga kode berikut di file dbxconnections.ini di folder sama seperti di atas&lt;br /&gt;[OpenMySQL50]&lt;br /&gt;DriverName=OpenMySQL50&lt;br /&gt;HostName=localhost&lt;br /&gt;Database=Nama database anda&lt;br /&gt;User_Name=user mysql anda&lt;br /&gt;Password=password mysql anda&lt;br /&gt;BlobSize=-1&lt;br /&gt;&lt;br /&gt;4. Langkah selanjutnya adalah membuat datamodule dengan cara klik file--&gt;New--&gt; Data module&lt;br /&gt;5. Taruh komponen TSQLConnection di atas data module dan setting propertiesnya sebagai berikut:&lt;br /&gt;&lt;br /&gt;ConnectionName = OpenMySQL50&lt;br /&gt;    DriverName = OpenMySQL50&lt;br /&gt;    GetDriverFunc = getSQLDriverMYSQL50&lt;br /&gt;    LibraryName = 'dbxopenmysql50.dll'&lt;br /&gt;    LoginPrompt = False&lt;br /&gt;    Params.Strings = (&lt;br /&gt;      DriverName=OpenMySQL50&lt;br /&gt;      HostName=localhost&lt;br /&gt;      Database=test&lt;br /&gt;      USER_NAME=root&lt;br /&gt;      Password=root'&lt;br /&gt;      BlobSize=-1)&lt;br /&gt;    VendorLib = libmysql.dll&lt;br /&gt;    Connected = True&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2817151447595259882-3046674655820949729?l=delphirewo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delphirewo.blogspot.com/feeds/3046674655820949729/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://delphirewo.blogspot.com/2009/10/membangun-koneksi-database-mysql-di.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/3046674655820949729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2817151447595259882/posts/default/3046674655820949729'/><link rel='alternate' type='text/html' href='http://delphirewo.blogspot.com/2009/10/membangun-koneksi-database-mysql-di.html' title='Membangun Koneksi Database MySQL di Delphi dengan DBExpress'/><author><name>mbahdien</name><uri>http://www.blogger.com/profile/01796843782304479356</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
