Monthly Archiv: October, 2012

Menambahkan dialog konfirmasi pada ActionList Standard

Pada komponen ActionList telah disediakan banyak sekali action Standard yang akan sangat membantu dalam pemrograman delphi tanpa harus menulis code lagi secara manual.

Fungi-fungsi standar seperti File, Edit, Dataset dan lain-lain sudah tersedia kita tinggal pake, jika dikehendaki kita hanya perlu mengganti Caption dan iconnya saja.

Dalam prakteknya action standard yang telah disediakan ada kalanya tidak sesuai atau kurang mewakili kebutuhan kita.

Misalnya Action DataSetDelete yang fungsinya untuk menghapus record, pada saat dieksekusi akan langsung menjalankan tugasnya tanpa konfirmasi terlebih dulu, hal ini akan sangat rawan sekali bila user menekan tobol hapus tanpa sengaja.

Berikut ini contoh untuk menambahkan dialog konfirmasi pada action TDataSetDelete.

uses Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DBCtrls,
  Grids, DBGrids, DB, IBCustomDataSet, IBDatabase, DBActns,
  ActnList;

type
  // Tambahkan ini ...
  TDataSetDelete = class(DBActns.TDataSetDelete)
  public
    procedure ExecuteTarget(Target: TObject); override;
  end;
  // Sampai sini .. Tekan Ctrl+Shift C untuk menulis codenya
  TForm1 = class(TForm)

...

...

...

{ TDataSetDelete }
procedure TDataSetDelete.ExecuteTarget(Target: TObject);
begin
     if MessageDlg('Yakin Dihapus ?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
        inherited;

end;


Semoga bermanfaat

Fitur Keamanan dan duplikasi data pada Interbase

Dalam sebuah aplikasi database, keamanan dan duplikasi data merupakan sebuah kebutuhan pokok yang tidak bisa dianggap remeh.

Percuma ada aplikasi bagus tapi tidak ada jaminan keamanan, baik aman dari pencurian data atau hilang karena rusak.

1. Sekuritas pemakai (*)

Pada interbase daftar user dan hak akses user dapat di atur dengan menggunakan pola terpusat di server (seperti mysql) atau embeded pada masing-masing database (seperti access, paradox), tentunya ini mempunyai kelebihan dan kekurangan masing-masing.

Dengan menggunakan user terpusat, lebih mudah bila banyak user yang mengakses beberapa database, sehingga bila ingin menambah, menghapus, ganti password, cukup satu untuk semua.

Kekurangan/kelemahannya bila data tersebut dicuri orang, maka orang tersebut tinggal install server dengan user default, maka data tersebut dapat dibuka. Dengan menggunakan sekuritas menyatu dengan database (embed), data akan tetap aman seandainya dicuri orang selama sang pencuri tersebut tidak tahu master passwordnya (SYSDBA), si pencuri masih harus putar otak kalo tidak tahu user/passwordnya.

Dengan menggunakan embeded user kita bisa set password beda untuk tiap aplikasi walaupun nama usenya sama.

Lebih detail baca disini

2. Backup / Restore

Backup & Restore fungsinya untuk menyimpan data, biasanya dalam format compressed, yang mana bisa digunakan kembali bila ada kelihangan data.

Untuk melakukan backup/restore pada interbase bisa menggunakan commandline tool (gbak), atau menggunakan vcl (ibx/fibplus), atau bisa juga menggunakan API coding.

contoh Backup Interbase menggunakan tool gbak …

C:\DATA>GBAK -v DATA.IB DATA.IBK -user sysdba -pass masterkey
gbak: readied database DATA.IB for backup
gbak: creating file DATA.IBK
gbak: starting transaction
gbak: database DATA.IB has a page size of 4096 bytes.
gbak: writing domains
gbak:     writing domain RDB$1
gbak:     writing domain RDB$2
gbak:     writing domain RDB$3
gbak:     writing domain RDB$4
gbak:     writing domain RDB$5
gbak: writing shadow files
........
gbak:     writing privilege for user PUBLIC
gbak:     writing privilege for user SYSDBA
gbak:     writing privilege for user SYSDBA
gbak: writing table constraints
gbak: writing constraint INTEG_1
gbak: writing constraint PK_BIODATA
gbak: writing referential constraints
gbak: writing check constraints
gbak: writing SQL roles
gbak: writing users
gbak:     writing user SYSDBA
gbak: closing file, committing and finishing. 15872 bytes written
C:\DATA>

contoh code Backup Interbase menggunakan komponen IBX …

uses IBServices;

procedure TForm1.Button1Click(Sender: TObject);
var
   bak: TIBBackupService;
begin
     Memo1.Clear;
     bak:=TIBBackupService.Create(Self);
     bak.DatabaseName:='c:\data\DATA.IB';
     bak.BackupFile.Text:='c:\data\DATA.IBK';
     bak.Params.Values['user_name']:='sysdba';
     bak.Params.Values['password']:='masterkey';
     bak.LoginPrompt:=False;
     bak.Verbose:=True;
     bak.Attach;
     bak.ServiceStart;
     while not bak.Eof do
           Memo1.Lines.Add(bak.GetNextLine);
     bak.Detach;
     bak.Free;
end;

3. Online dump (sequential backup)

Online dump mirip dengan backup namun hasilnya tetap dalam format database (readonly) dan sifatnya menambah untuk proses berikutnya, bukan overwrite, sehingga prosesnya lebih cepat bila kita lakukan lebih sering (mirip fitur resume – kalo kita download file di internet).

Contoh Online Dump menggunakan tool gbak …

C:\DATA>gbak -d DATA.IB DATA_DUMP.IB -user sysdba -pass masterkey
gbak: WARNING: Dumped 196 pages of a total 196 database pages
gbak: WARNING: Dumped 0 pages to page appendix file

4. Shadow

Shadow adalah proses cloning database secara realtime (1:1), seperti teknologi RAID pada komputer server. kita bisa membuat shadow sebanyak mungkin.

Contoh membuat Shadow …

CREATE SHADOW 1 MANUAL 'D:\DATA_SHADOW_01';
CREATE SHADOW 2 MANUAL 'E:\DATA_SHADOW_02';
CREATE SHADOW 3 MANUAL 'F:\DATA_SHADOW_03';

5. Journaling (*)

Journaling fungsinya mirip dengan shadow namun menjadi potongan-potongan file kecil yang dapat kita set check pointnya, ini berguna bila ada suatu masalah kita bisa mundur beberapa langkah sesuai cek poin (mirip fitur system restore pada windows), kegunaan lain jika kita ingin membuat duplikasi database di lokasi lain jauh (kita file kirim potongan2 file kecil tadi via email/ftp) untuk di satukan kembali di tempat tujuan.

6.Replikasi (**)

Replikasi merupakan proses sinkronisasi antar database (bisa beda table/field dll), baik secara satu arah, dua arah atau banyak arah. yang sangat berguna untuk sinkronisasi data di beberapa server yang berjauhan dengan koneksi internet pas-pasan.

Inti dari Replikasi/sinkronisasi adalah membuat catatan/logging setiap aktifitas table2 terntentu dalam database kedalam sebuah table log, kemudian secara terjadwal memproses log tersebut kepada database lain.

Untuk menjamin akurasi data dalam proses Replikasi/sinkronisasi  ini membutuhkan fitur Transaction dan Two Phase Commit yang sepenuhnya di dukung Interbase.

Untuk menikmati fitur ini dapat menggunakan tool pihak ketiga yang siap pakai(seperti IbReplicator), atau kita bisa membuat sendiri dengan menggunakan vcl ibx/fibplus, dengan menerapkan fitur Transaction dan Two Phase Commit .

Catatan:
Fitur 1-5 adalah fitur standar/bawaan Interbase
tanda * (Fitur 1 & 5) merupakan fitur interbase yang sejauh saya tahu belum ada di saudara angkatnya (Fi** B** sampai versi saat ini 2.5)
tanda ** (Fitur 6) membutuhkan 3 party tool, namun kita juga bisa bikin sendiri

Mengenal Turbo Delphi Explorer 2006

Turbo Delphi Explorer merupakan satu-satunya (setidaknya sampai artikel ini ditulis) versi Delphi gratis yang pernah dikeluarkan Borland/CodeGear (sekarang Embarcadero).

Turbo Delphi di release pada bulan September 2006.

Turbo Delphi dikeluarkan dalam dua versi yaitu Win32 & dot Net, masing-masing edisi dikeluarkan dalam dua edisi yaitu Turbo Delphi Explorer (gratis) dan Turbo Delphi Profesional (berbayar).

Turbo Delphi Installer

Turbo Delphi Installer

Turbo delphi merupakan bagian dari paket Borland Developer Studio 2006.

Borland Developer Studio 2006 merupakan IDE yang terintegrasi yang mana didalamnya sudah mencakup Delphi, C++, dot Net dan C#.

Selain Turbo Delphi, masing-masing pecahan dari BDS 2006 juga di keluarkan dalam bentuk Turbo, namun pada setiap mesin/komputer hanya diijinkan untuk menginstall salah satu versi Turbo Explorer saja.

Turbo Delphi Explorer hadir dengan beberapa fitur baru yang belum ada di delphi sebelumnya diantaranya …

  • Refactoring
  • History Manager
  • Smart Block completion
  • SyncEdit
  • Code Template
  • Live designer guidelines
  • banyak VCL baru seperti Category Button, Button Group dll
  • dan masih banyak lagi

Lebih lengkap tentang fitur Turbo Delphi Explorer 2006 dapat di baca di …

http://dn.embarcadero.com/article/33659

https://www.box.com/s/kndfc7y3ddbiq0vc9dl6

Salah satu batasan pada Turbo Delphi Explorer adalah kita tidak diijinkan untuk menginstall/menambahkan paket komponen  pihak ketiga (3party VCL), namun kita masih bisa menggunakannya saat runtime.

Tanya Jawab (Q/A) :

Q: Apakah lisensi Turbo Delphi Explorer 2006 gratis
A: Ya, lisensi Turbo Delphi Explorer 2006 gratis, namun Turbo Delphi bukan freeware jadi kita tetap harus registrasi ke Embarcadero.
Q: Apakah kita diperbolehkan menggunakan Turbo Delphi Explorer untuk mengembangkan proyek komersial
A: Kita bebas menggunakan Turbo Delphi Explorer 2006 untuk mengembangkan aplikasi komersial
Q: Apakah kita dapat menginstall atau menambahkan paket seperti Fast-Report atau yang lain
A: Kita tidak dapat / tidak diijinkan untuk menambahkan paket apapun selain paket bawaan Turbo Delphi, namun kita bebas menggunakan paket tambahan secara runtime

contoh menggunakan Fast-Report secara runtime menggunakan  Turbo Delphi

uses frxClass, frxExportPDF;
 procedure TForm1.Button1Click(Sender: TObject);
 var
 frx: TfrxReport;
 begin
 frx:=TfrxReport.Create(Self);
 frx.LoadFromFile('c:\test.fr3');
 frx.ShowReport;
 frx.Free;
 end;

Pengalamanku menggunakan Interbase

Yang aku suka dari Interbase …

(Ini hanya pengalaman pribadi menggunakan Interbase, bukan berarti database lain tidak bisa melakukan hal yg sama … CMIIW)

1. Footprint kecil, mudah instalasi
+/- 2MB untuk Server, +/- 500KB untuk client

2. Dual mode user security .. interbase 7.5 keatas
User bisa di server (seperti kebanyakan db client server)
User bisa embedded di database, sehingga mudah kalo misalnya hrs install ulang server, juga aman dan mudah pengaturannya karena tidak campur dengan user database lain, beda database bisa mempunyai nama user sama dengan password dan kewenangan berbeda.

3. User define function
Kita bisa dengan leluasa membuat fungsi sendiri menggunakan delphi untuk membuat fungsi2 sql yg tidak disediakan secara bulitin

4. Shadow
Kita bisa membuat realtime duplicate database pada folder/drive/harddisk lain dalam satu komputer, seperti teknologi RAID, misalnya tiba2 harddisk jebol/gak kebaca, kita tinggal install convert shadow ke main database. Jumlah shadow tidak dibatasi, dan proses shadow atau duplikasi berjalan otomatis tanpa perlu program lain seperti scheduller dll.

5. Journaling … interbase 2007 keatas
Realtime logging yg bermanfaat untuk point to point recovery (mirip system restore windows), kita bisa rollback ke cek point yg tersedia, berguna kalo misalnya karena gak sengaja atau ada sabotase yang merubah atau menghapus data (seharusnya tidak terjadi kalo pengaman point (2) sudah bagus).

6. Online dump / Incremental backup … interbase 2007 keatas
Kita bisa membuat backup secara incremental berdasarkan jadwal
misalnya per 10 menit, per 1 jam, per 1 hari, dsb
artinya mengupdate backup yang ada bukan overwrite sehingga proses backup lebih cepat.
“Proses backup bisa dilakukan walaupun database sedang dipakai”

7. Konsumsi memory untuk alokasi pemakaian database bisa kita atur
Misalnya memory server 4GB kita bisa alokasikan untuk database max 1GB
sehingga jika database kita kurang dari 1GB, pada saat query server akan membaca data yg dimemory bukan di disk sehingga proses lebih cepat.

8. Event alert
kita bisa mengirim pesan ke seluruh client/atau client yang diinginkan, pesan bisa juga di picu oleh trigger/prosedur, tidak perlu menggunakan timer yg secara berkala membaca database

contoh pemakaian :
Misalnya kita ingin pada saat stock untuk barang tertentu, dibawah limit akan ada pesan untuk komputer client bagian pembelian.
Misalnya kita ingin ada pemberitahuan ke komputer manajer mana kala ada entry yang perlu diotorisasi.

9. Posisi data bisa diletakkan di folder/drive mana saja asal dalam komputer server,
data tidak perlu disharing, hak akses bisa diset hanya “SYSTEM”, sehingga aman dari virus atau di otak-atik orang yang tidak bertanggungjawab.

Untuk pengamanan maksimum kita bisa menaruh data di harddisk/partisi tertentu dengan mengeset security hanya bisa dibaca SYSTEM dan user kita, sementara user lain termasuk Administrator dibuang, firewall juga ditutup, hanya port tertentu (termasuk port interbase 3050) yang dibuka.

10. Perubahan metadata, misalnya penambahan field, atau memperbesar ukuran field, kecuali menghapus field bisa dilakukan sekalipun data sedang dipakai.

Ini akan membantu sekali bila dipakai di klien yg super sibuk, tidak memungkinkan untuk off saat kita mau update database.

11. Spanning data
Misalnya kita mempunyai HDD 60GB, awal penggunaan data masih kecil sehingga HDD 60GB lebih dari cukup, lama2 data berkembang sehingga HDD 60GB tidak mencukupi lagi.
Biasanya bila mengalami hal itu kita ganti hdd yg lebih besar, kita copy database ke HDD yang baru, ini akan membutuhkan waktu yg lama bila datanya cukup besar.
Dengan interbase kita bisa menambahkan HDD baru tanpa membuang HDD lama, kita cukup mengconfigurasi agar data dilanjutkan di HDD baru bila ukuran data sudah mencapai batas yang kita tentukan (bisa menghemat waktu dan biaya).

12. Mendukung replikasi/sinkronisasi data (membutuhkan 3 party tool seperti IBReplicator)
Misalnya gini ada kantor pusat ,9 kantor cabang, dan 1 server backup (semua beda lokasi)
Server pusat berisi data pusat plus seluruh data cabang
Server cabang hanya berisi cabang yang bersangkutan
Server backup berisi 100% identik dengan server pusat

Dengan Interbase+IBReplicator kita bisa dengan mudah melakukan sinkronisasi data secara berkala (mungkin tiap 5-30 menit, tergantung kecepatan koneksi yg dipakai).

Dengan fitur Two Phase Commit, maka akurasi data akan tetap terjamin walaupun misalnya ada ganguan koneksi (putus).

Sinkronisasi data menggunakan table logging sehingga proses sinkronisasi dapat berjalan dengan cepat karena berdasar pada table logging (yg diisi oleh trigger), tidak perlu membandingkan database/table record demi record.

Segala perubahan insert, update, delete otomatis akan di sinkronisasi

Sinkronisasi bisa berlaku 2 arah, perubahan pusat update ke cabang dan sebaliknya.

13. Global temporary table (GTT)
Global temporary table merupakan sebuah table yang dipakai bersama2 namun isinya hanya dapat dilihat oleh sesion yg aktif, tidak dapat dilihat user lain walaupun dalam satu komputer dan login menggunakan user yang sama.

Saya biasanya menggunakan Global temporary table ini untuk menyimpan parameter seperti periode laporan dll, bermanfaat untuk aplikasi yang menggunakan periodik seperti program accounting.

contoh :

misalnya saya bikin GTT dengan nama session yg mempunyai field tgl_awal dan tgl_akhir

setelah login, atau setelah memilih periode aktif ..

insert into session(tgl_awal,tgl_akhir) values ('01.07.2012','31.07.2012');

nanti querynya tinggal ..

select t.id,t.tgl,t.kode,..... 
from trans t
left join session s on (t.tgl between s.tgl_awal and s.tgl_akhir)

lebih mudah kalo di bikin view misalnya dengan nama vw_trans_aktif

jadi manggil di delphinya tinggal select * from vw_trans aktif gak perlu memasukkan parameter setiap kali query

…. dan masih banyak lagi ….

Mengenal Embedded User Authentication dalam Interbase

Embedded User Authentication merupakan fitur yang ada sejak Interbase 7.5, yaitu management user yang dikemas menyatu dalam database.

Pada Interbase versi sebelumnya atau pada saudara sepupunya Firebird (setidaknya sampai versi 2.5 saat dokumen ini ditulis), management user masih menempel di Interbase Server.

Sejak Interbase versi 7.5 keatas kita diberi keleluasaan untuk memilih apakah management usernya tetap nempel di Server atau menyatu di database.

Dengan menggunakan Embedded User Authentication akan diperoleh beberapa kelebihan diantaranya:

Data akan tetap aman seandainya dicuri orang selama sang pencuri tersebut tidak tahu master passwordnya (SYSDBA), berbeda jika user nempel di Server, dengan install ulang server berarti master password akan kembali ke default.
Tidak perlu kerjaan tambahan untuk mengatur ulang daftar user jika suatu ketika server jebol dan harus install ulang
Kita dapat mengeset orang dengan login yang sama namun dengan password yang berbeda untuk aplikasi/database yang berbeda pada server yang sama.

Untuk membuat database yang support Embedded User Authentication cukup dengan menambahkan klausa “with admin option”

contoh membuat database dengan tool isql …

C:\>cd ib2007\bin
C:\ib2007\bin>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 'c:\data_eua.ib' user 'sysdba' password 'masterkey' with admin option;
SQL> quit;

selanjutnya untuk menambahkan user …

C:\ib2007\bin>isql c:\DATA_EUA.IB -u sysdba -p masterkey
Database:  c:\DATA_EUA.IB, User: sysdba
SQL> create user bagong set password '123';
SQL> create user gareng set password '456';
SQL> create user semar set password '789';
SQL> quit;

untuk lebih aman kita dapat mengganti master passwordnya …

C:\ib2007\bin>isql c:\DATA_EUA.IB -u sysdba -p masterkey
Database:  c:\DATA_EUA.IB, User: sysdba
SQL> alter user sysdba set password 'gatutkoco';
SQL> quit;

Bila kita masuk lagi dengan password standar akan terjadi error ..

C:\ib2007\bin>isql c:\DATA_EUA.IB -u sysdba -p masterkey
Statement failed, SQLCODE = -902
Your user name and password are not defined. Ask your database administrator to
set up an InterBase login.
Use CONNECT or CREATE DATABASE to specify a database
SQL>

=== YANG PERLU DIINGAT, INTERBASE TIDAK MENYEDIAKAN TOOL UNTUK MERESET PASSWORDNYA JIKA LUPA ==

Buatlah password yang mudah diingat anda sendiri namun susah diingat orang lain.

Seperti buah simalakama, namun .. berdasarkan survey ke beberapa klien, sebagian besar klien lebih memilih mengentry ulang datanya daripada data penting perusahaan jatuh ke tangan pihak lain yang tidak bertanggungjawab.

Interbase dan Firebird

Beberapa teman pernah nanya kepada saya apakah Interbase itu sama dengan Firebird?

Memang banyak orang yang beranggapan bahwa Interbase sama dengan Firebird atau Firebird adalah versi gratisnya Interbase.

Sesungguhnya anggapan diatas adalah tidak benar.

Sekilas sejarah tentang lahirnya Firebird

Pada pertengahan tahun 2000, Borland Corp (sekarang Embarcadero) merelease source code dari Interbase 6.0 untuk umum.

Beberapa waktu kemudian salah seorang yang pernah terlibat dalam team pengembangan Interbase bersama dengan berberapa teman mulai membangun Firebird berdasarkan kode yang direlease Borland.

Perkembangan versi

Pada versi-versi awal memang banyak kesamaan antara Firebird dengan interbase, termasuk ekstensi file database,port,library dll

Setelah sempat berhenti, Interbase mulai dikembangkan lagi, muncullah Interbase 6.5, kemudian Interbase 7.5 yang merupakan versi pertama yang menggunakan pengaturan user pada database (sekedar informasi, sampai pada saat artikel ini ditulis, pengaturan user pada firebird terbaru (2.5) masih gabung diserver, sementara Interbase memberi 2 pilihan).

Selanjutnya Interbase dan Firebird berkembang sendiri-sendiri dengan fitur masing-masing pula.

Database juga sudah tidak kompatible (tidak bisa dengan mudah konversi Interbase < => menggunakan backup/restore seperti versi2 sebelumnya).

Sejarah perkembangan versi (release sebelum 6.0 & SP update diabaikan)

Interbase : 6.0, 6.5, 7.0, 7.1, 7.5, 2007, 2009, XE, XE3

Firebird: 1.0, 2.0, 2.1, 2.5.0, 2.5.1

Persamaan yang masih ada dan ini yang kadang membuat user bingung adalah:
Sama-sama menggunakan port standar 3050 (gds_db)
Sama-sama menggunakan gds32.dll sebagai library

Oleh karena itu sering kali terjadi masalah/crash jika Interbase dan Firebird diinstall pada komputer yang sama.

Sebenarnya masih ada solusi untuk mengganti port (pada interbase) dan menggunakan library fbclient.dll (untuk firebird).

Untuk lebih amannya sebaiknya di install di beda komputer.

Untuk fitur2 apa yang ada pada Intebase bisa dibaca di ..
http://www.facebook.com/groups/delphi.interbase/doc/432442213467182/
http://www.facebook.com/groups/delphi.interbase/doc/435036439874426/
http://www.facebook.com/groups/delphi.interbase/doc/444659148912155/
http://www.facebook.com/groups/delphi.interbase/doc/421114931266577/
dan artikel-artikel lainnya

SEKILAS TENTANG INTERBASE & DATABASE CLIENT SERVER

Interbase adalah salah satu database RDBMS yang menggunakan teknologi client server.

Gambaran perbedaan aplikasi yang menggunakan database desktop (file sharing) dengan aplikasi yang menggunakan database client server dapat dilihat pada ilustrasi gambar berikut :

Pada database desktop proses baca tulis terhadap database dilakukan langsung oleh aplikasi sedangkan untuk database client server proses baca tulis terhadap database dilakukan oleh database server, aplikasi hanya mengirimkan perintah dan membaca hasil dari query dan dihasilkan database server.

Pada aplikasi remote yang mana database terletak di komputer lain apalagi datanya cukup besar, dengan database client server mempunyai keunggulan dari segi kecepatan karena lebih sedikit data yang dikirim melalu jaringan.

Contoh database yang berbasis desktop/file sharing :

Dbase, FoxPro, Paradox, Access, dll

Contoh database yang berbasis client server :

Interbase, Firebird, Blackfish SQL, MS SQL Server, MySQL, Oracle, SQL Anywhere, Postgresql, dll

Interbase merupakan database client server yang dapat berjalan di banyak platform diantara Windows, Linux, Mac, Solaris.

Salah satu kelebihan Interbase adalah foot print yang kecil, instalasi mudah dan hampir tidak perlu perawatan, sehingga dalam pendistribusiannya tidak mewajibkan seseorang dengan pengetahuan khusus untuk instalasi dan perawatan.

Referensi tentang Interbase dapat dibaca di …

http://en.wikipedia.org/wiki/InterBase

http://www.embarcadero.com/products/interbase