Delphi: Menyajikan Informasi dengan Beberapa Tabel

Pendahuluan

Pada posting Delphi kali ini akan kita bahas bagaimana menyajikan informasi data dari beberapa tabel yang dibuat dengan format Paradox. Contoh kasus yang disajikan pada postingan ini adalah Informasi Sirkulasi pada suatu perputakaan. Informasi sirkulasi disajikan dalam dua DBgrid. DBGrid pertama menampilkan Daftar Anggota, sedangkan DBGrid kedua menyajikan informasi sirkulasi dari record yang ditunjuk pada DBGrid pertama. Contoh hasil eksekusi sebagai berikut:

Delphi: Menyajikan Informasi Dari Beberapa Tabel

Delphi: Menyajikan Informasi Dari Beberapa Tabel

Pada form ini dilengkapi dengan panel pencarian pada sisi kanan DBGrid. Prosen pencariannya menggunakan metode SetKey, GotoKey dan Locate. Pencarian dapat dilakukan dua pilihan, yaitu: No Anggota dan Nama Anggota. Penjelasan lengkapnya dapat anda pelajari pada: Delphi: Pencarian Data pada DataSet

Basis Data Perpustakaan

Buatlah folder Perputakaan untuk menyimpan tabel-tabel yang anda buat dari Database Desktop dengan format Paradox.

  • Buat struktur tabel Buku
Struktur Tabel Buku

Struktur Tabel Buku

  • Isi data tabel Buku dengan data sebagai berikut:
Data Buku

Data Buku

  • Buat tabel Anggota dengan strktur tabel sebagai berikut:

 

Struktur Tabel Anggota

Struktur Tabel Anggota

  • Isi Data tabel Anggota
Data Tabel Anggota

Data Tabel Anggota

  • Buat tabel Sirkulasi dengan struktur sebagai berikut:
Struktur Tabel Sirkulasi

Struktur Tabel Sirkulasi

  • Isi tabel Sirkulasi, dengan data sebagai berikut:
Isi Data Tabel Sirkulasi

Isi Data Tabel Sirkulasi

  • Buat Alias dengan nama Perpustakaan

Program Informasi Sirkulasi

  • Desain form sebagai berikut:
Desain Form Informasi Sirkulasi

Desain Form Informasi Sirkulasi

Komponen yang digunakan, yaitu: DBGrid1. DBGrid2, Table1, Query1, DataSource1, DataSource2, GroupBox, RadioButton1, RadioButton2, Edit1, Button1 dan Button2.

Pengaturan Properti

  • Form
    Name = FInformasiSirkulasi
    Caption = Informasi Sirkulasi
  • Table1
    DatabaseName = Perpustakaan
    TableName = Anggota.db
    Active = True
  • DataSource1
    DataSet = Table1
  • DataSource2
    DataSet = Query1
  • Query1
    DatabaseName = Perpustakaan
  • DBGrid1
    DataSource = DataSource1
    ReadOnly = True
  • DBGrid2
    DataSource = DataSource2
  • GroupBox1
    Caption = Pencarian
  • RadioButton1
    Caption = No Anggota
  • RadioButton2
    Caption = Nama Anggota
  • Edit1: TEdit
    Text= [Kosongkan]
  • Button1
    Caption = Cari
    Caption = Tutup

Kode Program

unit uInformasiSirkulasi;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBTables, DB, Grids, DBGrids, StdCtrls;

type
  TFInformasiSirkulasi = class(TForm)
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    Table1: TTable;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    Query1: TQuery;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Table1AfterScroll(DataSet: TDataSet);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FInformasiSirkulasi: TFInformasiSirkulasi;

implementation

{$R *.dfm}


procedure TFInformasiSirkulasi.Table1AfterScroll(DataSet: TDataSet);
var St:string;
    No_Anggota:string;
begin
  No_Anggota:=Table1.Fields[0].AsString;
  St:= 'SELECT Sirkulasi.Kode_Buku, Judul, Tgl_Pinjam, Tgl_Kembali, Denda ' +
       'FROM Sirkulasi '+
       'INNER JOIN Buku '+
       'ON Sirkulasi.Kode_Buku = Buku.Kode_Buku '+
       'WHERE No_Anggota="'+No_Anggota+'"';
  Query1.SQL.Clear;
  Query1.SQL.Add(St);
  Query1.Active:=True;
  DBGrid2.Columns[1].Width:=250; //lebar kolom judul
end;

procedure TFInformasiSirkulasi.Button1Click(Sender: TObject);
begin
 if RadioButton1.Checked then
    begin
      Table1.Setkey;
      Table1.FieldByName('No_Anggota').AsString := Edit1.Text;
      if not Table1.GotoKey then
          ShowMessage('No Anggota yang dicari tidak ditemukan');
    end
 else
 begin
    if not Table1.Locate('Nama_Anggota',Edit1.Text,[loPartialKey]) then
    ShowMessage('Nama Anggota yang dicari tidak ditemukan');

 end;
end;

end.

Tugas

Petunjuk Tugas

  • Hasil yang dikumpul dalam bentuk tulisan tangan dan soft copy dalam bentuk zip yang dikirim ke-email asisten dan di cc ke fairuzelsaid@gmail.com. File zip berupa kompresi sebuah folder yang berisi tabel-tabel dan program.
  • Tugas dikumpulkan pada pertemuan berikutnya.
  • Dikerjakan secara mandiri

Soal Tugas

Membuat Tabel

Buat struktur tabel dan contoh data dari tabel-tabel berikut:

Database

Membuat Program

Buatlah program yang menyanyikan dua DBGrid dimana DBGrid pertama menyajikan informasi Penyewa dan DBGrid kedua berisi informasi penyewaan yang merelasikan 3 tabel, yaitu: tabel Sewa, tabel Mobil dan tabel Sopir.

Contoh Hasil Ekseukusi
Form Informasi Penyewaan Mobil

Form Informasi Penyewaan Mobil

Catatan:

String SQL untuk relasi tiga tabel sekaligus:

St:= 'SELECT No_Nota, Sewa.No_Plat, Merek_Tipe, Tgl_Sewa, Lama_sewa, '+
             Sewa.Kode_Sopir, Nama_Sopir, Sewa_Mobil, Jasa_Sopir, Total ' +
     'FROM sewa '+
     'INNER JOIN mobil '+
     'ON Sewa.No_Plat = Mobil.No_Plat '+
     'INNER JOIN Sopir '+
     'ON Sewa.No_Plat = Mobil.No_Plat AND Sewa.Kode_Sopir = Sopir.Kode_sopir '+
     'WHERE Sewa.Id_Penyewa="'+Id_Penyewa+'"';

Demikian materi Delphi: Menyajikan Informasi  dengan Beberapa Tabel. Selamat Belajar dan Berbagi

Tuliskan komentar anda

Komentar

Tinggalkan Balasan