Salam
blogger……pada postingan saya kali ini akan membahas tentang bagaimana cara untuk menghindari
terjadinya duplikasi data
yang di input pada Delphi. Dalam membuat sebuah
project di Delphi kita biasanya membuat sebuah database yang isinya membuat berbagai macam info record yang dibutuhkan.
Contohnya kita ingin membuat aplikasi
penjualan barang menggunakan delphi, maka logikanya setiap barang yang diinput memiliki nama dan ID nya
masing – masing, ID atau primary key ini bersifat unik dan
beda untuk masing – masing recordnya, artinya setiap ID atau primary key tidak boleh sama,
nah jika kita ingin menyimpan data dengan ID yang sama maka kemungkinan besar aplikasi nya akan error. Pertanyaan nya adalah bagaimana cara agar duplikasi data tersebut dapat dicegah ???,
nah untuk itu saya akan menjelaskan
dan memberikan sedikit trik sederhana
untuk mengatasi hal tersebut.
Disini saya akan mnjelaskan 2 cara untuk mengatasi
duplicate data primary key di Delphi tersebut, cara yang pertama ialah dengan
cara membuat nomor atau kode
otomatis, dan cara yang kedua adalah dengan cara
melakukan pengecekan atau validasi pada
saat menginput data pada ID atau primary key. Berikut ini saya
akan jelaskan
cara tersebut satu persatu.
1.Membuat nomor atau kode otomatis di
Delphi
Cara ini bisa dibilang
sangat mudah di lakukan dan
sangat aman dari terjadinya error duplikasi data pada proses penginputan data di Delphi. Cara kerjanya adalah kita membuat
sebuah function no ID otomatis
pada primary key tersebut, sehingga setiap record yang dibuat mempunyai nomor ID otomatis berbeda beda dan
tidak selalu sama,sehingga membuat
kecil kemungkinan dapat terjadi duplikasi
data.
Cara pembuatanya adalah
pertama – tama siapkan table
pada database terlebih dahulu, jangan lupa buat sebuah
primary key untuk kode uniknya, selanjutnya buat sebuah project Delphi dan form baru nya
(saya rasa disini semua sobat sudah
mahir membuat formnya) selanjutnya buat sebuah function di form tersebut dan letakan di
bagian private ataupun
public.
Lalu ketikan fungsi ini tanpa
tanda petik “function GenerateID(T:
TDateTime): string;” lalu selanjutnya tekan ctrl + C maka akan tampil
function generate ID otomatisnya selanjutnya
ketikan kode program berikut ini :
function TFsamsat.GenerateID(T: TDateTime): string;
var
Yr, Mn, Dy : Word;
Hr, Mnt, Sec, MSec : Word;
Begin
DecodeDate(T, Yr, Mn, Dy);
DecodeTime(T, Hr, Mnt, Sec, MSec);
Result := FormatFloat('00', Yr-2000) + FormatFloat('00', Mn) +
FormatFloat('00', Dy) + FormatFloat('00', Hr) +
FormatFloat('00', Mnt) + FormatFloat('00', Sec) +
FormatFloat('00', MSec);
end;
jika sudah selanjutnya kita akan membuat
kode untuk eksekusi kode otomatis
tersebut, caranya adalah klik pada
Adotable1 (disini saya menggunakan adotable) lalu pada object inspector pilih event OnNewRecord lalu klik dan
tambahkan kode program berikut ini :
procedure TForm1.Tadotable1NewRecord(DataSet: TDataSet);
begin
Tadotable1BarangID.Value:=GenerateID(now);
end;
penjelasan dari kode diatas
adalah Tadotable1 merupakan
nama table yang sudah di konesikan, sedangan
barangID merupakan nama field primary key nomor otomatis nya, silahkan
disesuaikan dengan nama yang anda buat di program Delphi sobat. Cara kerja koding diatas adalah
jika sobat menjalakan aplikasi dengan menambah record baru maka setiap
record nya akan membuat nomor otomatis
sendiri tanpa harus diinputkan,sehingga
duplikasi data tidak akan terjadi karena
nomor otomatisnya berbeda beda tiap
recordnya ID nya dibuat menyesuaikan tanggal bulan tahun
menit dan detik saat proses
penambahan data baru.
2.melakukan validasi atau
pengecekan data pada saat input Kode / Nomor primary key
Cara ini dapat dilakukan
jika kita menginput / memasukan kode barang / ID secara manual, cara kerjanya adalah pada saat kita
menginputkan ID dari suatu barang maka
koding program nya akan mengecek ID tersebut, apakah ID tersebut sudah ada atau belum
ada, jika ternyata ID yang diinput sudah ada maka
akan muncul pesan peringatan bahwa ID yang dimasukan sudah ada, dan
proses dihentikan untuk selanjutnya diminta memasukan ID yang lain, jika ID ternyata tidak ada maka
proses kerja program dilanjutkan. Berikut ini cara
membuat kode program peringatan tersebut. Tambahkan sebuah ADOquery1 dan Buat sebuah
edit text ataupun dbedit
text lalu klik pada edit text / dbedit text tersebut, lalu pada object inspector cari event OnExit lalu tambahkan
kode dibawah ini pada OnExit :
procedure TFbarang.DBEdit1Exit(Sender: TObject);
begin
with qbarang do
begin
Active := False;
SQL.Clear;
SQL.Text :=
' SELECT * FROM tbbarang WHERE IDbarang = ' + QuotedStr(dbedit1.Text);
Active := True;
if qbarang.RecordCount > 0 then
begin
MessageDlg('KODE BARANG
yang di input sudah ada !!!',mtError,[mbOK],0);
tbarang.Cancel;
bitbtn1.Click;
end;
end;
end;
Penjelasan dari kode diatas adalah qbarang
merupakan adoquery1, tbbarang
merupakan nama
table barang di database,
DBedit1 merupakan primary key.
7 Comments
Mau tanya gan kalo seumpama saya ingin memasukan NIP tanggal
ReplyDelete12345 12/12/2017
Jika inputan seperti itu saya simpan otomatis data tidak akan ke save karena sudah ada. Jika nip tersebut kita rubah sedangkan tgl tetap sama bagaimana querynya. Mohon bantuanya
tergantung sobat menggunakan primary key yang mana ....untuk mencegah double data, sebelum di record gunakan peringatan dgn sql di atas,biar program membaca bhwa nip yg dimasukan sudah ada, jadi tinggal sobat rubah aj nip nya jika yg menjadi primary key itu nip.
Deletetbarang.cancel; tuh apa gan?
ReplyDeleteScript utk membatalkan proses pada tabel barang jika ada kode yg sama
Deletetbarang itu apa gan?...
ReplyDeletenama Adotable1
ReplyDeleteItu kalo pada proses tambah data ya pak, kalo saat edit data gimana pak?
ReplyDeleteSilahkan tinggalkan komentar dibawah ini,
Terima kasih sudah :
1. Berkomentar dengan sopan
2. Tidak meninggalkan link aktif dalam form komentar
3. Berkomentar sesuai postingan / artikel
4. Tidak membuat komentar yang mengandung SARA / SPAM
5. Memberikan informasi link / script yang tidak berfungsi