Kali ini saya mau sharing tentang penyimpanan data ke MS Access
dengan memakai Query. Pada pemrograman kali ini, saya
sepenuhnya memakai pemrograman obyek. Semua obyek yang dibutuhkan tidak di-drag dari tab VCL, tetapi di-instankan lewat program.
Obyek-obyek yang dipakai:
- TAdoConnection (unit AdoDB), untuk melakukan koneksi ke database langsung
- TAdoQuery (unit AdoDB), untuk melakukan pemanggilan data
- TEdit (unit StdCtrls), untuk menerima masukan dari pemakai aplikasi
- TLabel (unit StdCtrls), untuk menampilkan tulisan pada form
- TButton (StdCtrls), untuk menjalankan perintah penyimpanan data dan penutupan aplikasi
Untuk membentuk obyek TEdit, TButton dan TLabel, dapat dibaca disini. Saya akan langsung pada pembentukan obyek TAdoConnetion dan TAdoquery.
Pembentukan obyek TAdoConnection:
TAdoConnection digunakan untuk sentralisasi koneksi data ke database. Nantinya semua dataset akan diarahkan ke TAdoConnection. Sehingga hanya dengan satu koneksi, kita bisa menggunakan untuk multi dataset.
- Pastikan unit yang menyertakan TAdoConnection ada dalam deklarasi unit dalam form yang dimaksud.
unit AdoDB
-
Buat
variabel global, baik diletakkan di private atau di public,
sehingga semua prosedur dalam form tersebut dapat mengakses variabel
tersebut.
private Con : TAdoConnection;
- Bentuk obyek TAdoConnection dan berikan pada variabel
Con := TAdoConnection.Create(self);
Con adalah obyek instan dari class TAdoConnection. Di dalam pemrograman nantinya Con adalah nama instan dari TAdoConnection yang sedang digunakan. Setelah menetapkan obyek instan dari TAdoConnection, sekarang kita me-instan-kan obyek di memori pada bagian FormCreate kepunyaan Form. Kenapa harus di FormCreate? Sebenarnya memang bisa dimana saja. Namun FormCreate hanya di panggil sekali ketika obyek Form dibuat, dan dibuat di awal-awal aplikasi, sehingga cocok sebagai tempat me-instan-kan obyek TAdoConnection.
- Kemudian deklarasikan koneksi data
Setelah obyek terbentuk. Kita perlu menghubungkan ke database dengan memberikan data database pada property ConnectionString. Dalam program ini diasumsikan database yang dipakai adalah microsoft Access database, dengan nama Teman.mdb. Database tersebut diletakkan satu direktori/folder dengan aplikasi.
Con.Close;Con.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' teman.mdb;Persist Security Info=False;' + 'Jet OLEDB:Database Password=''; LoginPrompt := False;
Untuk memanipulasi data, dibutuhkan TAdoQuery. Agar dapat digunakan, obyek dari TAdoQuery dibentuk terlebih dahulu. Sebelum pembentukan obyek query, maka tambahkan variabel obyek qry ke bagian private. Sehingga sekarang bagian private akan berubah menjadi:
Private
Con : TAdoConnection;
qry : TAdoQuery; ....................
pada bagian FormCreate, tambahkan bagian berikut:
qry := TAdoQuery.Create(Self);
Setelah obyek Query terbentuk, obyek tersebut dihubungkan dengan TAdoConnection sehingga menjadi:
qry.Connection := Koneksi;
Sampai tahap ini, aplikasi sudah dapat digunakan untuk memanipulasi data.
Menyimpan Data ke Database Access
Sekarang tiba pada bagian yang pokok. Dengan variabel qry yang merupakan class TAdoQuery, kita akan memasukkan data ke database Access.
Ada dua data yang akan dimasukkan, id dan nama. Dua data tadi akan diterima melalui parameter di qry. Eksekusi penyimpanan akan dilakukan pada saat pengguna aplikasi menekan tombol simpan. Sehingga dengan demikian letakkan kode program berikut di OnClick tombol simpan.
qry.Close;
qry.SQL.Clear;
qry.SQL.Add('insert into teman()');
qry.SQL.Add('values(:id, :nama)');
qry.Parameters.ParamByName('ID').AsString := edtId.Text; qry.Parameters.ParamByName('NAMA').AsString := edtNama.Text;
qry.ExecSQL;
Kode program selengkapnya dapat dilihat berikut ini:
unit
Unit1; interface uses Forms, StdCtrls, AdoDB, DB;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private lblID : TLabel;
lblNama : TLabel;
edtNama : TEdit;
edtId : TEdit;
btnSimpan : TButton;
btnSelesai : TButton;
qry : TAdoQuery;
Con : TAdoConnection;
procedure btnSelesaiOnClick(Sender: TObject);
procedure btnSimpanOnClick(Sender: TObject);
end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnSelesaiOnClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.btnSimpanOnClick(Sender: TObject);
begin
with qry do
begin
Close;
SQL.Clear;
SQL.Add('insert into teman(id,nama)');
SQL.Add('values(:id, :nama)');
parameters.ParamByName('ID').Value := edtId.Text;
parameters.ParamByName('NAMA').Value := edtNama.Text;
ExecSQL;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
self.Caption := 'Nama Teman';
self.Height := 200;
self.Width := 225;
lblID := TLabel.Create(self);
lblID.Parent := self; lblID.Left := 10;
lblID.Top := 10;
lblID.Caption := 'ID';
lblNama := TLabel.Create(self);
lblNama.Parent := self;
lblNama.Left := lblID.Left;
lblNama.Top := lblID.Top + lblID.Height + 20;
lblNama.Caption := 'Nama';
edtId := TEdit.Create(Self);
edtID.Parent := self; edtID.Top := lblID.Top;
edtID.Left := lblID.Left + lblID.Width + 50;
edtNama := TEdit.Create(Self);
edtNama.Parent := self; edtNama.Top := lblNama.Top;
edtNama.Left := edtId.Left;
btnSimpan := TButton.Create(self);
btnSimpan.Parent := self;
btnSimpan.Caption := 'Simpan';
btnSimpan.Top := self.ClientHeight - btnSimpan.Height - 20;
btnsimpan.Left := 20;
btnSimpan.OnClick := btnSimpanOnClick;
btnSelesai := TButton.Create(self);
btnSelesai.Parent := self; btnSelesai.Caption := 'Selesai';
btnSelesai.Top := btnSimpan.Top;
btnselesai.Left := btnSimpan.Left + btnSimpan.Width + 10;
btnSelesai.OnClick := btnSelesaiOnClick;
Con := TAdoConnection.Create(Self);
Con.Close;
Con.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
'teman.mdb;Persist Security Info=False;' +
'Jet OLEDB:Database Password=';
Con.Open;
qry := TAdoQuery.Create(Self);
qry.Connection := Con;
end;
end.
kalau untuk menghindari penyimpanan duplikat gmn?
BalasHapusthanx
pertama: set primary key di database-nya, dalam keadaan begitu, saat salah database akan mengeluarkan pesan error. Kedua: saat menyimpan, di periksa dahulu primary key tersebut sudah ada apa belum?
BalasHapusngaco nih program yang ada dibawah ini yang ane kopi dari atas :
Hapusqry.Parameters.ParamByName('ID').AsString := edtId.Text;
qry.Parameters.ParamByName('NAMA').AsString := edtNama.Text;
versi Delphi Anda pasti lebih besar dari 7, ya? :D
Hapus