Menyimpan Data ke MS Access

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:

  1. TAdoConnection (unit AdoDB), untuk melakukan koneksi ke database langsung
  2. TAdoQuery (unit AdoDB), untuk melakukan pemanggilan data
  3. TEdit (unit StdCtrls), untuk menerima masukan dari pemakai aplikasi
  4. TLabel (unit StdCtrls), untuk menampilkan tulisan pada form
  5. TButton (StdCtrls), untuk menjalankan perintah penyimpanan data dan penutupan aplikasi
Form yang akan saya bentuk nantinya akan berwujud seperti ini:


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.

  1. Pastikan unit yang menyertakan TAdoConnection ada dalam deklarasi unit dalam form yang dimaksud.

    unit AdoDB

  2. Buat variabel global, baik diletakkan di private atau di public, sehingga semua prosedur dalam form tersebut dapat mengakses variabel tersebut.

    private Con : TAdoConnection;

  3. 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.

  4. 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;
Pembentukan obyek TAdoQuery:
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.

Menyimpan Data ke MS Access Rating: 4.5 Diposkan Oleh: Good Dreamer

4 comments:

  1. kalau untuk menghindari penyimpanan duplikat gmn?
    thanx

    BalasHapus
  2. 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?

    BalasHapus
    Balasan
    1. ngaco nih program yang ada dibawah ini yang ane kopi dari atas :

      qry.Parameters.ParamByName('ID').AsString := edtId.Text;
      qry.Parameters.ParamByName('NAMA').AsString := edtNama.Text;

      Hapus
    2. versi Delphi Anda pasti lebih besar dari 7, ya? :D

      Hapus

Diberdayakan oleh Blogger.