Thursday, January 2, 2014

Menghitung Luas Bangun Menggunakan Delphi dan Oracle Database

Oleh Virda Febrina
1.      Perancangan Tabel

No
Field_name
Type
Width
Keterangan
1
Panjang
Number
20
Panjang bangunan
2
Lebar
Number
20
Lebar bangunan
3
Luas
Number
20
Luas bangunan
4
Tanggal
Date
-
Tanggal dilakukan perhitungan
2.      Perancangan interface

3.      Langkah pembuatan program
a.       Buat database terlebih dahulu.
Username : perhitungan
Password : perhitungan
Kemudian create workspace
4 .       Buka Oracle SQL developer
- Buat koneksi database
Nama koneksi : perhitungan
Username : perhitungan
Password : perhitungan
Kemudian centang save password, kemudian klik test, jika status sudah Success klik save dan klik connect.
Kemudian klik kanan pada koneksi perhitungan, lalu pilih new tabel.

- Buat  tabel dengan nama luas kemudian isi tabelnya panjang, lebar, luas dan tanggal. Kemudian klik OK.

Tampilan tabel nya sebagai berikut :
a.       Buka control panel > ODBC > ADD > ORACLE IN XE
- Kemudian isi data seperti gambar dibawah ini, kemudian klik connection.
- klik test connection, kemudian isi data seperti gambar dibawah ini. password : perhitungan. Jika koneksi sukses, klik ok.
1.      Buka lembar delphi lalu buat tampilan program seperti pada perancangan interface.
-Pengaturan ADOconnection1 : properties > klik connection string > build > pilih provider > klik next > pilih data source name perhitungan > isi username dan password > test connection > ok.
-Pengaturan ADOquery1 : pilih koneksi ADOconnection1. Isi SQL dengan
“select to_char(tanggal,'DD-MM-YYYY HH24:MI:SS') as TANGGAL,panjang,lebar,luas from luas order by tanggal desc;”

- Pengaturan Datasource1 pilih dataset ADOquery1.

- Pada button hitung isi source code nya sebagai berikut :
procedure TForm1.Button1Click(Sender: TObject);
var
  SQL : string;
  f: double;
  ok:integer;
begin
  ok := 0;
    if TryStrToFloat(Edit1.Text, f) then
      begin
        ok := ok+1;
      end
    else
      begin
        application.MessageBox('Harus Diisi Angka!','Perhitungan Luas',mb_OK + mb_iconWarning);
        Edit1.SetFocus;
        exit;
      end;
    if TryStrToFloat(Edit2.Text, f) then
      begin
        ok := ok+1;
      end
    else
      begin       
        application.MessageBox('Harus Diisi Angka!','Perhitungan Luas',mb_OK + mb_iconWarning);
        Edit2.SetFocus;
        exit;
      end;
    if (ok>=2) then
    begin
      Edit3.Text := FloatToStr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));
      SQL := ' INSERT INTO luas(tanggal,panjang,lebar,luas) VALUES(sysdate,'''+Edit1.Text+''','''+Edit2.Text+''','''+Edit3.Text+''') ';
      Form1.ADOConnection1.Execute(SQL);
      try Form1.ADOQuery1.Close; except end;
      Form1.ADOQuery1.SQL.Text:='select to_char(tanggal,''DD-MM-YYYY HH24:MI:SS'') as TANGGAL,panjang,lebar,luas from luas order by tanggal desc';
      Form1.ADOQuery1.Open;
      Edit1.SetFocus;
    end;
end;


- Pada button hapus data isi source code nya sebagai berikut :
procedure TForm1.Button2Click(Sender: TObject);
var
  SQL : string;
begin
      SQL := ' DELETE FROM luas';
      Form1.ADOConnection1.Execute(SQL);
      try Form1.ADOQuery1.Close; except end;
      Form1.ADOQuery1.SQL.Text:='select to_char(tanggal,''DD-MM-YYYY HH24:MI:SS'') as TANGGAL,panjang,lebar,luas from luas order by tanggal desc';
      Form1.ADOQuery1.Open;
      Edit1.SetFocus;
end;


- Pada button hapus data isi source code nya sebagai berikut :
procedure TForm1.Button3Click(Sender: TObject);
begin
  Edit1.Text := '';
  Edit2.Text := '';
  Edit3.Text := '';
  Edit1.SetFocus;
end;
5.      Tampilan program ketika di Run

6.      Source code program keseluruhan
unit PerhitunganLuas;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ADOQuery2: TADOQuery;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  SQL : string;
  f: double;
  ok:integer;
begin
  ok := 0;
    if TryStrToFloat(Edit1.Text, f) then
      begin
        ok := ok+1;
      end
    else
      begin
        application.MessageBox('Harus Diisi Angka!','Perhitungan Luas',mb_OK + mb_iconWarning);
        Edit1.SetFocus;
        exit;
      end;
    if TryStrToFloat(Edit2.Text, f) then
      begin
        ok := ok+1;
      end
    else
      begin       
        application.MessageBox('Harus Diisi Angka!','Perhitungan Luas',mb_OK + mb_iconWarning);
        Edit2.SetFocus;
        exit;
      end;
    if (ok>=2) then
    begin
      Edit3.Text := FloatToStr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));
      SQL := ' INSERT INTO luas(tanggal,panjang,lebar,luas) VALUES(sysdate,'''+Edit1.Text+''','''+Edit2.Text+''','''+Edit3.Text+''') ';
      Form1.ADOConnection1.Execute(SQL);
      try Form1.ADOQuery1.Close; except end;
      Form1.ADOQuery1.SQL.Text:='select to_char(tanggal,''DD-MM-YYYY HH24:MI:SS'') as TANGGAL,panjang,lebar,luas from luas order by tanggal desc';
      Form1.ADOQuery1.Open;
      Edit1.SetFocus;
    end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
    try Form1.ADOQuery1.Close; except end;
    Form1.ADOQuery1.SQL.Text:='select to_char(tanggal,''DD-MM-YYYY HH24:MI:SS'') as TANGGAL,panjang,lebar,luas from luas order by tanggal desc';
    Form1.ADOQuery1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  SQL : string;
begin
      SQL := ' DELETE FROM luas';
      Form1.ADOConnection1.Execute(SQL);
      try Form1.ADOQuery1.Close; except end;
      Form1.ADOQuery1.SQL.Text:='select to_char(tanggal,''DD-MM-YYYY HH24:MI:SS'') as TANGGAL,panjang,lebar,luas from luas order by tanggal desc';
      Form1.ADOQuery1.Open;
      Edit1.SetFocus;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Edit1.Text := '';
  Edit2.Text := '';
  Edit3.Text := '';
  Edit1.SetFocus;
end;
end.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.