Rabu, 08 Februari 2012

Simpan Banyak Record Di Deplhi

Pernahkah teman teman mengalami hal ini:
suatu aplikasi yang menggukan sistem on to many, atau satu record data terhubung dengan banyak data di tabel yang lain, seperti dalam membuat sebuah nota, dimana ada master nota dan detail nota.
dan ketika proses penyimpanan terjadi, dia aplikasi di indikasi masuk dengan sempurna... setelah laporan bulanan kok terjadi selisih,ternyata data detail nota ada yang miss..alias g masuk semua...
ini yang pernah saya alami dulu..
akhirnya saya bertanya pada ahlinya Delphi, knapa hal ini bisa terjadi?????
trus dapat solusi begini :
1. ADOConnection1 di Properties Mode isikan dengan cmReadWrite
2. di komponen AdoQuery properties isikan dengan ctDynamic
3. ketika sebelum membuat procedur simpan tambahkan ADOConnection1.BeginTrans;
4. dan di akhir prosedur simpan tambahkan if ADOConnection1.InTransaction then ADOConnection1.CommitTrans;

keterangan Jenis MODE diambil dari help nya Delphi
cmUnknown    The permissions have not yet been set for the connection or cannot be determined.
cmRead    Read-only permissions are available to the connection.
cmWrite    Write-only permissions are available to the connection.
cmReadWrite    Read/write permissions are available to the connection.
cmShareDenyRead    Prevents others from opening connections with read permissions.
cmShareDenyWrite    Prevents others from opening connection with write permissions.
cmShareExclusive    Prevents others from opening connection.
cmShareDenyNone    Prevents others from opening connection with any permissions.

keterangan CursorType menurut help Delphi
ctUnspecified    A specific cursor type has not yet been specified.
ctOpenForwardOnly    Forward-only cursor in which you can only scroll forward; better performance because only requires single through recordset.
ctKeyset    Keyset cursor; records added by other users are not visible; records deleted by other users are inaccessible.
ctDynamic    Dynamic cursor; data modifications, deletions, and insertions by other users are visible; scrolling forward and back allowed.
ctStatic    Static cursor; static copy of records; data changes by other users not visible; used mostly for reporting.

hal ini terkadang di sepelekan dan ditinggalkan default oleh pengguna delphi,karena sebenarnya tidak berpengaruh banyak apabila database masih sedikit, namun bila data sudah jutaan baru terasa...

Setelah saya gunakan metode ini. Alhamdulillah. program tidak lagi mengalami data yang tertinggal, karena dengan menerapkan metode ini, sebelum transaksi selesai, proses lain tidak bisa masuk, dan bila ada satu data yang gagal maka semua data tidak jadi masuk.

Semoga membantu bagi yang baru belajar delphi...

Tidak ada komentar:

Posting Komentar