Contoh aplikasi validasi input pada interbase

Dalam menyimpan data kedalam database ada kalanya kita perlu untuk memvalidasi dulu sebelum benar-benar menyimpannya.
Misalnya data baru disimpan setelah semua/sebagian field diisi seperti gambar dibawah ini:
Alamat belum diisi
Tanggal diluar range

Untuk membuat record tidak bisa disimpan bila field belum diisi caranya dengan menambahkan klausa NOT NULL (saya yakin tidak asing lagi).

CREATE TABLE BIODATA (
    ID               INTEGER NOT NULL,
    "Nama Lengkap"   VARCHAR(30) CHARACTER SET NONE NOT NULL,
    "Alamat"         VARCHAR(50) CHARACTER SET NONE NOT NULL,
    "Tanggal Lahir"  DATE DEFAULT CURRENT_DATE NOT NULL
);

Sedangkan untuk membatasi input Tanggal kita menggunakan Check constraint.

ALTER TABLE BIODATA ADD CONSTRAINT "mulai 01/01/1910 s/d hari ini" CHECK ("Tanggal Lahir" between '01.01.1910' and current_date);

Pada sisi Delphinya untuk keperluan tersebut diatas kita memanfaatkan event OnFIBErrorEvent pada TpFibErrorHandler (komponen FIBPlus) dan OnPostError punya DataSet.

procedure TForm1.pFibEHFIBErrorEvent(Sender: TObject; ErrorValue: EFIBError;
  KindIBError: TKindIBError; var DoRaise: Boolean);
var
   s: string;
begin
     s:=ErrorValue.IBMessage;
     case ErrorValue.IBErrorCode of
          335544347: // Not Null
            begin
                 // Validation error for column Alamat, value "*** null ***".
                 Delete(s,1,pos('column',s)+6); // hapus .. column
                 SetLength(s,pos(', value',s)-1); // ambil nama fieldnya
                 CariDBEdit(s); // fokus ke field ybs
            end;
          335544558: // Check
            begin
                 // Operation violates CHECK constraint mulai 01/01/1910 s/d hari ini on view or table BIODATA.
                 Delete(s,1,pos('constraint',s)+10); // hapus .. constraint
                 SetLength(s,pos('on view',s)-1); // ambil pesannya aja
                 DBEdit3.SetFocus; // fokus manual krn sdh pasti
                 ShowInfo(DBEdit3,s); // tampilkan pesan
            end;
     else
         ShowMessage(s);
     end;
end;
procedure TForm1.tbPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
     Action:=daAbort;
end;

Source Code dapat didownload di https://www.box.com/s/0mmrv8i7776ikpxul06h

Semoga bermanfaat

1 Comment to Contoh aplikasi validasi input pada interbase

  1. ghozt says:

    mantap pak…!!! 😀

Leave a Reply

Your email address will not be published. Required fields are marked *